JAL-1260 v2 patch from David Roldán-Martínez
[jalview.git] / src / jalview / io / DnaUtils.java
diff --git a/src/jalview/io/DnaUtils.java b/src/jalview/io/DnaUtils.java
new file mode 100644 (file)
index 0000000..acd0bb9
--- /dev/null
@@ -0,0 +1,61 @@
+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<GenBankSequence> 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<GenBankSequence> v){
+               StringBuffer sb = new StringBuffer();
+               for (GenBankSequence gbs:v){
+                       Vector<String> 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
+
+       }
+
+}