import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
+import java.util.Collection;
+import java.util.List;
import java.util.Vector;
import org.junit.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.fts.api.FTSData;
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
import jalview.fts.service.pdb.PDBFTSRestClient;
import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest;
import jalview.gui.JvOptionPane;
+import jalview.gui.StructureChooser;
import jalview.jbgui.FilterOption;
public class StructureChooserQuerySourceTest
JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
- Sequence seq,upSeq;
+ Sequence seq,upSeq,upSeq_insulin;
// same set up as for structurechooser test
upSeq.createDatasetSequence();
upSeq.setDescription("Breast cancer type 1 susceptibility protein");
upSeq.addDBRef(new DBRefEntry("UNIPROT","0","P38398",null,true));
+
+ upSeq_insulin=new Sequence("INS_HUMAN",
+ "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGP"
+ + "GAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN");
+ upSeq_insulin.createDatasetSequence();
+ upSeq_insulin.setDescription("Insulin");
+ upSeq_insulin.addDBRef(new DBRefEntry("UNIPROT","0","P01308",null,true));
}
@AfterMethod(alwaysRun = true)
{
System.out.println("seq >>>> " + upSeq);
TDBeaconsFTSRestClientTest.setMock();
+ PDBFTSRestClient.setMock();
StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq});
+ // gets the lightweight proxy rather than the ThreeDBStructureChooserQuerySource
AssertJUnit.assertTrue(scquery instanceof ThreeDBStructureChooserQuerySource);
String query = scquery.buildQuery(upSeq);
AssertJUnit.assertEquals("P38398", query);
// "uniprot_accession:P12345 OR uniprot_id:P12345 OR pdb_id:1xyz",
// query);
}
- @Test(groups= {"Functional"})
- public void cascadingThreeDBandPDBQuerys()
+ @Test(groups= {"Functional"},dataProvider = "testUpSeqs")
+ public void cascadingThreeDBandPDBQuerys(SequenceI testUpSeq)
{
TDBeaconsFTSRestClientTest.setMock();
PDBFTSRestClient.setMock();
FTSRestResponse upResponse = null;
FTSRestResponse pdbResponse = null;
+ // TODO test available options
+ // Best coverage
+ // Best Alphafold Model
+ // Best model (by confidence score)
+ // Will also need to develop a more sophisticated filtering system
+ List<FilterOption> opts = tdbquery.getAvailableFilterOptions(StructureChooser.VIEWS_FILTER);
+ FilterOption opt_singlebest = opts.get(0);
+ FilterOption opt_manybest = opts.get(1);
+ assertEquals(opt_singlebest.getValue(), ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE);
+ assertEquals(opt_manybest.getValue(), ThreeDBStructureChooserQuerySource.FILTER_TDBEACONS_COVERAGE);
try {
- upResponse = tdbquery.fetchStructuresMetaData(upSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(), null, false);
+ upResponse = tdbquery.fetchStructuresMetaData(testUpSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(), opt_singlebest, false);
+ tdbquery.updateAvailableFilterOptions(StructureChooser.VIEWS_FILTER,opts,upResponse.getSearchSummary());
+ // test ranking without additional PDBe data
+ FTSRestResponse firstRanked = tdbquery.selectFirstRankedQuery(testUpSeq, upResponse.getSearchSummary(), tdbquery.getDocFieldPrefs().getStructureSummaryFields(), opt_singlebest.getValue(), false);
+ assertEquals(firstRanked.getNumberOfItemsFound(),1);
+ // many best response
+ upResponse = tdbquery.fetchStructuresMetaData(testUpSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(), opt_manybest, false);
+ assertTrue(firstRanked.getSearchSummary().size()<upResponse.getSearchSummary().size());
// NB Could have race condition here
String pdb_Query = tdbquery.buildPDBFTSQueryFor(upResponse);
assertTrue(pdb_Query.trim().length()>0);
FTSRestResponse joinedResp = tdbquery.joinResponses(upResponse, pdbResponse);
assertEquals(upResponse.getNumberOfItemsFound(),joinedResp.getNumberOfItemsFound());
+
} catch (Exception x)
{
x.printStackTrace();
Assert.fail("Unexpected Exception");
}
- StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq});
+ StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { testUpSeq});
}
+ @DataProvider(name = "testUpSeqs")
+ public Object[][] testUpSeqs() throws Exception
+ {
+ setUp();
+ return new Object[][] { {upSeq},{upSeq_insulin}};
+ }
+
@Test(groups = { "Functional" })
public void sanitizeSeqNameTest()
{