From bed0c230be450b16213e30ee1dcaf3e76ddfc669 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 3 Sep 2021 18:47:53 +0100 Subject: [PATCH] JAL-3829 JAL-3865 test structure chooser queries to mocked 3D Beacons FTS --- test/jalview/gui/StructureChooserTest.java | 96 +++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/test/jalview/gui/StructureChooserTest.java b/test/jalview/gui/StructureChooserTest.java index f3c5ed8..309b5ad 100644 --- a/test/jalview/gui/StructureChooserTest.java +++ b/test/jalview/gui/StructureChooserTest.java @@ -30,6 +30,8 @@ import jalview.datamodel.PDBEntry; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; import jalview.fts.api.FTSData; +import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient; +import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest; import jalview.gui.structurechooser.PDBStructureChooserQuerySource; import jalview.gui.structurechooser.StructureChooserQuerySource; import jalview.gui.structurechooser.ThreeDBStructureChooserQuerySource; @@ -56,7 +58,7 @@ public class StructureChooserTest JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } - Sequence seq; + Sequence seq,upSeq; @BeforeMethod(alwaysRun = true) public void setUp() throws Exception @@ -78,12 +80,47 @@ public class StructureChooserTest pdbIds.add(dbRef); seq.setPDBId(pdbIds); + + // Uniprot sequence for 3D-Beacons mocks + upSeq = new Sequence("P38398", + "MDLSALRVEEVQNVINAMQKILECPICLELIKEPVSTKCDHIFCKFCMLKLLNQKKGPSQCPLCKNDITKRS\n" + + "LQESTRFSQLVEELLKIICAFQLDTGLEYANSYNFAKKENNSPEHLKDEVSIIQSMGYRNRAKRLLQSEPEN\n" + + "PSLQETSLSVQLSNLGTVRTLRTKQRIQPQKTSVYIELGSDSSEDTVNKATYCSVGDQELLQITPQGTRDEI\n" + + "SLDSAKKAACEFSETDVTNTEHHQPSNNDLNTTEKRAAERHPEKYQGSSVSNLHVEPCGTNTHASSLQHENS\n" + + "SLLLTKDRMNVEKAEFCNKSKQPGLARSQHNRWAGSKETCNDRRTPSTEKKVDLNADPLCERKEWNKQKLPC\n" + + "SENPRDTEDVPWITLNSSIQKVNEWFSRSDELLGSDDSHDGESESNAKVADVLDVLNEVDEYSGSSEKIDLL\n" + + "ASDPHEALICKSERVHSKSVESNIEDKIFGKTYRKKASLPNLSHVTENLIIGAFVTEPQIIQERPLTNKLKR\n" + + "KRRPTSGLHPEDFIKKADLAVQKTPEMINQGTNQTEQNGQVMNITNSGHENKTKGDSIQNEKNPNPIESLEK\n" + + "ESAFKTKAEPISSSISNMELELNIHNSKAPKKNRLRRKSSTRHIHALELVVSRNLSPPNCTELQIDSCSSSE\n" + + "EIKKKKYNQMPVRHSRNLQLMEGKEPATGAKKSNKPNEQTSKRHDSDTFPELKLTNAPGSFTKCSNTSELKE\n" + + "FVNPSLPREEKEEKLETVKVSNNAEDPKDLMLSGERVLQTERSVESSSISLVPGTDYGTQESISLLEVSTLG\n" + + "KAKTEPNKCVSQCAAFENPKGLIHGCSKDNRNDTEGFKYPLGHEVNHSRETSIEMEESELDAQYLQNTFKVS\n" + + "KRQSFAPFSNPGNAEEECATFSAHSGSLKKQSPKVTFECEQKEENQGKNESNIKPVQTVNITAGFPVVGQKD\n" + + "KPVDNAKCSIKGGSRFCLSSQFRGNETGLITPNKHGLLQNPYRIPPLFPIKSFVKTKCKKNLLEENFEEHSM\n" + + "SPEREMGNENIPSTVSTISRNNIRENVFKEASSSNINEVGSSTNEVGSSINEIGSSDENIQAELGRNRGPKL\n" + + "NAMLRLGVLQPEVYKQSLPGSNCKHPEIKKQEYEEVVQTVNTDFSPYLISDNLEQPMGSSHASQVCSETPDD\n" + + "LLDDGEIKEDTSFAENDIKESSAVFSKSVQKGELSRSPSPFTHTHLAQGYRRGAKKLESSEENLSSEDEELP\n" + + "CFQHLLFGKVNNIPSQSTRHSTVATECLSKNTEENLLSLKNSLNDCSNQVILAKASQEHHLSEETKCSASLF\n" + + "SSQCSELEDLTANTNTQDPFLIGSSKQMRHQSESQGVGLSDKELVSDDEERGTGLEENNQEEQSMDSNLGEA\n" + + "ASGCESETSVSEDCSGLSSQSDILTTQQRDTMQHNLIKLQQEMAELEAVLEQHGSQPSNSYPSIISDSSALE\n" + + "DLRNPEQSTSEKAVLTSQKSSEYPISQNPEGLSADKFEVSADSSTSKNKEPGVERSSPSKCPSLDDRWYMHS\n" + + "CSGSLQNRNYPSQEELIKVVDVEEQQLEESGPHDLTETSYLPRQDLEGTPYLESGISLFSDDPESDPSEDRA\n" + + "PESARVGNIPSSTSALKVPQLKVAESAQSPAAAHTTDTAGYNAMEESVSREKPELTASTERVNKRMSMVVSG\n" + + "LTPEEFMLVYKFARKHHITLTNLITEETTHVVMKTDAEFVCERTLKYFLGIAGGKWVVSYFWVTQSIKERKM\n" + + "LNEHDFEVRGDVVNGRNHQGPKRARESQDRKIFRGLEICCYGPFTNMPTDQLEWMVQLCGASVVKELSSFTL\n" + + "GTGVHPIVVVQPDAWTEDNGFHAIGQMCEAPVVTREWVLDSVALYQCQELDTYLIPQIPHSHY\n" + + "", 1, +1863); + upSeq.createDatasetSequence(); + upSeq.setDescription("Breast cancer type 1 susceptibility protein"); + upSeq.addDBRef(new DBRefEntry("UNIPROT","0","P38398",null,true)); } @AfterMethod(alwaysRun = true) public void tearDown() throws Exception { seq = null; + upSeq=null; } @SuppressWarnings("deprecation") @@ -131,6 +168,63 @@ public class StructureChooserTest query); } + @SuppressWarnings("deprecation") + @Test(groups = { "Functional" }) + public void buildThreeDBQueryTest() + { + System.out.println("seq >>>> " + upSeq); + TDBeaconsFTSRestClientTest.setMock(); + StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq}); + assertTrue(scquery instanceof ThreeDBStructureChooserQuerySource); + String query = scquery.buildQuery(upSeq); + assertEquals("P38398", query); + + // query shouldn't change regardless of additional entries + // because 3DBeacons requires canonical entries. + upSeq.getAllPDBEntries().clear(); + query = scquery.buildQuery(upSeq); + assertEquals("P38398", query); + upSeq.setDBRefs(null); + query = scquery.buildQuery(upSeq); + /* + * legacy projects/datasets will not have canonical flags set for uniprot dbrefs + * graceful behaviour would be to + * - pick one ? not possible + * - iterate through all until a 200 is obtained ? + * ---> ideal but could be costly + * ---> better to do a direct retrieval from uniprot to work out which is the canonical identifier.. + * ----> need a test to check that accessions can be promoted to canonical! + */ + assertEquals(null, query); + + // TODO: +// +// DBRefEntry uniprotDBRef = new DBRefEntry(); +// uniprotDBRef.setAccessionId("P12345"); +// uniprotDBRef.setSource(DBRefSource.UNIPROT); +// upSeq.addDBRef(uniprotDBRef); +// +// DBRefEntry pdbDBRef = new DBRefEntry(); +// pdbDBRef.setAccessionId("1XYZ"); +// pdbDBRef.setSource(DBRefSource.PDB); +// upSeq.addDBRef(pdbDBRef); +// +// for (int x = 1; x < 5; x++) +// { +// DBRefEntry dbRef = new DBRefEntry(); +// dbRef.setAccessionId("XYZ_" + x); +// seq.addDBRef(dbRef); +// } +// System.out.println(""); +// System.out.println(seq.getDBRefs()); +// System.out.println(query); +// query = scquery.buildQuery(seq); +// assertEquals( +// "uniprot_accession:P12345 OR uniprot_id:P12345 OR pdb_id:1xyz", +// query); + } + + @Test(groups = { "Functional" }) public void populateFilterComboBoxTest() throws InterruptedException { -- 1.7.10.2