Merge branch 'develop' into features/JAL-518_justify_seqs_in_region
[jalview.git] / test / jalview / gui / structurechooser / StructureChooserQuerySourceTest.java
index 7107448..28dd594 100644 (file)
@@ -22,7 +22,9 @@ package jalview.gui.structurechooser;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
 
@@ -39,8 +41,13 @@ import jalview.datamodel.DBRefSource;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
+import jalview.fts.api.FTSData;
+import jalview.fts.api.FTSDataColumnI;
+import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.fts.service.pdb.PDBFTSRestClientTest;
+import jalview.fts.service.threedbeacons.TDB_FTSData;
+import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
 import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest;
 import jalview.gui.JvOptionPane;
 import jalview.gui.StructureChooser;
@@ -58,6 +65,10 @@ public class StructureChooserQuerySourceTest
 
   Sequence seq, upSeq, upSeq_insulin, upSeq_r1ab;
 
+  private Sequence upSeq_fer1_maize;
+
+  private Sequence upSeq_epas1_human;
+
   // same set up as for structurechooser test
 
   @BeforeMethod(alwaysRun = true)
@@ -227,7 +238,34 @@ public class StructureChooserQuerySourceTest
     upSeq_r1ab
             .addDBRef(new DBRefEntry("UNIPROT", "0", "P0DTD1", null, true));
     upSeq_r1ab.createDatasetSequence();
-
+    upSeq_fer1_maize = new Sequence("FER1_MAIZE",
+            "MATVLGSPRAPAFFFSSSSLRAAPAPTAVALPAAKVGIMGRSASSRRRLRAQATYNVKLITPEGE"
+                    + "VELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDV"
+                    + "VIETHKEEELTGA");
+    upSeq_fer1_maize.setDescription("Feredoxin 1 Maize");
+    upSeq_fer1_maize
+            .addDBRef(new DBRefEntry("UNIPROT", "0", "P27787", null, true));
+    upSeq_fer1_maize.createDatasetSequence();
+
+    upSeq_epas1_human = new Sequence("EPAS1_HUMAN",
+            "MTADKEKKRSSSERRKEKSRDAARCRRSKETEVFYELAHELPLPHSVSSHLDKASIMRLAISFLRTHKLLSS\n"
+                    + "VCSENESEAEADQQMDNLYLKALEGFIAVVTQDGDMIFLSENISKFMGLTQVELTGHSIFDFTHPCDHEEIR\n"
+                    + "ENLSLKNGSGFGKKSKDMSTERDFFMRMKCTVTNRGRTVNLKSATWKVLHCTGQVKVYNNCPPHNSLCGYKE\n"
+                    + "PLLSCLIIMCEPIQHPSHMDIPLDSKTFLSRHSMDMKFTYCDDRITELIGYHPEELLGRSAYEFYHALDSEN\n"
+                    + "MTKSHQNLCTKGQVVSGQYRMLAKHGGYVWLETQGTVIYNPRNLQPQCIMCVNYVLSEIEKNDVVFSMDQTE\n"
+                    + "SLFKPHLMAMNSIFDSSGKGAVSEKSNFLFTKLKEEPEELAQLAPTPGDAIISLDFGNQNFEESSAYGKAIL\n"
+                    + "PPSQPWATELRSHSTQSEAGSLPAFTVPQAAAPGSTTPSATSSSSSCSTPNSPEDYYTSLDNDLKIEVIEKL\n"
+                    + "FAMDTEAKDQCSTQTDFNELDLETLAPYIPMDGEDFQLSPICPEERLLAENPQSTPQHCFSAMTNIFQPLAP\n"
+                    + "VAPHSPFLLDKFQQQLESKKTEPEHRPMSSIFFDAGSKASLPPCCGQASTPLSSMGGRSNTQWPPDPPLHFG\n"
+                    + "PTKWAVGDQRTEFLGAAPLGPPVSPPHVSTFKTRSAKGFGARGPDVLSPAMVALSNKLKLKRQLEYEEQAFQ\n"
+                    + "DLSGGDPPGGSTSHLMWKRMKNLRGGSCPLMPDKPLSANVPNDKFTQNPMRGLGHPLRHLPLPQPPSAISPG\n"
+                    + "ENSKSRFPPQCYATQYQDYSLSSAHKVSGMASRLLGPSFESYLLPELTRYDCEVNVPVLGSSTLLQGGDLLR\n"
+                    + "ALDQAT");
+    upSeq_epas1_human
+            .setDescription("Endothelial PAS domain-containing protein 1");
+    upSeq_epas1_human
+            .addDBRef(new DBRefEntry("UNIPROT", "0", "Q99814", null, true));
+    upSeq_epas1_human.createDatasetSequence();
   }
 
   @AfterMethod(alwaysRun = true)
@@ -236,6 +274,8 @@ public class StructureChooserQuerySourceTest
     seq = null;
     upSeq = null;
     upSeq_r1ab = null;
+    upSeq_fer1_maize = null;
+    upSeq_epas1_human = null;
   }
 
   @SuppressWarnings("deprecation")
@@ -407,6 +447,7 @@ public class StructureChooserQuerySourceTest
               .getSearchSummary().size());
       // NB Could have race condition here
       List<String> pdb_Queries = tdbquery.buildPDBFTSQueryFor(upResponse);
+      assertTrue(pdb_Queries.size() > 0);
       for (String pdb_Query : pdb_Queries)
       {
         assertTrue(pdb_Query.trim().length() > 0);
@@ -427,6 +468,31 @@ public class StructureChooserQuerySourceTest
       assertEquals(upResponse.getNumberOfItemsFound(),
               joinedResp.getNumberOfItemsFound());
 
+      // Special data test case
+      if (testUpSeq.getDisplayId(true)
+              .equals(upSeq_epas1_human.getDisplayId(true)))
+      {
+
+        TDBResultAnalyser tDBResultAnalyz = new TDBResultAnalyser(testUpSeq,
+                joinedResp.getSearchSummary(), tdbquery.lastTdbRequest,
+                ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE,
+                tdbquery.remove_prefix(
+                        ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE));
+        List<FTSData> ordered = tDBResultAnalyz.getFilteredResponse();
+        List<FTSData> selected = tDBResultAnalyz.selectStructures(ordered);
+        assertEquals(((TDB_FTSData) selected.get(0)).getProvider(),
+                "AlphaFold DB");
+        // to be sufficient, should also
+        // test that adjacent ordered structure in ordered is levyLab
+        // TDB_FTSData first = (TDB_FTSData) ordered.get(0),
+        // second = (TDB_FTSData) ordered.get(1),
+        // third = (TDB_FTSData) ordered.get(2);
+        // Assert.assertEquals("pLDDT", first.getConfidenceScoreType());
+        // Assert.assertTrue(first.getConfidenceScoreType()
+        // .equals(second.getConfidenceScoreType())); // pLDDT first and
+        // // second
+      }
+
     } catch (
 
     Exception x)
@@ -445,7 +511,9 @@ public class StructureChooserQuerySourceTest
   public Object[][] testUpSeqs() throws Exception
   {
     setUp();
-    return new Object[][] { { upSeq }, { upSeq_insulin }, { upSeq_r1ab } };
+    return new Object[][] { { upSeq }, { upSeq_insulin }, { upSeq_r1ab },
+        { upSeq_fer1_maize },
+        { upSeq_epas1_human } };
   }
 
   @Test(groups = { "Functional" })