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
