package jalview.io; import jalview.io.xdb.genbank.GenBankFeature; import jalview.io.xdb.genbank.GenBankSequence; import java.util.ArrayList; import java.util.List; import java.util.Vector; public class DnaUtils { /** * @param gbf * CDS feature data * @param sequences * ORIGIN data * @return Nucleotid String (sequence) of CDS */ public static String getSequence(GenBankFeature gbf, Vector sequences) { if (!gbf.getType().equals(GenBankFeature.CDS)) { // If the feature is not a CDS, no sequence is returned return null; } else { String range = gbf.getQualifier("range"); if (range.startsWith("join")) { // TODO // It's a composed sequence } else { // It's a simple range String[] positions = range.split(".."); int initRange = Integer.parseInt(positions[0]); int endRange = Integer.parseInt(positions[1]); String sourceSequence = getNucleotidesFromSequenceVector(sequences); return sourceSequence.substring(initRange, endRange); } } return null; } private static boolean isSequenceInRange(int initRange, int endRange, GenBankSequence gbs) { return ((initRange >= gbs.getId()) && (endRange >= gbs.getId())); } private static String getNucleotidesInRangeFromSequence(int initRange, int endRange, GenBankSequence gbs) { return ""; } public static String getNucleotidesFromSequenceVector( Vector v) { StringBuffer sb = new StringBuffer(); for (GenBankSequence gbs : v) { Vector seqs = gbs.getSequences(); for (String s : seqs) sb.append(s); } return sb.toString(); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }