X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2Fstructurechooser%2FStructureChooserQuerySourceTest.java;h=73ba4dfdd6795b3161697436565c646b57643032;hb=066e3a364c358a39a66cf292cb98c9b26b289795;hp=b6b4615cf4d1e05b0014acefc430b33b63da7944;hpb=1782673a61778d3aec570fbfc291ab21f99af7a3;p=jalview.git diff --git a/test/jalview/gui/structurechooser/StructureChooserQuerySourceTest.java b/test/jalview/gui/structurechooser/StructureChooserQuerySourceTest.java index b6b4615..73ba4df 100644 --- a/test/jalview/gui/structurechooser/StructureChooserQuerySourceTest.java +++ b/test/jalview/gui/structurechooser/StructureChooserQuerySourceTest.java @@ -20,13 +20,18 @@ */ package jalview.gui.structurechooser; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import java.util.List; import java.util.Vector; +import org.junit.Assert; import org.testng.AssertJUnit; 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; @@ -34,9 +39,12 @@ import jalview.datamodel.DBRefSource; import jalview.datamodel.PDBEntry; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; -import jalview.fts.core.FTSRestRequest; +import jalview.fts.core.FTSRestResponse; +import jalview.fts.service.pdb.PDBFTSRestClientTest; import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest; import jalview.gui.JvOptionPane; +import jalview.gui.StructureChooser; +import jalview.jbgui.FilterOption; public class StructureChooserQuerySourceTest { @@ -48,11 +56,11 @@ public class StructureChooserQuerySourceTest JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } - Sequence seq,upSeq; + Sequence seq, upSeq, upSeq_insulin, upSeq_r1ab; // same set up as for structurechooser test - -@BeforeMethod(alwaysRun = true) + + @BeforeMethod(alwaysRun = true) public void setUp() throws Exception { seq = new Sequence("PDB|4kqy|4KQY|A", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1, @@ -72,57 +80,176 @@ public class StructureChooserQuerySourceTest pdbIds.add(dbRef); seq.setPDBId(pdbIds); - + // Uniprot sequence for 3D-Beacons mocks - upSeq = new Sequence("P38398", + 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); + + "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)); + 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)); + + upSeq_r1ab = new Sequence("R1AB_SARS2", + "MESLVPGFNEKTHVQLSLPVLQVRDVLVRGFGDSVEEVLSEARQHLKDGTCGLVEVEKGVLPQLEQPYVFIK\n" + + "RSDARTAPHGHVMVELVAELEGIQYGRSGETLGVLVPHVGEIPVAYRKVLLRKNGNKGAGGHSYGADLKSFD\n" + + "LGDELGTDPYEDFQENWNTKHSSGVTRELMRELNGGAYTRYVDNNFCGPDGYPLECIKDLLARAGKASCTLS\n" + + "EQLDFIDTKRGVYCCREHEHEIAWYTERSEKSYELQTPFEIKLAKKFDTFNGECPNFVFPLNSIIKTIQPRV\n" + + "EKKKLDGFMGRIRSVYPVASPNECNQMCLSTLMKCDHCGETSWQTGDFVKATCEFCGTENLTKEGATTCGYL\n" + + "PQNAVVKIYCPACHNSEVGPEHSLAEYHNESGLKTILRKGGRTIAFGGCVFSYVGCHNKCAYWVPRASANIG\n" + + "CNHTGVVGEGSEGLNDNLLEILQKEKVNINIVGDFKLNEEIAIILASFSASTSAFVETVKGLDYKAFKQIVE\n" + + "SCGNFKVTKGKAKKGAWNIGEQKSILSPLYAFASEAARVVRSIFSRTLETAQNSVRVLQKAAITILDGISQY\n" + + "SLRLIDAMMFTSDLATNNLVVMAYITGGVVQLTSQWLTNIFGTVYEKLKPVLDWLEEKFKEGVEFLRDGWEI\n" + + "VKFISTCACEIVGGQIVTCAKEIKESVQTFFKLVNKFLALCADSIIIGGAKLKALNLGETFVTHSKGLYRKC\n" + + "VKSREETGLLMPLKAPKEIIFLEGETLPTEVLTEEVVLKTGDLQPLEQPTSEAVEAPLVGTPVCINGLMLLE\n" + + "IKDTEKYCALAPNMMVTNNTFTLKGGAPTKVTFGDDTVIEVQGYKSVNITFELDERIDKVLNEKCSAYTVEL\n" + + "GTEVNEFACVVADAVIKTLQPVSELLTPLGIDLDEWSMATYYLFDESGEFKLASHMYCSFYPPDEDEEEGDC\n" + + "EEEEFEPSTQYEYGTEDDYQGKPLEFGATSAALQPEEEQEEDWLDDDSQQTVGQQDGSEDNQTTTIQTIVEV\n" + + "QPQLEMELTPVVQTIEVNSFSGYLKLTDNVYIKNADIVEEAKKVKPTVVVNAANVYLKHGGGVAGALNKATN\n" + + "NAMQVESDDYIATNGPLKVGGSCVLSGHNLAKHCLHVVGPNVNKGEDIQLLKSAYENFNQHEVLLAPLLSAG\n" + + "IFGADPIHSLRVCVDTVRTNVYLAVFDKNLYDKLVSSFLEMKSEKQVEQKIAEIPKEEVKPFITESKPSVEQ\n" + + "RKQDDKKIKACVEEVTTTLEETKFLTENLLLYIDINGNLHPDSATLVSDIDITFLKKDAPYIVGDVVQEGVL\n" + + "TAVVIPTKKAGGTTEMLAKALRKVPTDNYITTYPGQGLNGYTVEEAKTVLKKCKSAFYILPSIISNEKQEIL\n" + + "GTVSWNLREMLAHAEETRKLMPVCVETKAIVSTIQRKYKGIKIQEGVVDYGARFYFYTSKTTVASLINTLND\n" + + "LNETLVTMPLGYVTHGLNLEEAARYMRSLKVPATVSVSSPDAVTAYNGYLTSSSKTPEEHFIETISLAGSYK\n" + + "DWSYSGQSTQLGIEFLKRGDKSVYYTSNPTTFHLDGEVITFDNLKTLLSLREVRTIKVFTTVDNINLHTQVV\n" + + "DMSMTYGQQFGPTYLDGADVTKIKPHNSHEGKTFYVLPNDDTLRVEAFEYYHTTDPSFLGRYMSALNHTKKW\n" + + "KYPQVNGLTSIKWADNNCYLATALLTLQQIELKFNPPALQDAYYRARAGEAANFCALILAYCNKTVGELGDV\n" + + "RETMSYLFQHANLDSCKRVLNVVCKTCGQQQTTLKGVEAVMYMGTLSYEQFKKGVQIPCTCGKQATKYLVQQ\n" + + "ESPFVMMSAPPAQYELKHGTFTCASEYTGNYQCGHYKHITSKETLYCIDGALLTKSSEYKGPITDVFYKENS\n" + + "YTTTIKPVTYKLDGVVCTEIDPKLDNYYKKDNSYFTEQPIDLVPNQPYPNASFDNFKFVCDNIKFADDLNQL\n" + + "TGYKKPASRELKVTFFPDLNGDVVAIDYKHYTPSFKKGAKLLHKPIVWHVNNATNKATYKPNTWCIRCLWST\n" + + "KPVETSNSFDVLKSEDAQGMDNLACEDLKPVSEEVVENPTIQKDVLECNVKTTEVVGDIILKPANNSLKITE\n" + + "EVGHTDLMAAYVDNSSLTIKKPNELSRVLGLKTLATHGLAAVNSVPWDTIANYAKPFLNKVVSTTTNIVTRC\n" + + "LNRVCTNYMPYFFTLLLQLCTFTRSTNSRIKASMPTTIAKNTVKSVGKFCLEASFNYLKSPNFSKLINIIIW\n" + + "FLLLSVCLGSLIYSTAALGVLMSNLGMPSYCTGYREGYLNSTNVTIATYCTGSIPCSVCLSGLDSLDTYPSL\n" + + "ETIQITISSFKWDLTAFGLVAEWFLAYILFTRFFYVLGLAAIMQLFFSYFAVHFISNSWLMWLIINLVQMAP\n" + + "ISAMVRMYIFFASFYYVWKSYVHVVDGCNSSTCMMCYKRNRATRVECTTIVNGVRRSFYVYANGGKGFCKLH\n" + + "NWNCVNCDTFCAGSTFISDEVARDLSLQFKRPINPTDQSSYIVDSVTVKNGSIHLYFDKAGQKTYERHSLSH\n" + + "FVNLDNLRANNTKGSLPINVIVFDGKSKCEESSAKSASVYYSQLMCQPILLLDQALVSDVGDSAEVAVKMFD\n" + + "AYVNTFSSTFNVPMEKLKTLVATAEAELAKNVSLDNVLSTFISAARQGFVDSDVETKDVVECLKLSHQSDIE\n" + + "VTGDSCNNYMLTYNKVENMTPRDLGACIDCSARHINAQVAKSHNIALIWNVKDFMSLSEQLRKQIRSAAKKN\n" + + "NLPFKLTCATTRQVVNVVTTKIALKGGKIVNNWLKQLIKVTLVFLFVAAIFYLITPVHVMSKHTDFSSEIIG\n" + + "YKAIDGGVTRDIASTDTCFANKHADFDTWFSQRGGSYTNDKACPLIAAVITREVGFVVPGLPGTILRTTNGD\n" + + "FLHFLPRVFSAVGNICYTPSKLIEYTDFATSACVLAAECTIFKDASGKPVPYCYDTNVLEGSVAYESLRPDT\n" + + "RYVLMDGSIIQFPNTYLEGSVRVVTTFDSEYCRHGTCERSEAGVCVSTSGRWVLNNDYYRSLPGVFCGVDAV\n" + + "NLLTNMFTPLIQPIGALDISASIVAGGIVAIVVTCLAYYFMRFRRAFGEYSHVVAFNTLLFLMSFTVLCLTP\n" + + "VYSFLPGVYSVIYLYLTFYLTNDVSFLAHIQWMVMFTPLVPFWITIAYIICISTKHFYWFFSNYLKRRVVFN\n" + + "GVSFSTFEEAALCTFLLNKEMYLKLRSDVLLPLTQYNRYLALYNKYKYFSGAMDTTSYREAACCHLAKALND\n" + + "FSNSGSDVLYQPPQTSITSAVLQSGFRKMAFPSGKVEGCMVQVTCGTTTLNGLWLDDVVYCPRHVICTSEDM\n" + + "LNPNYEDLLIRKSNHNFLVQAGNVQLRVIGHSMQNCVLKLKVDTANPKTPKYKFVRIQPGQTFSVLACYNGS\n" + + "PSGVYQCAMRPNFTIKGSFLNGSCGSVGFNIDYDCVSFCYMHHMELPTGVHAGTDLEGNFYGPFVDRQTAQA\n" + + "AGTDTTITVNVLAWLYAAVINGDRWFLNRFTTTLNDFNLVAMKYNYEPLTQDHVDILGPLSAQTGIAVLDMC\n" + + "ASLKELLQNGMNGRTILGSALLEDEFTPFDVVRQCSGVTFQSAVKRTIKGTHHWLLLTILTSLLVLVQSTQW\n" + + "SLFFFLYENAFLPFAMGIIAMSAFAMMFVKHKHAFLCLFLLPSLATVAYFNMVYMPASWVMRIMTWLDMVDT\n" + + "SLSGFKLKDCVMYASAVVLLILMTARTVYDDGARRVWTLMNVLTLVYKVYYGNALDQAISMWALIISVTSNY\n" + + "SGVVTTVMFLARGIVFMCVEYCPIFFITGNTLQCIMLVYCFLGYFCTCYFGLFCLLNRYFRLTLGVYDYLVS\n" + + "TQEFRYMNSQGLLPPKNSIDAFKLNIKLLGVGGKPCIKVATVQSKMSDVKCTSVVLLSVLQQLRVESSSKLW\n" + + "AQCVQLHNDILLAKDTTEAFEKMVSLLSVLLSMQGAVDINKLCEEMLDNRATLQAIASEFSSLPSYAAFATA\n" + + "QEAYEQAVANGDSEVVLKKLKKSLNVAKSEFDRDAAMQRKLEKMADQAMTQMYKQARSEDKRAKVTSAMQTM\n" + + "LFTMLRKLDNDALNNIINNARDGCVPLNIIPLTTAAKLMVVIPDYNTYKNTCDGTTFTYASALWEIQQVVDA\n" + + "DSKIVQLSEISMDNSPNLAWPLIVTALRANSAVKLQNNELSPVALRQMSCAAGTTQTACTDDNALAYYNTTK\n" + + "GGRFVLALLSDLQDLKWARFPKSDGTGTIYTELEPPCRFVTDTPKGPKVKYLYFIKGLNNLNRGMVLGSLAA\n" + + "TVRLQAGNATEVPANSTVLSFCAFAVDAAKAYKDYLASGGQPITNCVKMLCTHTGTGQAITVTPEANMDQES\n" + + "FGGASCCLYCRCHIDHPNPKGFCDLKGKYVQIPTTCANDPVGFTLKNTVCTVCGMWKGYGCSCDQLREPMLQ\n" + + "SADAQSFLNRVCGVSAARLTPCGTGTSTDVVYRAFDIYNDKVAGFAKFLKTNCCRFQEKDEDDNLIDSYFVV\n" + + "KRHTFSNYQHEETIYNLLKDCPAVAKHDFFKFRIDGDMVPHISRQRLTKYTMADLVYALRHFDEGNCDTLKE\n" + + "ILVTYNCCDDDYFNKKDWYDFVENPDILRVYANLGERVRQALLKTVQFCDAMRNAGIVGVLTLDNQDLNGNW\n" + + "YDFGDFIQTTPGSGVPVVDSYYSLLMPILTLTRALTAESHVDTDLTKPYIKWDLLKYDFTEERLKLFDRYFK\n" + + "YWDQTYHPNCVNCLDDRCILHCANFNVLFSTVFPPTSFGPLVRKIFVDGVPFVVSTGYHFRELGVVHNQDVN\n" + + "LHSSRLSFKELLVYAADPAMHAASGNLLLDKRTTCFSVAALTNNVAFQTVKPGNFNKDFYDFAVSKGFFKEG\n" + + "SSVELKHFFFAQDGNAAISDYDYYRYNLPTMCDIRQLLFVVEVVDKYFDCYDGGCINANQVIVNNLDKSAGF\n" + + "PFNKWGKARLYYDSMSYEDQDALFAYTKRNVIPTITQMNLKYAISAKNRARTVAGVSICSTMTNRQFHQKLL\n" + + "KSIAATRGATVVIGTSKFYGGWHNMLKTVYSDVENPHLMGWDYPKCDRAMPNMLRIMASLVLARKHTTCCSL\n" + + "SHRFYRLANECAQVLSEMVMCGGSLYVKPGGTSSGDATTAYANSVFNICQAVTANVNALLSTDGNKIADKYV\n" + + "RNLQHRLYECLYRNRDVDTDFVNEFYAYLRKHFSMMILSDDAVVCFNSTYASQGLVASIKNFKSVLYYQNNV\n" + + "FMSEAKCWTETDLTKGPHEFCSQHTMLVKQGDDYVYLPYPDPSRILGAGCFVDDIVKTDGTLMIERFVSLAI\n" + + "DAYPLTKHPNQEYADVFHLYLQYIRKLHDELTGHMLDMYSVMLTNDNTSRYWEPEFYEAMYTPHTVLQAVGA\n" + + "CVLCNSQTSLRCGACIRRPFLCCKCCYDHVISTSHKLVLSVNPYVCNAPGCDVTDVTQLYLGGMSYYCKSHK\n" + + "PPISFPLCANGQVFGLYKNTCVGSDNVTDFNAIATCDWTNAGDYILANTCTERLKLFAAETLKATEETFKLS\n" + + "YGIATVREVLSDRELHLSWEVGKPRPPLNRNYVFTGYRVTKNSKVQIGEYTFEKGDYGDAVVYRGTTTYKLN\n" + + "VGDYFVLTSHTVMPLSAPTLVPQEHYVRITGLYPTLNISDEFSSNVANYQKVGMQKYSTLQGPPGTGKSHFA\n" + + "IGLALYYPSARIVYTACSHAAVDALCEKALKYLPIDKCSRIIPARARVECFDKFKVNSTLEQYVFCTVNALP\n" + + "ETTADIVVFDEISMATNYDLSVVNARLRAKHYVYIGDPAQLPAPRTLLTKGTLEPEYFNSVCRLMKTIGPDM\n" + + "FLGTCRRCPAEIVDTVSALVYDNKLKAHKDKSAQCFKMFYKGVITHDVSSAINRPQIGVVREFLTRNPAWRK\n" + + "AVFISPYNSQNAVASKILGLPTQTVDSSQGSEYDYVIFTQTTETAHSCNVNRFNVAITRAKVGILCIMSDRD\n" + + "LYDKLQFTSLEIPRRNVATLQAENVTGLFKDCSKVITGLHPTQAPTHLSVDTKFKTEGLCVDIPGIPKDMTY\n" + + "RRLISMMGFKMNYQVNGYPNMFITREEAIRHVRAWIGFDVEGCHATREAVGTNLPLQLGFSTGVNLVAVPTG\n" + + "YVDTPNNTDFSRVSAKPPPGDQFKHLIPLMYKGLPWNVVRIKIVQMLSDTLKNLSDRVVFVLWAHGFELTSM\n" + + "KYFVKIGPERTCCLCDRRATCFSTASDTYACWHHSIGFDYVYNPFMIDVQQWGFTGNLQSNHDLYCQVHGNA\n" + + "HVASCDAIMTRCLAVHECFVKRVDWTIEYPIIGDELKINAACRKVQHMVVKAALLADKFPVLHDIGNPKAIK\n" + + "CVPQADVEWKFYDAQPCSDKAYKIEELFYSYATHSDKFTDGVCLFWNCNVDRYPANSIVCRFDTRVLSNLNL\n" + + "PGCDGGSLYVNKHAFHTPAFDKSAFVNLKQLPFFYYSDSPCESHGKQVVSDIDYVPLKSATCITRCNLGGAV\n" + + "CRHHANEYRLYLDAYNMMISAGFSLWVYKQFDTYNLWNTFTRLQSLENVAFNVVNKGHFDGQQGEVPVSIIN\n" + + "NTVYTKVDGVDVELFENKTTLPVNVAFELWAKRNIKPVPEVKILNNLGVDIAANTVIWDYKRDAPAHISTIG\n" + + "VCSMTDIAKKPTETICAPLTVFFDGRVDGQVDLFRNARNGVLITEGSVKGLQPSVGPKQASLNGVTLIGEAV\n" + + "KTQFNYYKKVDGVVQQLPETYFTQSRNLQEFKPRSQMEIDFLELAMDEFIERYKLEGYAFEHIVYGDFSHSQ\n" + + "LGGLHLLIGLAKRFKESPFELEDFIPMDSTVKNYFITDAQTGSSKCVCSVIDLLLDDFVEIIKSQDLSVVSK\n" + + "VVKVTIDYTEISFMLWCKDGHVETFYPKLQSSQAWQPGVAMPNLYKMQRMLLEKCDLQNYGDSATLPKGIMM\n" + + "NVAKYTQLCQYLNTLTLAVPYNMRVIHFGAGSDKGVAPGTAVLRQWLPTGTLLVDSDLNDFVSDADSTLIGD\n" + + "CATVHTANKWDLIISDMYDPKTKNVTKENDSKEGFFTYICGFIQQKLALGGSVAIKITEHSWNADLYKLMGH\n" + + "FAWWTAFVTNVNASSSEAFLIGCNYLGKPREQIDGYVMHANYIFWRNTNPIQLSSYSLFDMSKFPLKLRGTA\n" + + "VMSLKEGQINDMILSLLSKGRLIIRENNRVVISSDVLVNN"); + upSeq_r1ab.setDescription("sars2 r1ab polyprotein"); + upSeq_r1ab + .addDBRef(new DBRefEntry("UNIPROT", "0", "P0DTD1", null, true)); + upSeq_r1ab.createDatasetSequence(); + } -@AfterMethod(alwaysRun = true) + @AfterMethod(alwaysRun = true) public void tearDown() throws Exception { seq = null; - upSeq=null; + upSeq = null; + upSeq_r1ab = null; } @SuppressWarnings("deprecation") - @Test(groups = { "Functional" }) + @Test(groups = + { "Functional" }) public void buildPDBQueryTest() { System.out.println("seq >>>> " + seq); - - StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { seq}); - AssertJUnit.assertTrue(scquery instanceof PDBStructureChooserQuerySource); + + StructureChooserQuerySource scquery = StructureChooserQuerySource + .getQuerySourceFor(new SequenceI[] + { seq }); + AssertJUnit + .assertTrue(scquery instanceof PDBStructureChooserQuerySource); String query = scquery.buildQuery(seq); AssertJUnit.assertEquals("pdb_id:1tim", query); seq.getAllPDBEntries().clear(); @@ -161,16 +288,23 @@ public class StructureChooserQuerySourceTest } @SuppressWarnings("deprecation") - @Test(groups = { "Functional" }) + @Test(groups = + { "Functional" }) public void buildThreeDBQueryTest() { System.out.println("seq >>>> " + upSeq); TDBeaconsFTSRestClientTest.setMock(); - StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq}); - AssertJUnit.assertTrue(scquery instanceof ThreeDBStructureChooserQuerySource); + PDBFTSRestClientTest.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); - + // query shouldn't change regardless of additional entries // because 3DBeacons requires canonical entries. upSeq.getAllPDBEntries().clear(); @@ -187,94 +321,154 @@ public class StructureChooserQuerySourceTest * ---> 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! */ - //FIXME - need to be able to use ID to query here ? + // FIXME - need to be able to use ID to query here ? AssertJUnit.assertEquals(null, query); - - - // TODO: + // TODO: /** - * set of sequences: - * - no protein -> TDB not applicable, query PDBe only (consider RNA or DNA - specific query adapter ?) - * - protein but no uniprot -> first consider trying to get uniprot refs (need a mark to say none are available) - * - protein and uniprot - no canonicals -> resolve to uniprot automatically to get canonicals - * - query uniprot against 3DBeacons - * --> decorate experimental structures with additional data from PDBe - * - query remaining against PDBe - * Ranking - * - 3D Beacons - * --> in memory ranking - no need to query twice - * Rank by - * - experimental > AlphaFold -> Model - * - start > end - * -> filters for - * -> experimental only - * -> experimental plus best models for other regions - * -> "best cover" - * -> need to be able to select correct reference (the longest one that covers all) for superposition + * set of sequences: - no protein -> TDB not applicable, query PDBe only + * (consider RNA or DNA - specific query adapter ?) - protein but no uniprot + * -> first consider trying to get uniprot refs (need a mark to say none are + * available) - protein and uniprot - no canonicals -> resolve to uniprot + * automatically to get canonicals - query uniprot against 3DBeacons --> + * decorate experimental structures with additional data from PDBe - query + * remaining against PDBe Ranking - 3D Beacons --> in memory ranking - no + * need to query twice Rank by - experimental > AlphaFold -> Model - start > + * end -> filters for -> experimental only -> experimental plus best models + * for other regions -> "best cover" -> need to be able to select correct + * reference (the longest one that covers all) for superposition */ -// -// 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); + // + // 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 cascadingThreeDBandPDBQuerys() + + @Test(groups = { "Functional" }, dataProvider = "testUpSeqs") + public void cascadingThreeDBandPDBQuerys(SequenceI testUpSeq) { TDBeaconsFTSRestClientTest.setMock(); - - StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq}); - - // query TDB for doc - // query PDBe for PDB entry metadata - // Combine - - FTSRestRequest tdbQuery = new FTSRestRequest(); - tdbQuery.setResponseSize(100); - tdbQuery.setFieldToSearchBy(""); - tdbQuery.setSearchTerm(scquery.buildQuery(upSeq)); - tdbQuery.setWantedFields(scquery.getDocFieldPrefs().getStructureSummaryFields()); - //scquery.fetchStructuresMetaData(upSeq, null, null, false); - String secondaryPdbQuery; - //secondaryPdbQuery = ((ThreeDBStructureChooserQuerySource)scquery).buildPDBFTSquery(); + PDBFTSRestClientTest.setMock(); + ThreeDBStructureChooserQuerySource tdbquery = new ThreeDBStructureChooserQuerySource(); + PDBStructureChooserQuerySource pdbquery = new PDBStructureChooserQuerySource(); + + FTSRestResponse upResponse = null; + List 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 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(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 + List pdb_Queries = tdbquery.buildPDBFTSQueryFor(upResponse); + for (String pdb_Query : pdb_Queries) + { + assertTrue(pdb_Query.trim().length() > 0); + } + + pdbResponse = tdbquery.fetchStructuresMetaDataFor(pdbquery, + upResponse); + // check all queries resulted in a response + assertEquals(pdbResponse.size(), pdb_Queries.size()); + for (FTSRestResponse pdbr : pdbResponse) + { + assertTrue(pdbr.getNumberOfItemsFound() > 0); + } + + // and finally that join works + 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[] + { testUpSeq }); + + } + @DataProvider(name = "testUpSeqs") + public Object[][] testUpSeqs() throws Exception + { + setUp(); + return new Object[][] { { upSeq }, { upSeq_insulin }, { upSeq_r1ab } }; } - + @Test(groups = { "Functional" }) public void sanitizeSeqNameTest() { String name = "ab_cdEF|fwxyz012349"; - AssertJUnit.assertEquals(name, PDBStructureChooserQuerySource.sanitizeSeqName(name)); + AssertJUnit.assertEquals(name, + PDBStructureChooserQuerySource.sanitizeSeqName(name)); // remove a [nn] substring name = "abcde12[345]fg"; - AssertJUnit.assertEquals("abcde12fg", PDBStructureChooserQuerySource.sanitizeSeqName(name)); + AssertJUnit.assertEquals("abcde12fg", + PDBStructureChooserQuerySource.sanitizeSeqName(name)); // remove characters other than a-zA-Z0-9 | or _ name = "ab[cd],.\t£$*!- \\\"@:e"; - AssertJUnit.assertEquals("abcde", PDBStructureChooserQuerySource.sanitizeSeqName(name)); + AssertJUnit.assertEquals("abcde", + PDBStructureChooserQuerySource.sanitizeSeqName(name)); name = "abcde12[345a]fg"; - AssertJUnit.assertEquals("abcde12345afg", PDBStructureChooserQuerySource.sanitizeSeqName(name)); + AssertJUnit.assertEquals("abcde12345afg", + PDBStructureChooserQuerySource.sanitizeSeqName(name)); } }