2009/1/26 Damian Smedley <[email protected]>

> Allyson Lister wrote:
>
>> Hi Syed,
>>
>> I think there are two points here:
>>
>>   1. There is a bug with biomart, irrespective of how you query
>>      against it (soapUI, martview, Apache CXF). You've shown it in
>>      the previous email you sent: the response to my query contains
>>      multiple result rows that all share the same GO ID, even though
>>      the GO Name is different. For example,
>>
>>  This one is my fault (see the previous email). The GO ID and description
> are coming from different tables thanks to a mistake in the old uniprot
> prototype configuration so what you are seeing is the combatorial join and
> is very confusing I agree! Easily fixed if someone has access to that mart's
> config still.


Thanks, Damian! Well, since Jie says it will only be a week or so until the
new uniprot mart, perhaps it is just as easy to wait for that, rather than
try to fix the old one? I don't want to make life too difficult for people
:)

thanks!
Allyson

>
>
>    1. <resultsRow>
>>                <go_id xsi:type="xsd:string" modelReference="">GO
>>      ID(s)</go_id>
>>                <go_name xsi:type="xsd:string" modelReference="">GO
>>      Description</go_name>
>>             </resultsRow>
>>             <resultsRow>
>>                <go_id xsi:type="xsd:string"
>>      modelReference="">GO:0007049</go_id>
>>                <go_name xsi:type="xsd:string" modelReference="">cell
>>      cycle</go_name>
>>             </resultsRow>
>>             <resultsRow>
>>                <go_id xsi:type="xsd:string"
>>      modelReference="">GO:0007049</go_id>
>>                <go_name xsi:type="xsd:string"
>>      modelReference="">physiological process</go_name>
>>             </resultsRow>
>>      This simply doesn't make sense, especially as how the results
>>      (GO IDs) change if you don't ask to have the go_name attribute
>>      returned. Somewhere, there is an error in the methods being
>>      called. Perhaps this isn't a problem with biomart, but with
>>      whoever authored the uniprot mart. However, it is not a correct
>>      return type. Being able to access an up-to-date mart instance of
>>      uniprot might help resolve this issue.
>>   2. The soap client I'm using is NOT one I've written - it is
>>
>>      autogenerated, via Apache CXF (a freely-available, widely-used
>>      SOAP app). Therefore *anyone* who may wish to use the Biomart
>>      SOAP instance you have via Apache CXF's wsdl2java feature *will*
>>      run into exactly the same problem. I think the problem may stem
>>      from the following part of martxsd:
>>          <xs:element name="queryResponse">
>>              <xs:complexType>
>>                  <xs:sequence>
>>                      <xs:element minOccurs="0"
>>                                  maxOccurs="unbounded"
>>                                  name="resultsRow"
>>                                  type="xs:string"/>
>>                  </xs:sequence>
>>              </xs:complexType>
>>          </xs:element>
>>      This states that the query response will always be a sequence of
>>      xs:string, or in Java, a List<String>. This does not allow for
>>      the varied types of responses one can get based on the
>>      attributes of the query that they've written. Therefore I think
>>      that the java code is trying to fit in the response (such as the
>>      one Syed showed and which I copied a portion of into #1 above)
>>      into a sequence of xs:string, and this just isn't working. I can
>>      create an empty maven project that builds the Java code and runs
>>      the unit tests if it would help - then you could download that
>>      project, and just run it on your own system to see what the
>>      problem is and possible ways of resolving it. Perhaps there is
>>      some way to change the queryResponse? Because, as it stands, how
>>      does the queryResponse element above match the actual response
>>      given by the soap UI?
>>
>> Thanks very much! :)
>>
>>
>>
>> 2009/1/24 Syed Haider <[email protected] <mailto:[email protected]>>
>>
>>    Hi Allyson,
>>    Just tried your query on SoapUI, works fine. The count is correct
>>    too, it returns 2.
>>    2 means  there are two gene names (cdc13 and CDC13) in UNIPROT
>>    PROTOTYPE mart and the number of result rows are ~60 because of GO
>>    IDs attributes selection which makes the result set with all the
>>    GO IDs against the said gene names. Unfortunately, I cant be of
>>    any help on your Soap client why its misbehaving, somebody from
>>    list please ????
>>
>>    Hope this helps a bit,
>>    Syed
>>
>>
>>    Allyson Lister wrote:
>>
>>        Hi all,
>>
>>        I've tried to recreate a simple query done in biomart.org
>>        <http://biomart.org> <http://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
>>
>>
>>
>>
>> --
>>
>> Allyson Lister
>> http://lurena.vox.com
>>
>> CISBAN, http://www.cisban.ac.uk
>> Newcastle University
>>
>
>


-- 

Allyson Lister
http://lurena.vox.com

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

Reply via email to