From b1f3e3bac931d7f309f60e50b18c435c65586de8 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 3 Feb 2022 13:18:44 +0000 Subject: [PATCH] JAL-2305 comments re testFindXrefSequences_withFetch is failing - looks like test data needs to be revised for assumptions made by CrossRef about sequences retrieved from dbsources --- src/jalview/analysis/CrossRef.java | 20 ++++++++++++++------ test/jalview/analysis/CrossRefTest.java | 8 ++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/jalview/analysis/CrossRef.java b/src/jalview/analysis/CrossRef.java index c54357e..1783f37 100644 --- a/src/jalview/analysis/CrossRef.java +++ b/src/jalview/analysis/CrossRef.java @@ -443,6 +443,11 @@ public class CrossRef addedXref |= importCrossRefSeq(cf, newDsSeqs, doNotAdd, dss, retrievedDss); } + // JBPNote: What assumptions are made for dbref structures on + // retrieved sequences ? + // addedXref will be true means importCrossRefSeq found + // sequences with dbrefs with mappings to sequences congruent with dss + if (!addedXref) { // try again, after looking for matching IDs @@ -516,7 +521,9 @@ public class CrossRef /** * process sequence retrieved via a dbref on source sequence to resolve and - * transfer data + * transfer data JBPNote: as of 2022-02-03 - this assumes retrievedSequence + * has dbRefs with Mapping references to a sequence congruent with + * sourceSequence * * @param cf * @param sourceSequence @@ -535,10 +542,11 @@ public class CrossRef List dbr = retrievedSequence.getDBRefs(); if (dbr != null) { - for (int ib = 0, nb = dbr.size(); ib < nb; ib++) + for (int ib = 0, nb = dbr.size(); ib < nb; ib++) { - DBRefEntry dbref = dbr.get(ib); + DBRefEntry dbref = dbr.get(ib); + // matched will return null if the dbref has no map SequenceI matched = findInDataset(dbref); if (matched == sourceSequence) { @@ -550,7 +558,7 @@ public class CrossRef Mapping map = dbref.getMap(); if (map != null) { - SequenceI ms = map.getTo(); + SequenceI ms = map.getTo(); if (ms != null && map.getMap() != null) { if (ms == sourceSequence) @@ -716,7 +724,7 @@ public class CrossRef * Returns null or the first sequence in the dataset which is identical to * xref.mapTo, and has a) a primary dbref matching xref, or if none found, the * first one with an ID source|xrefacc - * + * JBPNote: Could refactor this to AlignmentI/DatasetI * @param xref * with map and mapped-to sequence * @return @@ -814,7 +822,7 @@ public class CrossRef * Updates any empty mappings in the cross-references with one to a compatible * retrieved sequence if found, and adds any new mappings to the * AlignedCodonFrame - * + * JBPNote: TODO: this relies on sequence IDs like UNIPROT|ACCESSION - which do not always happen. * @param mapFrom * @param xrefs * @param retrieved diff --git a/test/jalview/analysis/CrossRefTest.java b/test/jalview/analysis/CrossRefTest.java index 2ca112f..4bd38d2 100644 --- a/test/jalview/analysis/CrossRefTest.java +++ b/test/jalview/analysis/CrossRefTest.java @@ -415,15 +415,19 @@ public class CrossRefTest @Test(groups = { "Functional_Failing" }) public void testFindXrefSequences_withFetch() { + // JBPNote: this fails because pep1 and pep2 do not have DbRefEntrys with mappings + // Fix#1 would be to revise the test data so it fits with 2.11.2+ Jalview assumptions + // that ENA retrievals yield dbrefs with Mappings + SequenceI dna1 = new Sequence("AF039662", "GGGGCAGCACAAGAAC"); dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "Q9ZTS2")); dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P30419")); dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P00314")); final SequenceI pep1 = new Sequence("Q9ZTS2", "MYQLIRSSW"); - pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2")); + pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2",null,true)); final SequenceI pep2 = new Sequence("P00314", "MRKLLAASG"); - pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314")); + pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314",null,true)); /* * argument false suppresses adding DAS sources -- 1.7.10.2