Merge branch 'develop' into patch/JAL-4281_idwidthandannotHeight_in_project
[jalview.git] / test / jalview / gui / structurechooser / StructureChooserQuerySourceTest.java
index 73ba4df..4579b9c 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,32 @@ 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,11 +272,12 @@ public class StructureChooserQuerySourceTest
     seq = null;
     upSeq = null;
     upSeq_r1ab = null;
+    upSeq_fer1_maize = null;
+    upSeq_epas1_human=null;
   }
 
   @SuppressWarnings("deprecation")
-  @Test(groups =
-  { "Functional" })
+  @Test(groups = { "Functional" })
   public void buildPDBQueryTest()
   {
     System.out.println("seq >>>> " + seq);
@@ -288,8 +325,7 @@ public class StructureChooserQuerySourceTest
   }
 
   @SuppressWarnings("deprecation")
-  @Test(groups =
-  { "Functional" })
+  @Test(groups = { "Functional" })
   public void buildThreeDBQueryTest()
   {
     System.out.println("seq >>>> " + upSeq);
@@ -409,6 +445,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);
@@ -428,6 +465,31 @@ public class StructureChooserQuerySourceTest
               pdbResponse);
       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 (
 
@@ -447,7 +509,8 @@ 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" })
@@ -470,5 +533,5 @@ public class StructureChooserQuerySourceTest
     name = "abcde12[345a]fg";
     AssertJUnit.assertEquals("abcde12345afg",
             PDBStructureChooserQuerySource.sanitizeSeqName(name));
-  }
+  }  
 }