Hi all,

I've tried to recreate a simple query done in biomart.org's own MartView
using the new SOAP services. Here is my Unit Test method where I've done the
query:

public class TestClass {

    MartServiceSoap client;

    @Before
    public void setUp() {
        // the JaxWsProxyFactoryBean method of getting the client doesn't
work. While the interceptors work and are
        // clearly getting the right sort of response from the biomart
service, the getRegistry() calls and similar
        // don't work properly.
        BioMartSoapService biomartService = new BioMartSoapService();
        client = biomartService.getBioMartSoapPort();

    }

    /**
     * Test the XML-equivalent query:
     * <?xml version="1.0" encoding="UTF-8"?>
     * <!DOCTYPE Query>
     * <Query  virtualSchemaName = "default" formatter = "TSV" header = "0"
uniqueRows = "0" count = "" datasetConfigVersion = "0.5" >
     * <p/>
     * <Dataset name = "uniprot" interface = "default" >
     * <Filter name = "gene_name" value = "cdc13"/>
     * <Attribute name = "go_id" />
     * <Attribute name = "go_name" />
     * </Dataset>
     * </Query>
     */
    @Test
    public void GoFromUniProtTest() throws BioMartException_Exception {

        Filter filter = new Filter();
        filter.setName( "gene_name" );
        filter.setValue( "cdc13" );

        Attribute a1 = new Attribute();
        a1.setName( "go_id" );
        Attribute a2 = new Attribute();
        a2.setName( "go_name" );

        Dataset dataset = new Dataset();
        dataset.setName( "uniprot" );
        dataset.getFilter().add( filter );
        dataset.getAttribute().add( a1 );
        dataset.getAttribute().add( a2 );
        List<String> results =
                client.query( "default", 0, 1, 0, new ArrayList<Dataset>(
Arrays.asList( dataset ) ) );
        int iii = 0;
        for ( String result : results ) {
            System.err.println( "result: " + iii++ + " " + result );
        }
    }
}

I have done this test twice, once with count set to 0 (to return actual
results) and once with count set to 1, to see how many results we'd get. In
the MartView, there are 50 results. Here is the output when count == 0:

result: 0
result: 1
result: 2
result: 3
result: 4
result: 5
result: 6
result: 7
result: 8
result: 9
result: 10
result: 11
result: 12
result: 13
result: 14
result: 15
result: 16
result: 17
result: 18
result: 19
result: 20
result: 21
result: 22
result: 23
result: 24
result: 25
result: 26
result: 27
result: 28
result: 29
result: 30
result: 31
result: 32
result: 33
result: 34
result: 35
result: 36
result: 37
result: 38
result: 39
result: 40
result: 41
result: 42
result: 43
result: 44
result: 45
result: 46
result: 47
result: 48
result: 49
result: 50
result: 51
result: 52
result: 53
result: 54
result: 55
result: 56
result: 57
result: 58
result: 59
result: 60
result: 61
result: 62
result: 63
result: 64
result: 65
result: 66

As you can see, there are only empty strings in the results, and yet there
are 66 empty strings. How am I misinterpreting the return value of the
query? Also, why is the size of the results List 66, when martview returns
50?

When I run with count == 1, I get the following result:
result: 0 2

This means there was only one item in the list, which contained the string
value "2". This implies that there are only 2 results for this query, when
martview says there are 50.

I am confused! Martview says the query has 50 results, and provides those
results. MartSoap says there are 66 (or 2!) but cannot display any of those
results.

Please let me know what I'm doing wrong!

-- 

Allyson Lister
http://lurena.vox.com

CISBAN, http://www.cisban.ac.uk
Newcastle University

Reply via email to