*/
package jalview.io;
+import static org.testng.Assert.assertTrue;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
+import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.JvOptionPane;
+import jalview.util.DBRefUtils;
import java.io.File;
import java.util.Arrays;
}
/**
+ * JAL-3529 - verify uniprot refs for sequences are output for sequences
+ * retrieved via Pfam
+ */
+ @Test(groups = { "Functional" })
+ public void dbrefOutput() throws Exception
+ {
+ // sequences retrieved in a Pfam domain alignment also have a PFAM database
+ // reference
+ SequenceI sq = new Sequence("FER2_SPIOL", "AASSDDDFFF");
+ sq.addDBRef(new DBRefEntry("UNIPROT", "1", "P00224"));
+ sq.addDBRef(new DBRefEntry("PFAM", "1", "P00224.1"));
+ sq.addDBRef(new DBRefEntry("PFAM", "1", "PF00111"));
+ AppletFormatAdapter af = new AppletFormatAdapter();
+ String toStockholm = af.formatSequences(FileFormat.Stockholm,
+ new Alignment(new SequenceI[]
+ { sq }), false);
+ assertTrue(toStockholm.indexOf("P00224") > -1,
+ "Couldn't locate UNIPROT Accession in generated Stockholm file.");
+ AlignmentI fromStockholm = af.readFile(toStockholm,
+ DataSourceType.PASTE, FileFormat.Stockholm);
+ SequenceI importedSeq = fromStockholm.getSequenceAt(0);
+ List<DBRefEntry> dbrefs = DBRefUtils.searchRefs(importedSeq.getDBRefs(),
+ "P00224");
+ assertTrue(dbrefs.size() == 1,
+ "Couldn't find Uniprot DBRef on re-imported sequence.");
+
+ }
+
+ /**
* test alignment data in given file can be imported, exported and reimported
* with no dataloss
*
* @param f
- * - source datafile (IdentifyFile.identify() should work with it)
+ * - source datafile (IdentifyFile.identify()
+ * should work with it)
* @param ioformat
- * - label for IO class used to write and read back in the data from
- * f
+ * - label for IO class used to write and read
+ * back in the data from f
* @param ignoreFeatures
* @param ignoreRowVisibility
* @param allowNullAnnotations