PIR file IO now preserves and parses Modeller style colon-separated fields
[jalview.git] / src / jalview / io / PIRFile.java
index d4b818b..724fea8 100755 (executable)
@@ -53,12 +53,15 @@ public class PIRFile
 \r
       while ( (line = nextLine()) != null)\r
       {\r
-        if(line.length()==0)\r
+        if (line.length() == 0)\r
         {\r
           //System.out.println("blank line");\r
           continue;\r
         }\r
-\r
+        if (line.indexOf("C;") == 0 || line.indexOf("#") == 0)\r
+        {\r
+          continue;\r
+        }\r
         Sequence newSeq = parseId(line.substring(line.indexOf(";") + 1));\r
 \r
         sequence = new StringBuffer();\r
@@ -81,12 +84,14 @@ public class PIRFile
           }\r
         }\r
 \r
-        if(sequence.length()>0)\r
+        if (sequence.length() > 0)\r
         {\r
           sequence.setLength(sequence.length() - 1);\r
-\r
           newSeq.setSequence(sequence.toString());\r
           seqs.addElement(newSeq);\r
+          ModellerDescription md = new ModellerDescription(newSeq.\r
+              getDescription());\r
+          md.updateSequenceI(newSeq);\r
         }\r
       }\r
     }\r
@@ -113,14 +118,27 @@ public class PIRFile
       String seq = s[i].getSequence();\r
       seq = seq + "*";\r
 \r
-      out.append(">P1;" + printId(s[i]) + "\n");\r
-\r
-      if(s[i].getDescription()!=null)\r
-        out.append(s[i].getDescription()+"\n");\r
+      if (is_NA)\r
+      {\r
+        // modeller doesn't really do nucleotides, so we don't do anything fancy\r
+        // Nucleotide sequence tags should have a >DL; prefix\r
+        out.append(">P1;" + s[i].getName() + "\n"); // JBPNote Should change >P to >N\r
+        if (s[i].getDescription() == null)\r
+        {\r
+          out.append(s[i].getName() + " " +\r
+                     (s[i].getEnd() - s[i].getStart() + 1));\r
+          out.append(is_NA ? " bases\n" : " residues\n");\r
+        }\r
+        else\r
+        {\r
+          out.append(s[i].getDescription()+"\n");\r
+        }\r
+      }\r
       else\r
       {\r
-        out.append(s[i].getName()+" "+ (s[i].getEnd() - s[i].getStart() + 1));\r
-        out.append( is_NA ? " bases\n" : " residues\n");\r
+        out.append(">P1;" + s[i].getName() + "\n");\r
+        ModellerDescription md = new ModellerDescription(s[i]);\r
+        out.append(md.getDescriptionLine() + "\n");\r
       }\r
       int nochunks = (seq.length() / len) + 1;\r
 \r