X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FStockholmFileTest.java;h=4505f169e8c5737944e22847ab612088b3f1f934;hb=ab271f65ad7519b988efbfa04e32a0199d9bd8d4;hp=d826e13c2deadd4667276c0714086e8941b00e1b;hpb=386085ba890018106e01efad1b99fe0a59bd7857;p=jalview.git diff --git a/test/jalview/io/StockholmFileTest.java b/test/jalview/io/StockholmFileTest.java index d826e13..4505f16 100644 --- a/test/jalview/io/StockholmFileTest.java +++ b/test/jalview/io/StockholmFileTest.java @@ -1,51 +1,50 @@ package jalview.io; -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.util.BitSet; +import java.util.HashMap; +import java.util.Map; import org.junit.Test; public class StockholmFileTest { - public static void main(String argv[]) - { - try { - new StockholmFileTest().pfamFileIO(); - - } catch (Exception x) - { - x.printStackTrace(); - } - } - static String PfamFile = "examples/PF00111_seed.stk", RfamFile = "examples/RF00031_folded.stk"; @Test public void pfamFileIO() throws Exception { - test(new File(PfamFile)); - AppletFormatAdapter af = new AppletFormatAdapter(); - AlignmentI al = af.readFile(PfamFile, af.FILE, new IdentifyFile().Identify(PfamFile, af.FILE)); - int numpdb=0; - for (SequenceI sq:al.getSequences()) + testFileIOwithFormat(new File(PfamFile), "STH"); + } + @Test + public void pfamFileDataExtraction() throws Exception + { AppletFormatAdapter af = new AppletFormatAdapter(); + AlignmentI al = af.readFile(PfamFile, af.FILE, + new IdentifyFile().Identify(PfamFile, af.FILE)); + int numpdb = 0; + for (SequenceI sq : al.getSequences()) + { + if (sq.getPDBId() != null) { - if (sq.getPDBId()!=null) - { - numpdb+=sq.getPDBId().size(); - } + numpdb += sq.getPDBId().size(); } - assertTrue("PF00111 seed alignment has at least 1 PDB file, but the reader found none.",numpdb>0); + } + assertTrue( + "PF00111 seed alignment has at least 1 PDB file, but the reader found none.", + numpdb > 0); } + @Test public void rfamFileIO() throws Exception { @@ -112,7 +111,7 @@ public class StockholmFileTest * 'secondary' or generated alignment from some datapreserving * transformation */ - private static void testAlignmentEquivalence(AlignmentI al, + public static void testAlignmentEquivalence(AlignmentI al, AlignmentI al_input) { assertNotNull("Original alignment was null", al); @@ -136,14 +135,34 @@ public class StockholmFileTest // we might want to revise this in future int aa_new_size = (aa_new == null ? 0 : aa_new.length), aa_original_size = (aa_original == null ? 0 : aa_original.length); + Map orig_groups=new HashMap(),new_groups=new HashMap(); if (aa_new != null && aa_original != null) { for (int i = 0; i < aa_original.length; i++) { if (aa_new.length>i) { - assertTrue("Different alignment annotation ordering", + assertTrue("Different alignment annotation at position "+i, equalss(aa_original[i], aa_new[i])); + // compare graphGroup or graph properties - needed to verify JAL-1299 + assertTrue("Graph type not identical.",aa_original[i].graph==aa_new[i].graph); + assertTrue("Visibility not identical.", aa_original[i].visible==aa_new[i].visible); + assertTrue( + "Threshold line not identical.", + aa_original[i].threshold == null ? aa_new[i].threshold == null + : aa_original[i].threshold + .equals(aa_new[i].threshold)); + // graphGroup may differ, but pattern should be the same + Integer o_ggrp=new Integer(aa_original[i].graphGroup+2),n_ggrp=new Integer(aa_new[i].graphGroup+2); + BitSet orig_g=orig_groups.get(o_ggrp),new_g=new_groups.get(n_ggrp); + if (orig_g==null) { + orig_groups.put(o_ggrp,orig_g= new BitSet()); + } + if (new_g==null) { + new_groups.put(n_ggrp, new_g=new BitSet()); + } + assertTrue("Graph Group pattern differs at annotation "+i, orig_g.equals(new_g)); + orig_g.set(i); new_g.set(i); } else { System.err.println("No matching annotation row for "+aa_original[i].toString()); } @@ -212,7 +231,6 @@ public class StockholmFileTest .equals(sequenceFeatures_new[feat])); } } - // compare alignment annotation if (al.getSequenceAt(i).getAnnotation() != null && al_input.getSequenceAt(in).getAnnotation() != null) @@ -224,7 +242,7 @@ public class StockholmFileTest { annot_original = al.getSequenceAt(i).getAnnotation()[j]; annot_new = al_input.getSequenceAt(in).getAnnotation()[j]; - assertTrue("Different annotation", + assertTrue("Different annotation elements", equalss(annot_original, annot_new)); } } @@ -260,16 +278,16 @@ public class StockholmFileTest } for (int i = 0; i < annot_or.annotations.length; i++) { - if (annot_or.annotations[i] != null - && annot_new.annotations[i] != null) + Annotation an_or=annot_or.annotations[i],an_new=annot_new.annotations[i]; + if (an_or != null + && an_new!= null) { - // Jim's comment - shouldn't the conditional here be using || not && for - // all these clauses ? - if (!annot_or.annotations[i].displayCharacter - .equals(annot_new.annotations[i].displayCharacter) - && annot_or.annotations[i].secondaryStructure != annot_new.annotations[i].secondaryStructure - && !annot_or.annotations[i].description - .equals(annot_new.annotations[i].description)) + if (!an_or.displayCharacter.trim() + .equals(an_new.displayCharacter.trim()) + || !(""+an_or.secondaryStructure).trim().equals((""+an_new.secondaryStructure).trim()) + || (an_or.description != an_new.description && (an_or.description == null + || an_new.description == null || !an_or.description + .equals(an_new.description)))) { System.err.println("Annotation Element Mismatch\nElement "+i+" in original: "+annot_or.annotations[i].toString()+"\nElement "+i+" in new: "+annot_new.annotations[i].toString()); return false;