3 import jalview.datamodel.Alignment;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.SequenceDummy;
6 import jalview.datamodel.SequenceI;
7 import jalview.gui.AlignFrame;
9 import java.io.IOException;
11 import org.testng.Assert;
12 import org.testng.annotations.Test;
14 public class Gff3tests
17 private static String exonerateSeqs = "examples/testdata/exonerateseqs.fa",
18 exonerateOutput = "examples/testdata/exonerateoutput.gff",
19 simpleGff3file = "examples/testdata/simpleGff3.gff";
22 public void testExonerateImport()
24 // exonerate does not tag sequences after features, so we have a more
25 // conventional annotation import test here
27 FileLoader loader = new FileLoader(false);
29 AlignFrame af = loader.LoadFileWaitTillLoaded(exonerateSeqs,
32 Assert.assertEquals(0, af.getViewport().getAlignment().getCodonFrames()
33 .size(), "Unexpected number of DNA protein associations");
35 af.loadJalviewDataFile(exonerateOutput, FormatAdapter.FILE, null, null);
37 Assert.assertNotEquals(
38 0, af.getViewport().getAlignment().getDataset()
39 .getCodonFrames().size(),
40 "Expected at least one DNA protein association");
45 public void simpleGff3FileIdentify()
47 Assert.assertEquals("Didn't recognise file correctly.",
48 IdentifyFile.GFF3File,
49 new IdentifyFile().Identify(simpleGff3file, FormatAdapter.FILE));
53 public void simpleGff3FileClass() throws IOException
55 AlignmentI dataset = new Alignment(new SequenceI[]
57 FeaturesFile ffile = new FeaturesFile(simpleGff3file,
60 boolean parseResult = ffile.parse(dataset, null, null, false, false);
61 Assert.assertTrue(parseResult, "return result should be true");
62 checkDatasetfromSimpleGff3(dataset);
66 public void simpleGff3FileLoader() throws IOException
68 AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded(
69 simpleGff3file, FormatAdapter.FILE);
70 Assert.assertTrue(af != null,
71 "Didn't read the alignment into an alignframe from Gff3 File");
72 checkDatasetfromSimpleGff3(af.getViewport().getAlignment().getDataset());
76 public void simpleGff3RelaxedIdMatching() throws IOException
78 AlignmentI dataset = new Alignment(new SequenceI[]
80 FeaturesFile ffile = new FeaturesFile(simpleGff3file,
83 boolean parseResult = ffile.parse(dataset, null, null, false, true);
84 Assert.assertTrue(parseResult,
85 "return result (relaxedID matching) should be true");
86 checkDatasetfromSimpleGff3(dataset);
90 public void readGff3File() throws IOException
92 Gff3File gff3reader = new Gff3File(simpleGff3file, FormatAdapter.FILE);
93 Alignment dataset = new Alignment(gff3reader.getSeqsAsArray());
94 gff3reader.addProperties(dataset);
95 checkDatasetfromSimpleGff3(dataset);
99 private void checkDatasetfromSimpleGff3(AlignmentI dataset)
101 Assert.assertEquals(2, dataset.getHeight(),
102 "no sequences extracted from GFF3 file");
104 SequenceI seq1 = dataset.findName("seq1"), seq2 = dataset
106 Assert.assertNotNull(seq1);
107 Assert.assertNotNull(seq2);
109 seq1 instanceof SequenceDummy
110 && ((SequenceDummy) seq1).isDummy(),
111 "Failed to replace dummy seq1 with real sequence");
113 seq2 instanceof SequenceDummy
114 && ((SequenceDummy) seq2).isDummy(),
115 "Failed to replace dummy seq2 with real sequence");
116 String placeholderseq = new SequenceDummy("foo").getSequenceAsString();
117 Assert.assertFalse(placeholderseq.equals(seq1.getSequenceAsString()),
118 "dummy replacement buggy for seq1");
119 Assert.assertNotEquals("dummy replacement buggy for seq2",
120 placeholderseq.equals(seq2.getSequenceAsString()));
121 Assert.assertNotNull(seq1.getSequenceFeatures(),
122 "No features added to seq1");
123 Assert.assertEquals(seq1.getSequenceFeatures().length, 3,
124 "Wrong number of features");
125 Assert.assertNull(seq2.getSequenceFeatures());
128 .getSequenceFeatures() == null ? 0
130 .getSequenceFeatures().length, 0,
131 "Wrong number of features");
133 dataset.getCodonFrame(seq1) != null
134 && dataset.getCodonFrame(seq1).size() > 0,
135 "Expected at least one CDNA/Protein mapping for seq1");
139 // public final void testPrintGFFFormatSequenceIArrayMapOfStringObject()
141 // fail("Not yet implemented");
145 // public final void testAlignFileBooleanStringString()
147 // fail("Not yet implemented");