JAL-3808 example exonerate cdna2genome and coding2genome test data and test
[jalview.git] / test / jalview / io / FeaturesFileTest.java
index b753e94..0975750 100644 (file)
@@ -242,6 +242,48 @@ public class FeaturesFileTest
     assertEquals(2f, sf.getScore(), 0.001f);
   }
 
+  @Test(groups = { "Functional" })
+  public void testImportGFF2ExonerateCDSAndCoding2Genome()
+          throws IOException
+  {
+    /*
+     * test assumes sequence 1 in imported alignment is a 
+     * transcript shorter and aligned to exons on locus (sequence 0)
+     * 
+     * exonerate script was - where mode was query or target
+     * exonerate --showvulgar false --showalignment false --show${mode}gff ... > test_${mode}.gff2
+     * echo '##FASTA' >> test_${mode}.gff2
+     * cat example_Locus.fa example_CDS.fa >> test_${mode}.gff2  
+     * [ then edit out stuff before gff-version-2 header and the end of exonerate lines after the gff dump ]
+     */
+    String[][] testFiles = new String[][] {
+        { "test_cdna2genome_showquerygff.gff2",
+            "test_cdna2genome_showtargetgff.gff2" },
+        { "test_coding2genome_showquerygff.gff2",
+            "test_coding2genome_showtargetgff.gff2" } };
+
+    for (String[] testfilepair : testFiles)
+    {
+      FormatAdapter fa = new FormatAdapter();
+      AlignmentI al = fa.readFile("examples/testdata/" + testfilepair[0],
+              DataSourceType.FILE, FileFormat.Features);
+      
+      assertEquals(2, al.getHeight());
+      // check there are gaps in sequence 1
+      assertTrue(al.getSequenceAt(1).getSequenceAsString().contains(""+al.getGapCharacter()));
+      assertTrue(al.isAligned());
+      
+      AlignmentI al2 = fa.readFile("examples/testdata/" + testfilepair[1],
+              DataSourceType.FILE, FileFormat.Features);
+      
+      assertEquals(2, al2.getHeight());
+      assertTrue(al2.isAligned());
+      // check sequence 1 is identical for alignment imported from both query and target gff
+      assertEquals(al.getSequenceAt(1).getSequenceAsString(),
+              al2.getSequenceAt(1).getSequenceAsString());
+    }
+  }
+  
   public static AlignmentI readAlignmentFile(File f) throws IOException
   {
     System.out.println("Reading file: " + f);