/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.broad.igv.blat; import org.broad.igv.AbstractHeadlessTest; import org.broad.igv.util.blat.BlatClient; import org.junit.Test; import java.util.List; import static junit.framework.Assert.assertTrue; /** * @author jrobinso * Date: 11/21/12 * Time: 9:23 PM */ public class BlatClientTest extends AbstractHeadlessTest{ /** * Test a basic "blat" query. * * @throws Exception */ @Test public void testBlat() throws Exception { String org = "Human"; String db = "hg19"; String userSeq = "AGAAGTTGGCGCAGTGGGAGACCACGTTTTATTCAGTCCAGTTCAGGATCCCCGCTATCTCAGGGCTCTCTGGGCCAGTCCTC" + "CTGGGAGCCCCCACCACAACACTTCCCAGGCATGAGCCCTCAGGGGCCCACATGAGCTTCCACACACTGAGAAGTGTCCGAGAAATTGGTGGG" + "GCCTCTGAAGGAGGCTGTGAGCAGCCCACCTGAACTCCCAGCTCACCAGCCCAAACAGGGTGCAGGGGCTCTGGCCCTGAAGAACCTGAGTGG" + "AGTGGAATGGCACTGGCTGGCCACTCAGCTCAGCGGGCGACGTGCCCCTACAAGTTGGCAGAAGTGGCTGCCACTGCTGGGTTTGTGTAAGAGA" + "GGCTGCTGCCACCATTACCTGCAGA"; List<String> features = BlatClient.blat(org, db, userSeq); // We can't really assert a specific size as the blat server could get updated. However it should have // several results assertTrue(features.size() > 1); } /** * Test a "blat" query of a long sequence that exceeds URL limits. * * @throws Exception */ @Test public void testBlatLongSequence() throws Exception { String org = "Human"; String db = "hg19"; String userSeq = "GCAGCGGCTCATGCCTGTAATCCTAGCACTTTGGGAGGCCAAGGAGGGAGGATTGCTTGAGGCCAGGAGTTCAAGACCAA" + "CCTGGCCAACACAGCGAGACCCGATCTCTAAAAAAATAAATAGGCCAGGCGAGGTAGCTCATGCCTGTAATCCCAGCACT" + "TTGGGAGGCCGAGGCGGGCGGATCACAAGGTCAAGAGTTTGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT" + "AGGAATACAAAACTTAGCCAGGCGTGGTGGTGCGTGCCTACAATTCCAGCTACTCGGGAGGCTGAGGTAGGAGAATCGCT" + "TGAACCTGGGAGGCGGAGGTTGCAGTGAGCTGAGATCGCGCCACTGGACTCCAGCCTGGACAACAGAGCAAGACTCCGAC" + "GTCTCGGAAAAATAAATAAATAAATAAATAAATAAAGGCCAGGCAAGGTGGCTCACACCTGTAATCCCAGCACTTTGGGA" + "GGCCAAGGTGGGTGGATCCCCTGAGGTTGGGAGTTTGAGACCAGCCTGACCAACATGGAGAAACCCCATCTCTACTAAAA" + "ATACAACATTAGCTGGGTGTGGTGGCGCATGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATTGCTTGAAC" + "CCAGGAGGCGGAGGTTGCGGTGAGCCGAGATCGCGCCATTGCACTTCAGCCTGAGCAACAAGAGTGAAACTCTGTCTCAA" + "TAAATAAGTAAATAAAATACGTAAAAAATAAATTATTTTTGGCTGGGCACAGTGGCTCACGCCTGTAATCCCAGCACTTT" + "GGGAGGCCGAGGTGGATGGATCACGAGGTCAGGCGTTCAAGACCAGCCTGGCCAACATAGTGAAACCCCGTCTCTACTAA" + "AAATGAAAATGAAAATAATTAGCTGGGTGTGGTTGCAGGCGCCTGTAATCCCAGCTACTTGGAAGGCTGAGGCAGGAGAA" + "TGGCTTGAACCTGGGAGGCAGGGGTTGCAGTGAGCCAAGATTGCGCCACTGCACTCCAGCCTGGGGAACAGTGTGAGACT" + "CCGTCTCAAAAACATATATATATTTTTAAAAAATGATAATGCTTACCTCATAGAGTTGCAAGAATTCAACTGGTTTGAGA" + "CGATCAATGGGAGTCTGAGTACAGTGTCCGGCTCATGGTTAGGGCTCAAGAATGTTACTAAAGTGACTAGAAAATAGTTC" + "GGACTCCAGGGGGTGGGCATAAGAGGGAAGCCTTGCCACCCAAATAGGGGCTGGGTATAAGGGCCAGGTGTGAACCCAGA" + "GTATGGGCTGGAAGGCACAGATTGATGGTGATGGGAATGTCACCAGGTGGAACAGAATAGTGGGAACTGTCCATGGGGCT" + "GGCCACAAGTAAGGGGTTCGAGGGAGCCCCATGAGTCAGCCAGGTCCGGAGCACTGACTTCTGTGCCCACTGCCATCACA" + "AAAACTCTCTGGGGTCCCACGCCCATTTGGAATGCCCCCTTCTTTTTTCCTCATGCCCCCCATTCCAGTTTCCCATGTCC" + "TGTTCTCCTGAACCCCCTGCCTGTTCCTGGTGACTGAACCCCCTTGCAACGCGTTCCCTGTTCTGCAGTCTCACAGCCCC" + "CAGTGCCAGTGTTTGTCCCTGAAGTTCTTGCTCCATCTCAACCCTCTCCCTCCTTCCAGTCCTGCACTTCTTCCTCGATA" + "GCCGCTGGGGCGCAAGCCGAGAGCGGCTGGCTATCAGCAAGGACCAGCGAGCAGTACGGAGTGTTCCAGGGCTGCCCCTG" + "CTGCTGGCTGCTGACCGGCTGCTGACCGGCTGCCACCTGAGTGTGGATGTGGTCCTGGGCGACGTGGCTGTGACCCAGGG" + "CCGCAGCTACTGGGCCTGCGCCGTAGACCCAGCCTCCTACTTGGTCAAGGTGGGCGTCGGGCTGGAGAGCAAGCTTCAAG" + "AAAGTTTCCAGGGTGCCCCCGATGTGATCAGCCCCAGGTCAGACCCCTCTGGAAGGGATGGGGTGTGGGGGTCCTGGTGG" + "GAGTGAGGGGCACAGAAGGGGTGGCAAGTGGAGCACAGACTTGCTAGGGTGGGGCTGGGAGGGGATTAGGAGGAAGTAGT" + "AGGAGCCTGGAAGCCAGGCTGGGAGGCCTGTGTCCAGGAGACGCATGGGCTCAGCAAAAGGGCTTTTGAGGACTGATTTT" + "CAGAGCATGTCGTGTGGTCAGGGAAAGGGATGATAGAAGAGGGAGCCATCTCTGCTTCCTTCCAACCATCTGTCACTCTG" + "GATCAACACACCATCTCTCCAAGCATCTGTGTCCTTTCTTCCTAACACTCCATTTCCAACATACCTTCTCCATAAAACCT" + "TTGCTCTCCAAGACCTCCTTCACCCGTATCTTAAAATTCTTCCCTTAGCCGGATGCGGTGGCTCACGCCTGTAATCCCAG" + "CACTTTGGGAGGCTGAGGCAGGCAAATCACTGGAGGTCGAGAGTTCGAGACCAGCTTGACCAACATGGAGTGACCCCATC" + "TCTACTAAAAATACAAAAAAAATAGCTGGGCGTGGTAGCGCATGCCTGTAACCCCGGCTACTCGTGAGGCTGAGGCAGGA" + "GAATCACTTGAACCCGGGAGGTGGAGGTTGCGGTGAGCCAAGATTGTGTCATTGCACTGCAGCCTGGGCGACAAAAGCAA" + "AACTCCTTCTCAAAAAAAAAAAAAAAAAAATTCTTCCCTTAAACATCCCACCTCCATAACCCTCCTCTCCCCAACTCCCT" + "GTTTTTTTTTTTTTTTGAAATGGAGTCTCGCTCTGTCGCTCAGGCTGGAGTCTAGCGGCGCGATCTCCGCTCACTGCAAG" + "CTCCACCTCCCGGGTTCACACCATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCACCCGCCACCATGCCCA" + "GCTAATTTTTTGTATTTTTAGTAGAGACGGGCTTTCACCGTGTTAGCCAGGATGGTCTCAATCTCCTGACCTCGTGATCC" + "GCCCACCTTGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACTGTGCCTGGCCCCAACTCCCTATTTAACACCCTC" + "CCACTAATGCTTTGCATCCTAAGCCTTCTCCCCAGCACTCTATCCCCCAACACCTTATTTCTTCAAAATGCTTTCTCCCC" + "AACACAAACCCCTCCTAAACCCCATTGTCCCCAACCCCGCATACCTCTAACACCCTTCATTTGTGACACCAATCCACCCT" + "CATCTCTCTCCCGACACCCACCTTCCCAACATCCTTTCTCTTCTTAGTCACTAATCTCGGATTCTTCCAATGTCCTCTAA" + "TCCTCAGAACCATCTCCCCAGCATGATTTCCCCAAGACCATTTTTCTCAATGCCTTTCCGCGGGCTATACCAATGCCATG" + "TCTTTCCTGTCCGCCTGCCCCTCTCTTGCCAATGTGCTTTCCTCTCAGTGCTCTCTTTCCACCAAACCCAAACCCCTGAC" + "CCTATACTCTAACCCCTGCCTCTTCAGCGTTTTCTTCTCAACACCCAAAATCCATCCCTTCAACCTCTTGCTCCTTAACA" + "TTCCATCCTTCCAGCGTCTCCCTCTGGTACCTCATCCGTCACTCCATCCCTCAACAATCTCGTCCCCAACACCCGCTTCT" + "GCAGGTACGACCCGGACAGCGGGCACGACAGCGGTGCCGAGGATGCCACAGTGGAGGCGTCGCCACCCTTCGCTTTCCTA" + "ACCATTGGCATGGGCAAGATCCTGCTGGGGTCGGGGGCAAGCTCAAACGCAGGGCTGACAGGGAGGGATGGCCCCACAGC" + "CGGCTGCACAGTGCCCCTGCCACCCCGCCTGGGCATCTGCCTGGACTATGAGCGGGGCCGGGTTTCCTTCCTGGATGCTG" + "TTTCCTTCCGTGGGCTCTTGGAGTGCCCCCTGGACTGCTCAGGGCCTGTGTGCCCTGCCTTTTGCTTCATCGGGGGTGGC" + "GCAGTACAGCTCCAGGAGCCAGTGGGCACTAAGCCTGAGAGGAAAGTCACCATTGGGGGCTTCGCCAAGCTGGACTGAGC" + "CTTCCAGGCCCCTCATGCAGACCTGGGGTCCTCCTGGGCCCTGGCCCCCAAACCTCTTGGCACCCGGTTGTTACCCCCTG" + "GCAGCTTCTCCCCCAAACTCTCCTACCATGTGGCCCTGCTCCTTCTCCCGTGTCTGTCTTCCCACAGTTTTCTCTTGACC" + "CAGGGGCTCTCTTCTGCCCACCTCTCTGGATGGCCCCCGTTCTCTCCATTGCTTGTTAGCCAGGCCCCCACCCCCACTGA" + "GTCTGCCCTATGACCTGCCTTTGGCATGTTACCCAAGCCATGGAGAGAGCCCCTTCTCCATCCCTGTCCTGTGCCCCCCA" + "GGCTGATTGGGAGGGAGGGCACCTGGAACACTGGGCATGATCTCCAGCTCTGCCCTTGCCCTGCCAAGCTCCCTGCCCTG" + "TTGATGCTGAACTACAGCCTTGGGACAGGCAGGCTTTGGGGCTGGACGCTGTCCAGGCATTCCTGGTGAGGGGAAGGGGA" + "CCCTGTCATCCTGCTTTATTTATTTGGGTCCCAACACCCCGCAGCCGCATGCCCCTTATGTCCCTCTTCTCCCTCTTGCA" + "TGCTTTACCTGTCCCACACCCATGCCAATGTGCCAAGTCTCCCTTGGGGACCCAGCTGAGTCTGGGTGTTCCCATTGGGT" + "TGGGCCAGGCAAGGCCTCTGGTGCCCGCTGCCGTCCCCCTGCAGTGGGCTCTGCTAGGCCTGTGCTGAGCAACAGCTGTT" + "ATTGTCATGGTTTATAAACAATAAACTGTGATGCCAGGCACATCTCTGCCTTCCCTGAGCGCAATCATTCCTGTGAGTTT" + "CTGTGCTGGGTGTGGTAGGCGGGAGGGAGCAGGGTGCTAGGCTGTGGTTCTAGGCAGGAGCAACCAATGGATCTGGTGCC" + "TGAGAGAGGAAGGCCCCAGGCCAGGTGCTCTAAGCCTCCTGCCACACGTGTCCTGGCCCGGCCTGAGCGCATCACAGCTG" + "CCAGGGGACATAGCTCTCTGGCTGCTGGTGGCAGGCCCCAATCAGGGCTTCCAGGCCTGCAGCACAGGCCCTGGGGGAAT" + "GCGGTCAAGGGACAGGCAACGTGCCTGGGCCCAAAGGGGTCAGGGAACCAGAACCACTTCCCCATTCCCAGGGTGTTGTG" + "GAGCCCACCCCAGGGGCAGCAGGCTGGTGGGGCAGCCGGGGTCAGGGAGGGGGCTGGGCCTGGTGCCAGCGCCCGGATCT" + "GACCCAGCCTCTGCTTATCTCAACCCTGTTGACTCTGGGCTGTTATCACTGCCCAAGGATTTACTTCACACCCGGACAGC" + "TAAGAATAGAGCCACCTGGGGGGCACCATGCCAGGGGGCAAGGAGGGCGTGGGCCAGGCGAGGAGAGGGGAGAGCCACTG" + "GCACACAGAGCTCAGTCACGGAGCCCAGTCACGCTAGCCCTCCAAAGCCCGCCTGGGTTTCGTTTCCTCCTTCCTCTTGT" + "GCTGCCAGGGTTAGCCAGAGGTGGCTCCTCAGGCCACCCCTACTCCCCAATGTCACCTCCTCCTCACATCTCCTGCTTCT" + "CAAACAAACTCGCTCCTTACTGCCTCCTGGCCTCCCTGTCTCCTCCCCCAGCCCCCTCACACACATTCTGACCGCCCTGC" + "TGCCCACGGGTCACAGATGAAAGATCAGAAGTTGGCGCAGTGGGAGACCACGTTTTATTCAGTCCAGTTCAGGATCCCCG" + "CTATCTCAGGGCTCTCTGGGCCAGTCCTCCTGGGAGCCCCCACCACAACACTTCCCAGGCATGAGCCCTCAGGGGCCCAC" + "ATGAGCTTCCACACACTGAGAAGTGTCCGAGAAATTGGTGGGGCCTCTGAAGGAGGCTGTGAGCAGCCCACCTGAACTCC" + "CAGCTCACCAGCCCAAACAGGGTGCAGGGGCTCTGGCCCTGAAGAACCTGAGTGGAGTGGAATGGCACTGGCTGGCCACT" + "CAGCTCAGCGGGCGACGTGCCCCTACAAGTTGGCAGAAGTGGCTGCCACTGCTGGGTTTGTGTAAGAGAGGCTGCTGCCA" + "CCATTACCTGCAGAAACCTGGGTGGAAGGAAAAGAGATCCAGGGTGAGGAGCAAAAGGTACCTCCTAGAGCCCCTGGATG" + "CCACCCCAGGCTGGGGTAATCAGTCCAGAGTCCTGGCCAGCTCTCAAAGGGTTAATTCAGAGAGAGCACCTGCCACCCCA" + "CCAGCCAGGTGACTGTAAACAGGGCTGCCCTCCTCCCTCTGCTCTCCTTCACTCCCTCTTCTTGGCTCTAATCAGCCCCC" + "TTGTCCCTCCATTCTCTGCTGTTCCAGCCTAAGGAGGTGTGTGTGTGTGTGTGTGTGTGTTTTGGGGGGCGGGGTGTATC" + "TGTGTCTTTGTAAAGCCGAGAGAGGGAGGTCTCCAGGAGGAGGAAAATAGGAGCAAGAAAACTAAACTCTCTCCTCCCCC" + "ACCTGGAGTGGTTTTCCAGCCTCAGGTGGCTGCAGTAATTATTTACTAGGTCCCATAGAGAAAGACCAGGAGAGGAAGGA" + "GGGAGCGTTCCTTGCTTCCTTGAAGCTCCCAAGAACCCCACTGGCACCCACGCTCACCTGGTCTGCTGACACTTCTTCTT" + "CTACCTGGGAAACCTCCCCCTATGCCAGCCTTTCTCGGTCTACCCTCCATTCCTAGGAGATGATTAGGGGCACAGAGGCT" + "CACCCCTGGGACTCCTCGGGAAGGGCTCCCCTGGGCATAGTGCTCCACCCATTTTGCCTCTGGGTGCAAAAAAGCAAAAC" + "AAAACAAAACTGCCACGGTGGCACCAGTTCAGCCAGCGCCAGCCAGCATGAATGTGGACGGCCAATGATCTTTTAGGAAT" + "TCTGGCAGTGGGGCCACTCCCTCTTGAGGGCCCCTTTCTTCCATAGTCTCCTCCCAGGCCTGTCCCCCAAAACTCCTCTG" + "ACCTCTGCCCCTCATCCTTGCCAGGCCCTCCCCTGCTCACTTCACGCCACTTCTCACCTCTTCCAAGCTCTTTGGGTTTT" + "CCAAGTACCCCCTTCAGAATCCTTGCCCAGCCAAACCCTCTGCTTCCCCTGGCCTGTGGGGCCCAATCTCACCTTCTCAT" + "AGGGGCTACGATCGGTACTGCTAGGGGGCACATAGCGCCCATGGGTGTGGTAGGTGGGGTACTCGCTCATAGGATGGTAG" + "GTATCCCGGGCTGGAAAGATGTCCAGCTGCCCGTAGTTCTTTCGGCGGCACTGACAGACAGCCTGGGGAGATAGGAGGTT" + "ATGGCAGGCCATGGAGTGCCTTCTACCGGGGGGCTCTGATCAGGGCCAGGGACTGCACTCACCAAGGCAATGAGATAGAC" + "AATGGCCAGCGCAACCAGAACACAGACCAGCACCAGCAGCGCGATGCCCCAGCCTGGCACCCCAGCCCCAGACTGGGCAG" + "AGAAAGGAAATGGCACATCACTCACTAAAAGGAAAAGCAGTGGTCAGGGCAGTCTCCCAGAGGAGGCGCCCCTCCCGCTG" + "CCAGCACTAAGGAAAGAGCGGGGACCCAGACACTGGAAGGAGAGGGGCCCCGGCATGGTGCTGGGCTGCAGCCAGGGAAG" + "TAGCCTCACCGCTGACGTCTGAGATCGTCAGGTTATATCGAGAGGCTGCTTCCGTTTTATACTGATTGAACTGTGTCTCC" + "ACGTCGTGGACATTGATGGTACCTTCTCGGAAGGCCAGAGTCAATTGTACCACCACAGATCCTGGCCTGGTCACAGGGAA" + "ATGGGCACTTCAGCCACGGGTCCCAGCTCTGGCTCAGCACTCTTCCCCCAACCTTAAGTGCACCAGTCCCTCCCTACGGT" + "CATGACCACCACCCACCCTCCAACCACCACACTGGGTCCACACCCAGAACTGTACCTGAACTTAATATTGGAGAGGCCCA" + "GAAAACCCCCTTGTTTATAAATCTGCAAAAACTGGGGTGAGAGGGAAAGGACTCAGGCTTGATGCAAAGGGTGTGGACAG" + "TTCTGATGGCTGCTTCAGGGGAGCATGGGGAAGGAAAGGCCGATACTCACCATTTCAGAAATGTCTCTCTGCAGCTCTTG" + "GTAGTAGTCGGTGCTGGGATCTTCCAGAGAGGAATTAAACTGGAGGTTTGAAATGTGAAAAGACAGGAAAAAGAAAGAGA" + "CCCCAGTAGACAACTGGGGAGAAGTGCTGTGATTGGAGGAGGTGAGAGGAGGTACCGTGCTATGGTGAGTGCTACTGGCA" + "TCAGTCTTGGTGCTATGGCTGGCAAGGGTGGTAGGAGTATCAGAGTGGTGGCTGGGAATTGAGAATGGAGTGCTCTTGCT" + "GGCTGGGGTTGTGGTAGCCCTGGCAGAGGTGCCGTTGTGCACCAGAGTAGAAGCTGAGCCTGATGCAGAGCCTGAGGCCG" + "AGGTGACATTGTGGACTGGAGGGGCGGTGGAGCCCAAGGCGGGCCTGTTGTCCGGGGCCGAGGTGACACCATGGGCTGGG" + "GGGGCGGTGGAGCCCGGGGCCGGCCTGGTGTCCGGGGCCGAGGTGACACCGTGGGCTGGGGGGGCGGTGGAGCCCGGGGC"; List<String> features = BlatClient.blat(org, db, userSeq); // We can't really assert a specific size as the blat server could get updated. However it should have // several results assertTrue(features.size() > 1); } }