From simont at mcw.edu Fri Dec 5 14:47:04 2003 From: simont at mcw.edu (Simon Twigger) Date: Sat Dec 6 12:43:41 2003 Subject: [MOBY-l] Services on MOBYClient Message-ID: Hi there, I've been using Ken's MobyEd examples to get a service up and running (the docs were very useful, thanks) and all seems to be well. It takes a Global_Keyword and looks at the list of genes in RGD and if that gene is in RGD returns a String containing the official symbol and cross reference data (currently only PMIDs). This is a marginally useful service that Im using as a test case. Sample output for comments/vetting. I ran a query using 'Atp1a1', the service ('keywordToGene') returned the following Atp1a1 I can register the service and it appears on Ken's list_services.cgi, however, it doesnt seem to appear on the MOBYClient when I select Global_Keyword as an input. I was wondering if the Client is either (a) still looking live at services on MOBY-Central and my service registration isnt working as it should, or (b) new services dont appear by default (not a bad idea given how crowded things get as people test things) and so it will not appear simply by registering at MOBY-Central. Does anyone have any suggestions? Cheers, Simon. ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: text/enriched Size: 2193 bytes Desc: not available Url : http://portal.open-bio.org/pipermail/moby-l/attachments/20031205/c6205679/attachment.bin From markw at illuminae.com Mon Dec 8 12:57:19 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 8 13:03:49 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: References: Message-ID: <1070906239.1718.0.camel@localhost.localdomain> What was your registration code/XML - your service is registered as consuming "Object" rather than "Global_Keyword"... probably why you can't discover it in your search. M On Fri, 2003-12-05 at 13:47, Simon Twigger wrote: > Hi there, > > I've been using Ken's MobyEd examples to get a service up and > running(the docs were very useful, thanks) and all seems to be well. > It takesa Global_Keyword and looks at the list of genes in RGD and if > thatgene is in RGD returns a String containing the official symbol > andcross reference data (currently only PMIDs). This is a > marginallyuseful service that Im using as a test case. > > Sample output for comments/vetting. I ran a query using 'Atp1a1', > theservice ('keywordToGene') returned the following > > > > > > > moby:id="Atp1a1"moby:articleName="geneSymbol"> > Atp1a1 > > > > > > > > > > > > I can register the service and it appears on Ken's > list_services.cgi,however, it doesnt seem to appear on the MOBYClient > when I selectGlobal_Keyword as an input. I was wondering if the Client > is either(a) still looking live at services on MOBY-Central and my > serviceregistration isnt working as it should, or (b) new services > dontappear by default (not a bad idea given how crowded things get > aspeople test things) and so it will not appear simply by registering > atMOBY-Central. > > Does anyone have any suggestions? > > Cheers, > > Simon. > > -------------------------------------------------------------------------------------------------- > Simon Twigger, Ph.D. > Assistant Professor, Bioinformatics Research Center > > Medical College of Wisconsin > 8701 Watertown Plank Road, > Milwaukee, WI, 53226 > tel. 414-456-8802, fax 414-456-6595 > > ______________________________________________________________________ > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From simont at mcw.edu Mon Dec 8 13:15:07 2003 From: simont at mcw.edu (Simon Twigger) Date: Mon Dec 8 13:18:01 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <1070906239.1718.0.camel@localhost.localdomain> Message-ID: <744D3833-29AA-11D8-9393-0003933D1DD8@mcw.edu> Hi Mark, I think registration was partly to blame. However, even once it did appear it didnt actually work - the result screen would come back empty - it didnt say 'Nothing found' it just had no result listed but it knew the result was a string because it listed services that could be used in subsequent steps. Perhaps a Client issue? I managed to get it working by looking at the response XML from working services and copying them. I'm currently registering it as consuming Objects and returning strings and that seemed to make it appear on the Client. To make it actually work properly I seemed to have to take out all the 'moby:' prefixes on the XML, now it seems to run in the client and the cross references come up as expected and link to the right places. try using 'A2m' as a search. Now I have it working I'll clean it up, register it as taking in Global_Keyword and add in some more content to the cross references. I'll also look into the moby: tag issue to see if that was really the problem or just my imagination. Simon. On Monday, Dec 8, 2003, at 11:57 America/Chicago, Mark Wilkinson wrote: > What was your registration code/XML - your service is registered as > consuming "Object" rather than "Global_Keyword"... probably why you > can't discover it in your search. > > M > > > On Fri, 2003-12-05 at 13:47, Simon Twigger wrote: >> Hi there, >> >> I've been using Ken's MobyEd examples to get a service up and >> running(the docs were very useful, thanks) and all seems to be well. >> It takesa Global_Keyword and looks at the list of genes in RGD and if >> thatgene is in RGD returns a String containing the official symbol >> andcross reference data (currently only PMIDs). This is a >> marginallyuseful service that Im using as a test case. >> >> Sample output for comments/vetting. I ran a query using 'Atp1a1', >> theservice ('keywordToGene') returned the following >> >> >> >> >> >> >> > moby:id="Atp1a1"moby:articleName="geneSymbol"> >> Atp1a1 >> >> >> >> >> >> >> >> >> >> >> >> I can register the service and it appears on Ken's >> list_services.cgi,however, it doesnt seem to appear on the MOBYClient >> when I selectGlobal_Keyword as an input. I was wondering if the Client >> is either(a) still looking live at services on MOBY-Central and my >> serviceregistration isnt working as it should, or (b) new services >> dontappear by default (not a bad idea given how crowded things get >> aspeople test things) and so it will not appear simply by registering >> atMOBY-Central. >> >> Does anyone have any suggestions? >> >> Cheers, >> >> Simon. >> >> ---------------------------------------------------------------------- >> ---------------------------- >> Simon Twigger, Ph.D. >> Assistant Professor, Bioinformatics Research Center >> >> Medical College of Wisconsin >> 8701 Watertown Plank Road, >> Milwaukee, WI, 53226 >> tel. 414-456-8802, fax 414-456-6595 >> >> ______________________________________________________________________ >> _______________________________________________ >> moby-l mailing list >> moby-l@biomoby.org >> http://biomoby.org/mailman/listinfo/moby-l > -- > Mark Wilkinson > Illuminae > > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > > ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From mwilkinson at mobile.rogers.com Mon Dec 8 14:16:15 2003 From: mwilkinson at mobile.rogers.com (mwilkinson) Date: Mon Dec 8 13:32:54 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient Message-ID: <200312081832.hB8IWqFC032609@portal.open-bio.org> Hi simon, You're right - my last message made no sense at all. Please send whatever code you used/are using and any parameters you are filling in so that I can explore what is going wrong. Cheers! M From markw at illuminae.com Mon Dec 8 14:51:27 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 8 15:11:35 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: References: Message-ID: <1070913086.1964.30.camel@localhost.localdomain> On Mon, 2003-12-08 at 13:13, Simon Twigger wrote: > sub register_service { > my $C = shift; > my $reg = $C->registerService( > serviceName => 'keywordToGene', > authURI => $authURI, > contactEmail => $email, > description => "Test service: matches gene symbol to RGD gene > record, if available", > URL => $url, > input => [ ['', [Object => []]], ], Should be: input => [ ['', [Object => ['Global_Keyword']]], ], > output => [ ['', [String => ['RGD']]], ], > category => "moby", > serviceType => "Retrieval", > ); ... more about this service later... > If you try and register Global_Keyword instead of Object for the input, > the service vanishes from the client even if you say you have a > Global_Keyword as the seed. In fact, registration should probably fail in that case since (contrary to what I said in my last message) Global_Keyword is a namespace, not an object type, so it shouldn't even successfully register. about the service itself: I'm still confused about what the service does... it consumes a "keyword" gene identifier, and returns a string containing the same gene identifier plus a bunch of cross-references... is that the intention? If so, they why is it consuming "Global_Keyword"? Gene identifiers are not really keywords (per se), or at least not the way you are implying that they be used. For example, I executed your service using "kinase" and got nothing, but I executed it using A2m and got the locus. If it were really a keyword lookup, I think I would have expected a return from "kinase". As it is, you are calling RGD ID's "keywords" and thus taking all of the semantic meaning out of them. ??? I guess this is just a test service, but I'm concerned... M From simont at mcw.edu Mon Dec 8 16:47:33 2003 From: simont at mcw.edu (Simon Twigger) Date: Mon Dec 8 16:50:26 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <1070913086.1964.30.camel@localhost.localdomain> Message-ID: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> On Monday, Dec 8, 2003, at 13:51 America/Chicago, Mark Wilkinson wrote: > On Mon, 2003-12-08 at 13:13, Simon Twigger wrote: > >> sub register_service { >> my $C = shift; >> my $reg = $C->registerService( >> serviceName => 'keywordToGene', >> authURI => $authURI, >> contactEmail => $email, >> description => "Test service: matches gene symbol to RGD gene >> record, if available", >> URL => $url, >> input => [ ['', [Object => []]], ], > > Should be: input => [ ['', [Object => ['Global_Keyword']]], > ], I'll give that a go. > > In fact, registration should probably fail in that case since (contrary > to what I said in my last message) Global_Keyword is a namespace, not > an > object type, so it shouldn't even successfully register. I wondered about this too but when you look at the Object list (http://mobycentral.cbr.nrc.ca/cgi-bin/types/Objects) Global_Keyword is also listed there as an Object which was why I was trying to do it that way. > about the service itself: > > I'm still confused about what the service does... it consumes a > "keyword" gene > identifier, and returns a string containing the same gene identifier > plus a bunch > of cross-references... is that the intention? Not really, it should take a broader range of inputs and not just regurgitate what you put in with a little bit more info. Though, if one went with the idea of extending the objects like we have in sequence - VirtualGene, GenericGene, FullyAnnotatedGene, etc. (going from bare minimum info - symbol, name and ID to every annotation under the sun) this might have a use. > If so, they why is it consuming > "Global_Keyword"? Gene identifiers are not really keywords (per se), > or at least > not the way you are implying that they be used. Mentally I tend to distinguish identifiers from symbols which perhaps colors my thinking - For me, Identifiers are stable accession numbers, id numbers, etc. (eg RGD:12345), symbols are much less stable and are closer to a keyword than anything else. > For example, I executed your > service using "kinase" and got nothing, but I executed it using A2m > and got > the locus. If it were really a keyword lookup, I think I would have > expected > a return from "kinase". As it is, you are calling RGD ID's "keywords" > and thus > taking all of the semantic meaning out of them This is a test and it just does an absolute match on the query word which isnt what you'd really want. I was trying to build anything that worked and this was just where I started. In retrospect this service might serve the purpose of answering 'do you have any gene records in RGD that match this string?'. You'd input a String object and look for matches in Symbols, Aliases, Gene Names, etc and return a list of matching up to date RGD gene symbols. The symbol(s) returned would be the current correct nomenclature along with associated cross references for you to move on with. This is like doing a search on the Gene table on RGD where you can put in 'kinase' and get back anything with kinase in the name. Though this then opens up a can of worms - should I check to see if Kinase is a GO term and then search on the GO annotations as well, just to be complete - not every kinase has 'kinase' in the name. There is a danger of biting off too much in one go and I would opt for breaking this up into multiple services that could wrapped up and called as an uber-service (that hopefully ran the various searches in parallel before merging at the end). I think my original thought process was that a keyword is just one word as opposed to a String which is potentially a phrase and I was looking to limit what went in. This could be used as a nomenclature server for example - you enter a gene symbol (always one word) and get back the current approved symbol. There are obviously other ways to do this and getting the correct meaning behind each input is important for consistency. Simon. ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From markw at illuminae.com Mon Dec 8 18:24:03 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 8 19:28:31 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> References: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> Message-ID: <1070925842.1966.103.camel@localhost.localdomain> On Mon, 2003-12-08 at 15:47, Simon Twigger wrote: Hey Simon! thanks for your patience! > I wondered about this too but when you look at the Object list > (http://mobycentral.cbr.nrc.ca/cgi-bin/types/Objects) Global_Keyword is > also listed there as an Object which was why I was trying to do it that > way. Is it?!? Good heavens... someone is due for a good spanking! ;-) > Not really, it should take a broader range of inputs and not just > regurgitate what you put in with a little bit more info. Though, if one > went with the idea of extending the objects like we have in sequence - > VirtualGene, GenericGene, FullyAnnotatedGene, etc. (going from bare > minimum info - symbol, name and ID to every annotation under the sun) > this might have a use. Yup - I think this is the way to go. There's nothing wrong with what you are doing **at all**. Passing in a gene ID and returning that gene ID with a bunch of cross-references is a legitimate and useful service... I just didn't understand why you were outputting a string. The alternative - if you find that you really are just regurgitating the input, is to output a collection of Object's representing what you currently output as CrossRef's. That would be an equivalent service. > Mentally I tend to distinguish identifiers from symbols which perhaps > colors my thinking - For me, Identifiers are stable accession numbers, > id numbers, etc. (eg RGD:12345), symbols are much less stable and are > closer to a keyword than anything else. I think in the context of genetics a gene name (e.g. CDC25) is acting as an identifier... this is certainly how we identify genes in publications (barring the problem of multiple names for genes). My loci in DragonDB (an AceDB instance) use the Gene Name as the primary key for the record, so for me it is absolutely acting as an identifier :-) > There is a danger of biting off too much in one go and I would opt for > breaking this up into multiple services that could wrapped up and > called as an uber-service (that hopefully ran the various searches in > parallel before merging at the end). I'm starting to worry about the wisdom of the Global_Keyword namespace at all... but keyword searches are *so* common! It just tempts people to create peculiar services... If you do a registry query for services that consume Global_Keyword right now you end up with a surprisingly large number of them already, and the registry is still quite small! Moreover, most of them are completely useless w.r.t. the keyword that you have in your hand at that moment! The problem is that these kinds of services have very little semantic information, since a keyword lacks semantic information... I can see the usefulness of doing keyword searches on GO, and on PubMed, but in many cases it doesn't seem so useful... Anyway, it's a public registry :-) People will register whatever they like, at the end of the day! M From simont at mcw.edu Mon Dec 8 14:13:54 2003 From: simont at mcw.edu (Simon Twigger) Date: Fri Dec 19 09:59:00 2003 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <200312081826.hB8IQjn14146@post.its.mcw.edu> Message-ID: Here's the registration code: my $authURI = 'sirius.brc.mcw.edu'; my $email = 'simont@mcw.edu'; my $url = 'http://sirius.brc.mcw.edu/cgi-bin/MobyEd_dispatcher.cgi'; use MOBY::Client::Central; use MOBY::Client::Service; my $Central = MOBY::Client::Central->new(); ®ister_service($Central); exit(0); # End of main ######################################################################## # # Register the service ######################################################################## # sub register_service { my $C = shift; my $reg = $C->registerService( serviceName => 'keywordToGene', authURI => $authURI, contactEmail => $email, description => "Test service: matches gene symbol to RGD gene record, if available", URL => $url, input => [ ['', [Object => []]], ], output => [ ['', [String => ['RGD']]], ], category => "moby", serviceType => "Retrieval", ); die "Bad return value from registerService" unless $reg; if ($reg->success == 1){ print "Registration successful\n\n"; } else { print "Registration failed: ", $reg->message, "\n"; } } If you try and register Global_Keyword instead of Object for the input, the service vanishes from the client even if you say you have a Global_Keyword as the seed. You'd think that as Global_Keyword ISA Object that this really shouldn't make a difference, unless Im missing something from the registration process. I've attached the service's .pm file. Ken's original test_SequenceToFASTA subroutine is at the top, the rest is code for the keywordToGene service. -------------- next part -------------- A non-text attachment was scrubbed... Name: MobyEd_services.pm Type: application/text Size: 5423 bytes Desc: not available Url : http://portal.open-bio.org/pipermail/moby-l/attachments/20031208/62465e2b/MobyEd_services.bin -------------- next part -------------- Simon. On Monday, Dec 8, 2003, at 13:16 America/Chicago, mwilkinson wrote: > Hi simon, > > You're right - my last message made no sense at all. > > Please send whatever code you used/are using and any parameters you > are filling in so that I can explore what is going wrong. > > Cheers! > > M > > ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From michael at acutrans.net Thu Dec 18 17:58:27 2003 From: michael at acutrans.net (Michael Jensen) Date: Fri Dec 19 09:59:01 2003 Subject: [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby Message-ID: These perl modules have been great for not having to mess with the underlying protocols like SOAP. One question I have is where does UDDI and WSDL fit in (if at all) and exactly where and when are they being used, say for instance I am using this script for finding all the services: use MOBY::Client::Central; my $Central = MOBY::Client::Central->new(); my $types = $Central->retrieveServiceTypes(); print "Description of types of services\n\n"; foreach my $type (keys %{ $types} ) { print "Type: ", $type, " Description: ", $$types{$type}, "\n"; my ($ServiceInstances, $RegObject) = $Central->findService(serviceType => $type); next if (not $ServiceInstances); foreach my $ServiceInstance (@{ $ServiceInstances } ){ print "\t", $ServiceInstance->name; print " (", $ServiceInstance->authority, ")"; print "\n\t", $ServiceInstance->description, "\n"; } } (Found at: http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- sol.html) Any resources, explanations, etc. would be greatly appreciated. Thanks! -Michael mdjgf8@mizzou.edu -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: text/enriched Size: 1181 bytes Desc: not available Url : http://portal.open-bio.org/pipermail/moby-l/attachments/20031218/979c47ba/attachment.bin From markw at illuminae.com Fri Dec 19 09:58:30 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Fri Dec 19 10:08:27 2003 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: References: Message-ID: <1071845909.2128.10.camel@localhost.localdomain> Hi Michael, It's hard to answer your question given the code below, since you don't actually access a service anywhere in that code :-) For a variety of historical and other reasons, MOBY-S does not use UDDI as its registry - we have our own registry system called MOBY Central. There are people in the project who are considering whether it is practical/possible/desirable to port MOBY Central over to an underlying UDDI registry API, but that is not a high priority. MOBY-S does use WSDL... sort of... If you pursued your code for the next 5 or 6 lines you would make a call to retrieveService($ServiceInstance), and this returns a WSDL-compatible document which can be used to make client-side stubs to connect to the service. This document, however, *does not* describe the actual message structure, since this cannot be predicted a priori (there is a lot of discussion about this in various places - just browse through the docs). As such, it is not a 100% valid WSDL document, but it can be consumed by WSDL parsers - certainly SOAP::Lite happily consumes it, and I believe the Java libraries also do (Martin? Heiko?) in order to create objects representing SOAP connections. the next line in your code would be $s = MOBY::Service->new($wsdl); where you use the WSDL from the retrieveService call to create a service connection, and then $s->execute(...input data here...) M On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: > These perl modules have been great for not having to mess with > theunderlying protocols like SOAP. One question I have is where does > UDDIand WSDL fit in (if at all) and exactly where and when are they > beingused, say for instance I am using this script for finding all > theservices: > > useMOBY::Client::Central; > my $Central = MOBY::Client::Central->new(); > my $types = $Central->retrieveServiceTypes(); > print "Description of types of services\n\n"; > foreach my $type (keys %{ $types} ) { > print "Type: ", $type, " Description: ", $$types{$type}, "\n"; > my ($ServiceInstances, $RegObject) > =$Central->findService(serviceType => $type); > next if (not $ServiceInstances); > foreach my $ServiceInstance (@{ $ServiceInstances } ){ > print "\t", $ServiceInstance->name; > print " (", $ServiceInstance->authority, ")"; > print "\n\t", $ServiceInstance->description, "\n"; > } > } > > (Found > at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl-sol.html) > > Any resources, explanations, etc. would be greatly appreciated. > Thanks! > > -Michael > mdjgf8@mizzou.edu > > ______________________________________________________________________ > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From michael at acutrans.net Fri Dec 19 11:55:33 2003 From: michael at acutrans.net (Michael Jensen) Date: Fri Dec 19 12:01:33 2003 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: <1071845909.2128.10.camel@localhost.localdomain> References: <1071845909.2128.10.camel@localhost.localdomain> Message-ID: <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> Thank you! Very helpful. So if MOBY Central is used then, what is it based on? RDF? Or is it just something put together? Thanks! -Michael On Dec 19, 2003, at 8:58 AM, Mark Wilkinson wrote: > Hi Michael, > > It's hard to answer your question given the code below, since you don't > actually access a service anywhere in that code :-) > > For a variety of historical and other reasons, MOBY-S does not use UDDI > as its registry - we have our own registry system called MOBY Central. > There are people in the project who are considering whether it is > practical/possible/desirable to port MOBY Central over to an underlying > UDDI registry API, but that is not a high priority. > > MOBY-S does use WSDL... sort of... If you pursued your code for the > next > 5 or 6 lines you would make a call to > retrieveService($ServiceInstance), > and this returns a WSDL-compatible document which can be used to make > client-side stubs to connect to the service. This document, however, > *does not* describe the actual message structure, since this cannot be > predicted a priori (there is a lot of discussion about this in various > places - just browse through the docs). As such, it is not a 100% > valid > WSDL document, but it can be consumed by WSDL parsers - certainly > SOAP::Lite happily consumes it, and I believe the Java libraries also > do > (Martin? Heiko?) in order to create objects representing SOAP > connections. > > the next line in your code would be $s = MOBY::Service->new($wsdl); > where you use the WSDL from the retrieveService call to create a > service > connection, and then $s->execute(...input data here...) > > M > > > > On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: >> These perl modules have been great for not having to mess with >> theunderlying protocols like SOAP. One question I have is where does >> UDDIand WSDL fit in (if at all) and exactly where and when are they >> beingused, say for instance I am using this script for finding all >> theservices: >> >> useMOBY::Client::Central; >> my $Central = MOBY::Client::Central->new(); >> my $types = $Central->retrieveServiceTypes(); >> print "Description of types of services\n\n"; >> foreach my $type (keys %{ $types} ) { >> print "Type: ", $type, " Description: ", $$types{$type}, "\n"; >> my ($ServiceInstances, $RegObject) >> =$Central->findService(serviceType => $type); >> next if (not $ServiceInstances); >> foreach my $ServiceInstance (@{ $ServiceInstances } ){ >> print "\t", $ServiceInstance->name; >> print " (", $ServiceInstance->authority, ")"; >> print "\n\t", $ServiceInstance->description, "\n"; >> } >> } >> >> (Found >> at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- >> sol.html) >> >> Any resources, explanations, etc. would be greatly appreciated. >> Thanks! >> >> -Michael >> mdjgf8@mizzou.edu >> >> ______________________________________________________________________ >> _______________________________________________ >> moby-l mailing list >> moby-l@biomoby.org >> http://biomoby.org/mailman/listinfo/moby-l > -- > Mark Wilkinson > Illuminae > > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > From markw at illuminae.com Fri Dec 19 11:57:11 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Fri Dec 19 12:07:13 2003 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> References: <1071845909.2128.10.camel@localhost.localdomain> <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> Message-ID: <1071853031.2501.11.camel@localhost.localdomain> :-) ...ahem... "just" something put together, yes... though you have correctly predicted that the next major iteration of MOBY Central is going to attempt to represent/serve the same information from an underlying RDF store, rather than a relational DB. M On Fri, 2003-12-19 at 10:55, Michael Jensen wrote: > Thank you! Very helpful. > > So if MOBY Central is used then, what is it based on? RDF? Or is it > just something put together? > > Thanks! > > -Michael > > > On Dec 19, 2003, at 8:58 AM, Mark Wilkinson wrote: > > > Hi Michael, > > > > It's hard to answer your question given the code below, since you don't > > actually access a service anywhere in that code :-) > > > > For a variety of historical and other reasons, MOBY-S does not use UDDI > > as its registry - we have our own registry system called MOBY Central. > > There are people in the project who are considering whether it is > > practical/possible/desirable to port MOBY Central over to an underlying > > UDDI registry API, but that is not a high priority. > > > > MOBY-S does use WSDL... sort of... If you pursued your code for the > > next > > 5 or 6 lines you would make a call to > > retrieveService($ServiceInstance), > > and this returns a WSDL-compatible document which can be used to make > > client-side stubs to connect to the service. This document, however, > > *does not* describe the actual message structure, since this cannot be > > predicted a priori (there is a lot of discussion about this in various > > places - just browse through the docs). As such, it is not a 100% > > valid > > WSDL document, but it can be consumed by WSDL parsers - certainly > > SOAP::Lite happily consumes it, and I believe the Java libraries also > > do > > (Martin? Heiko?) in order to create objects representing SOAP > > connections. > > > > the next line in your code would be $s = MOBY::Service->new($wsdl); > > where you use the WSDL from the retrieveService call to create a > > service > > connection, and then $s->execute(...input data here...) > > > > M > > > > > > > > On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: > >> These perl modules have been great for not having to mess with > >> theunderlying protocols like SOAP. One question I have is where does > >> UDDIand WSDL fit in (if at all) and exactly where and when are they > >> beingused, say for instance I am using this script for finding all > >> theservices: > >> > >> useMOBY::Client::Central; > >> my $Central = MOBY::Client::Central->new(); > >> my $types = $Central->retrieveServiceTypes(); > >> print "Description of types of services\n\n"; > >> foreach my $type (keys %{ $types} ) { > >> print "Type: ", $type, " Description: ", $$types{$type}, "\n"; > >> my ($ServiceInstances, $RegObject) > >> =$Central->findService(serviceType => $type); > >> next if (not $ServiceInstances); > >> foreach my $ServiceInstance (@{ $ServiceInstances } ){ > >> print "\t", $ServiceInstance->name; > >> print " (", $ServiceInstance->authority, ")"; > >> print "\n\t", $ServiceInstance->description, "\n"; > >> } > >> } > >> > >> (Found > >> at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- > >> sol.html) > >> > >> Any resources, explanations, etc. would be greatly appreciated. > >> Thanks! > >> > >> -Michael > >> mdjgf8@mizzou.edu > >> > >> ______________________________________________________________________ > >> _______________________________________________ > >> moby-l mailing list > >> moby-l@biomoby.org > >> http://biomoby.org/mailman/listinfo/moby-l > > -- > > Mark Wilkinson > > Illuminae > > > > _______________________________________________ > > moby-l mailing list > > moby-l@biomoby.org > > http://biomoby.org/mailman/listinfo/moby-l > > > > > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From markw at illuminae.com Mon Dec 22 11:54:15 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 22 12:01:47 2003 Subject: [MOBY-l] new objects for sequence features Message-ID: <1072112055.1728.37.camel@localhost.localdomain> Hi MOBYers! I needed to create some new Sequence/Feature objects in order to build services to run OOTB on a Gbrowse installation. These will no doubt be useful to other people as these kinds of objects didn't exist up to now. There is a hierarchy of GFF objects (GFF (root), GFF1, GFF2, GFF2_5, GFF3) that you can use to pass GFF feature files as formatted text. In addition there is a BasicGFFSequenceFeature object that holds all of the required GFF fields, along with an indeterminate number of key/value pair objects. These Key/value pair objects are also new, and come in two flavours: simple_key_value_pair for 1:1 key/value relationships, and multi_key_value_pair for 1:many key/value relationships, such as exist in GFF & Ace. Finally, there is a new DNA Sequence object 'DNASequenceWithGFFFeatures' which is a DNA sequence containing a corresponding set of BasicGFFSequenceFeature objects. have fun, and let me know if you think these objects are badly conceived. M -- Mark Wilkinson Illuminae From markw at illuminae.com Sun Dec 28 14:15:51 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Sun Dec 28 14:23:14 2003 Subject: [MOBY-l] changes to the LSID designation of Obj/Serv/Namesp Message-ID: <1072638950.2503.5.camel@localhost.localdomain> Hi all, This news will likely cause cheers all-round :-) The newest version of the LSID libraries from the I3C no longer mess around with the character-case of LSID's, so we can now make the final field in the LSID have the same case as the common name for the Object/Service/Namespace! You can now get the correct object name by $lsid =~ /:(\S+)$/ yay!! Mark From markw at illuminae.com Sun Dec 28 20:44:34 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Sun Dec 28 20:51:57 2003 Subject: [MOBY-l] People's experience with perl-based GUI libraries Message-ID: <1072662274.2079.14.camel@localhost.localdomain> Hi all, I'm getting serious now about building a standalone MOBY client, and will be writing it in Perl since the perl MOBY libraries have somewhat higher functionality at the moment (yeah, THAT's the reason!) I'm wondering what experience people have with the various widget libraries that are available for Perl. I have a lot of experience with Tk/Perl through my work on Genquire, but I am not particularly pleased with it. I'm also looking at WxPerl, and Qt. I'm quite impressed with Qt-Perl, actually, but it is a bit of a pain to install, and perhaps more importantly there is no free distribution of the Qt widgets for MS Windows so it would require Windows users to install Cygwin (which isn't such a bad idea anyway! ;-) ) Do any of you have opinions on this (based on experience or gut instinct ;-) )? Certainly I'll be trying to keep the "guts" and the visualization as separate as possible so that we can change our minds later, but it would be nice to have a widely useful product in the first iteration. Comments welcome! Mark -- Mark Wilkinson Illuminae From lstein at cshl.edu Mon Dec 29 10:33:24 2003 From: lstein at cshl.edu (Lincoln Stein) Date: Mon Dec 29 10:41:00 2003 Subject: [MOBY-l] People's experience with perl-based GUI libraries In-Reply-To: <1072662274.2079.14.camel@localhost.localdomain> References: <1072662274.2079.14.camel@localhost.localdomain> Message-ID: <200312291033.24954.lstein@cshl.edu> A lot of people seem happy with GTK-Perl. I always liked PerlTk, though, and it is very portable to Windows. Lincoln On Sunday 28 December 2003 08:44 pm, Mark Wilkinson wrote: > Hi all, > > I'm getting serious now about building a standalone MOBY client, > and will be writing it in Perl since the perl MOBY libraries have > somewhat higher functionality at the moment (yeah, THAT's the > reason!) > > I'm wondering what experience people have with the various widget > libraries that are available for Perl. I have a lot of experience > with Tk/Perl through my work on Genquire, but I am not particularly > pleased with it. I'm also looking at WxPerl, and Qt. I'm quite > impressed with Qt-Perl, actually, but it is a bit of a pain to > install, and perhaps more importantly there is no free distribution > of the Qt widgets for MS Windows so it would require Windows users > to install Cygwin (which isn't such a bad idea anyway! ;-) ) > > Do any of you have opinions on this (based on experience or gut > instinct ;-) )? Certainly I'll be trying to keep the "guts" and > the visualization as separate as possible so that we can change our > minds later, but it would be nice to have a widely useful product > in the first iteration. > > Comments welcome! > > Mark From markw at illuminae.com Mon Dec 29 11:56:06 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 29 12:03:29 2003 Subject: [MISC] Re: [MOBY-l] People's experience with perl-based GUI libraries In-Reply-To: <200312291033.24954.lstein@cshl.edu> References: <1072662274.2079.14.camel@localhost.localdomain> <200312291033.24954.lstein@cshl.edu> Message-ID: <1072716966.1724.72.camel@localhost.localdomain> yeah, perlTk is fine and VERY portable. There are some small hiccups on OS-X, but nothing insurmountable - Dave figured out how to get Genquire working on OS-X, so we do have documentation on how to solve that problem. However, from my non-bioinformatic consulting work I have found that MS Windows users find Tk interfaces quite off-putting and unnerving because they don't have the same "look and feel" that they are used to. This may or may not be a serious consideration. One big advantage of going with PerlTK is that I can create 100% standalone MS Windows executables using AS's perlapp so that makes distribution that much easier. This would not be possible with Qt, since you need to have the C-based widgets installed and you have to pay for the Windows version of that! >>sigh<< ugh... it is becoming clear that Tk is probably the way to go :-( Excuse me while I wash the bad taste out of my mouth... Mark On Mon, 2003-12-29 at 09:33, Lincoln Stein wrote: > A lot of people seem happy with GTK-Perl. I always liked PerlTk, > though, and it is very portable to Windows. > > Lincoln From steube at sdsc.edu Mon Dec 29 13:03:49 2003 From: steube at sdsc.edu (Ken Steube) Date: Mon Dec 29 13:11:09 2003 Subject: [MOBY-l] MOBY status? In-Reply-To: <1072716966.1724.72.camel@localhost.localdomain> Message-ID: Hey Mark, Could you send us a couple paragraphs about what's going to change in MOBY over the next couple months? I have another MOBY workshop Jan 15-16 here in San Diego and want to know the latest scoop. Also, if you hear of any plans to do any maintenance to moby-central Jan 16 or during the week before I'd appreciate if you could keep me in the loop (or maybe postpone if it's major change???) Thanks! Ken From markw at illuminae.com Mon Dec 29 14:07:11 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon Dec 29 14:14:34 2003 Subject: [MOBY] [MOBY-l] MOBY status? In-Reply-To: References: Message-ID: <1072724831.1722.100.camel@localhost.localdomain> Hi Ken et al., I don't think I will be making any major (even minor!) changes to MOBY Central in January. I'll be busy packing for my move to Vancouver, and I'm becoming quite obsessed with building a standalone client so that will soak up most of my development time :-) For your workshop sure that you are teaching to the most recent version of the API. All of the services in /Perl/scripts/Services/LocalServices.pm are now coded to this updated spec, and there is a template (sub _generic_service_template) that is pretty much cut-n-pasteable as a service. Just add your specific code where it says "do your thing here", and the rest is done for you. I'll try to add a couple of new routines to CommonSubs that can deal with the new Xref cross-references in time for your course. I think it is already pretty much ready, but I haven't tested it thoroughly, and I don't think any service currently return this type of cross-reference (Perhaps Heiko or Rebecca have some already?) so it isn't *that* critical :-) The only other big news is that the CVS version of Gbrowse (not the distribution) now includes a moby browser as well as some pre-canned moby services that configure themselves during Gbrowse installation and can be registered by running a little script in the Gbrowse /bin folder. It is TREZ COOL that services are so simple that they can be built and installed by an install program! Let me know if you need anything from me for the course. How many victi...er... I mean students do you have? Cheers!! Mark On Mon, 2003-12-29 at 12:03, Ken Steube wrote: > Hey Mark, > > Could you send us a couple paragraphs about what's going to change in MOBY > over the next couple months? I have another MOBY workshop Jan 15-16 here > in San Diego and want to know the latest scoop. > > Also, if you hear of any plans to do any maintenance to moby-central Jan > 16 or during the week before I'd appreciate if you could keep me in the > loop (or maybe postpone if it's major change???) > > Thanks! > > Ken > > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From michael at acutrans.net Tue Dec 30 15:13:11 2003 From: michael at acutrans.net (Michael Jensen) Date: Tue Dec 30 15:20:30 2003 Subject: [MOBY-l] help with MobyXMLObject... Message-ID: <97B14724-3B04-11D8-B989-000393B6201C@acutrans.net> I am trying to put a few services together into one script, so taking the output of one to another. I can get a few working together, but the getGOTerm service output has me stuck. Here is the output from the simple script just running this service and trying to get some of return values by themselves: phospholipase A2 activity Catalysis of the reaction: phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a carboxylate. Found an input Simple object: Class 'moby:GO_Term' xml_tag 'GO_Term' Namespace 'GO' ID 'GO:0004623' Name '' Value '' So I can get the articleName and even the GO:00004623 out of the various elements, but I can't figure out how to get the values of the Term and Definition from within the tags (phospholipase A2 activity). My code is as follows: #!/usr/bin/perl ##### put in 0004623 from the command line for it to run on something####### use MOBY::Client::Central; use MOBY::Client::Service; use MobyXmlObject; ################## getGOTerm ################## my $Central = MOBY::Client::Central->new(); my ($Services, $REG) = $Central->findService( authURI => 'www.illuminae.com', serviceName => 'getGoTerm', ); unless ($Services) { print "Discovery failed: ", $REG->message; exit(1); } my $svc = $Services->[0]; print "Executing service ", $svc->name, "\n", $svc->description, "\n\n"; my $wsdl = $Central->retrieveService($svc); my $S = MOBY::Client::Service->new(service => $wsdl); my $result; foreach my $goterm(@ARGV) { $result = $S->execute( XMLinputlist => [ ['', qq{}] ] ) || 'No result'; print $result, "\n"; } my @simples = MobyXmlObject->getMobySimples($result); my @go_list; foreach my $s (@simples) { my $class = $s->class(); my $namespace = $s->namespace(); my $id = $s->id(); my $name = $s->articleName(); my $value = $s->valueTrimmed(); my $xml_tag = $s->xml_tag(); print qq{ Found an input Simple object: Class '$class' xml_tag '$xml_tag' Namespace '$namespace' ID '$id' Name '$name' Value '$value' }; } Note to run it you should pass in 0004623 or another go id. Any help would be greatly appreciated! THANKS! -Michael Jensen mdjgf8@mizzou.edu From steube at sdsc.edu Tue Dec 30 15:59:53 2003 From: steube at sdsc.edu (Ken Steube) Date: Tue Dec 30 16:20:19 2003 Subject: [MOBY-l] help with MobyXMLObject... In-Reply-To: <97B14724-3B04-11D8-B989-000393B6201C@acutrans.net> Message-ID: I included a working example for your XML, but a little explanation is required: A MOBY object is myVALUE so a MobyXmlObject $mobj returns five values $mobj->class() myCLASS $mobj->namespace() myNS $mobj->id() myID $mobj->articleName() myNAME $mobj->value() myVALUE If myVALUE includes XML, then these are separate MOBY objects. You need to use MobyXmlObject to access these additional MOBY objects using the $mobj->getIncludedObjects() call, which returns a list of new MobyXmlObject objects corresponding to the included objects. This is demonstrated in the included example. Ken On Tue, 30 Dec 2003, Michael Jensen wrote: > I am trying to put a few services together into one script, so taking > the output of one to another. I can get a few working together, but the > getGOTerm service output has me stuck. Here is the output from the > simple script just running this service and trying to get some of > return values by themselves: > > > xmlns='http://www.biomoby.org/moby'> > > > > > id='GO:0004623'> > namespace='' id='' articleName='Term'>phospholipase A2 > activity > namespace='' id='' articleName='Definition'>Catalysis of the reaction: > phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a > carboxylate. > > > > > > > > Found an input Simple object: > Class 'moby:GO_Term' > xml_tag 'GO_Term' > Namespace 'GO' > ID 'GO:0004623' > Name '' > Value '' > > > So I can get the articleName and even the GO:00004623 out of the > various elements, but I can't figure out how to get the values of the > Term and Definition from within the tags (phospholipase A2 activity). > My code is as follows: > > #!/usr/bin/perl > ##### put in 0004623 from the command line for it to run on > something####### > > use MOBY::Client::Central; > use MOBY::Client::Service; > use MobyXmlObject; > > ################## getGOTerm ################## > > my $Central = MOBY::Client::Central->new(); > > my ($Services, $REG) = $Central->findService( > authURI => 'www.illuminae.com', > serviceName => 'getGoTerm', > ); > unless ($Services) { print "Discovery failed: ", $REG->message; > exit(1); } > > my $svc = $Services->[0]; > print "Executing service ", $svc->name, "\n", $svc->description, "\n\n"; > my $wsdl = $Central->retrieveService($svc); > my $S = MOBY::Client::Service->new(service => $wsdl); > > my $result; > foreach my $goterm(@ARGV) { > $result = $S->execute( > XMLinputlist => [ ['', qq{}] > ] > ) || 'No result'; > print $result, "\n"; > } > > my @simples = MobyXmlObject->getMobySimples($result); > my @go_list; > > foreach my $s (@simples) { > my $class = $s->class(); > my $namespace = $s->namespace(); > my $id = $s->id(); > my $name = $s->articleName(); > my $value = $s->valueTrimmed(); > my $xml_tag = $s->xml_tag(); > print qq{ > Found an input Simple object: > Class '$class' > xml_tag '$xml_tag' > Namespace '$namespace' > ID '$id' > Name '$name' > Value '$value' > }; > } > > Note to run it you should pass in 0004623 or another go id. > > Any help would be greatly appreciated! > > THANKS! > > -Michael Jensen > mdjgf8@mizzou.edu > > > _______________________________________________ > moby-l mailing list > moby-l@biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > -- ------------------------------------- Ken Steube steube@sdsc.edu San Diego Supercomputer Center @ UCSD San Diego, California USA -------------- next part -------------- use MobyXmlObject; my $query = qq{ phospholipase A2 activity Catalysis of the reaction: phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a carboxylate. }; my @simples = MobyXmlObject->getMobySimples($query); foreach my $s (@simples) { my ($class, $ns, $id) = ($s->class(), $s->namespace(), $s->id()); print "class=$class,ns=$ns,id=$id\n"; print " Included MOBY objects:\n"; foreach my $inc ($s->getIncludedObjects()) { my $class = $inc->class(); my $name = $inc->articleName(); my $value = $inc->valueTrimmed(); print " class=$class,name=$name,value=$value\n"; next; } } From markw at illuminae.com Tue Dec 30 18:03:45 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Tue Dec 30 18:11:07 2003 Subject: [MOBY-l] Retiring the old CGI Client program! Message-ID: <1072825425.1724.117.camel@localhost.localdomain> Hi everyone! It will hang around in the CVS repository for a while, but I think it is time to retire that old crappy CGI client. I've installed the MOBY-S client that I just wrote for Gbrowse on mobycentral and that is now the default client program when you browse to http://mobycentral.cbr.nrc.ca This is the ONLY client that I plan to maintain, so if you are linking into a client program you should probably link to this one. You can invoke it with GET parameters '?namespace=SomeMobyNamespace&id=SomeID' or you can just start it up and select them from the dropdown menu as before. The only thing this client cannot do that the old one could is to send queries in bulk. I may get ambitious and write that in a few weeks, but if I start messing around with it just before the next Gbrowse release I am surely asking to be sent straight to purgatory without passing GO! The nice thing about this client is that it has a "plugins" like interface for writing new renderers for various object types - if anyone wants to write renderers, have a look at the code in the Gbrowse conf/MobyServices/*_renderer.pm modules for an example. The client will traverse the ontology from object-type-node back to root looking for a renderer to handle that object type; if it doesn't find one it will treat it as formatted text. Let me know if you find bugs. That's all the news for now, Cheers all! Happy New year! Mark -- Mark Wilkinson Assistant Professor (Bioinformatics) Dept. of Medical Genetics University of British Columbia's iCAPTURE Centre Vancouver, BC, Canada ------------------------------------------------------------------------ It just goes to show you that SOAP::Lite is more intuitive than you might think, if you know enough Perl and have the patience to dive into the source code. -Byrne Reese -http://builder.com.com/5100-6389_14-1045078-2.html ------------------------------------------------------------------------ From mdjgf8 at mizzou.edu Wed Dec 31 10:17:00 2003 From: mdjgf8 at mizzou.edu (Michael Jensen) Date: Wed Dec 31 10:24:14 2003 Subject: [MOBY-l] languages being used with MOBY... In-Reply-To: <1072881662.1718.59.camel@localhost.localdomain> References: <1072881662.1718.59.camel@localhost.localdomain> Message-ID: <61D77500-3BA4-11D8-B989-000393B6201C@mizzou.edu> I know Perl and Java are strong in BioMOBY, but I was wondering if others are using other languages to use and develop BioMOBY services with and to interact with services. What are the limitations of other languages besides not having all the modules ready to go like Perl and Java? Thanks! -Michael Jensen From simont at mcw.edu Fri Dec 5 14:47:04 2003 From: simont at mcw.edu (Simon Twigger) Date: Fri, 5 Dec 2003 13:47:04 -0600 Subject: [MOBY-l] Services on MOBYClient Message-ID: Hi there, I've been using Ken's MobyEd examples to get a service up and running (the docs were very useful, thanks) and all seems to be well. It takes a Global_Keyword and looks at the list of genes in RGD and if that gene is in RGD returns a String containing the official symbol and cross reference data (currently only PMIDs). This is a marginally useful service that Im using as a test case. Sample output for comments/vetting. I ran a query using 'Atp1a1', the service ('keywordToGene') returned the following Atp1a1 I can register the service and it appears on Ken's list_services.cgi, however, it doesnt seem to appear on the MOBYClient when I select Global_Keyword as an input. I was wondering if the Client is either (a) still looking live at services on MOBY-Central and my service registration isnt working as it should, or (b) new services dont appear by default (not a bad idea given how crowded things get as people test things) and so it will not appear simply by registering at MOBY-Central. Does anyone have any suggestions? Cheers, Simon. ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: text/enriched Size: 2193 bytes Desc: not available Url : http://biomoby.org/pipermail/moby-l/attachments/20031205/c6205679/attachment-0002.bin From markw at illuminae.com Mon Dec 8 12:57:19 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 08 Dec 2003 11:57:19 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: References: Message-ID: <1070906239.1718.0.camel@localhost.localdomain> What was your registration code/XML - your service is registered as consuming "Object" rather than "Global_Keyword"... probably why you can't discover it in your search. M On Fri, 2003-12-05 at 13:47, Simon Twigger wrote: > Hi there, > > I've been using Ken's MobyEd examples to get a service up and > running(the docs were very useful, thanks) and all seems to be well. > It takesa Global_Keyword and looks at the list of genes in RGD and if > thatgene is in RGD returns a String containing the official symbol > andcross reference data (currently only PMIDs). This is a > marginallyuseful service that Im using as a test case. > > Sample output for comments/vetting. I ran a query using 'Atp1a1', > theservice ('keywordToGene') returned the following > > > > > > > moby:id="Atp1a1"moby:articleName="geneSymbol"> > Atp1a1 > > > > > > > > > > > > I can register the service and it appears on Ken's > list_services.cgi,however, it doesnt seem to appear on the MOBYClient > when I selectGlobal_Keyword as an input. I was wondering if the Client > is either(a) still looking live at services on MOBY-Central and my > serviceregistration isnt working as it should, or (b) new services > dontappear by default (not a bad idea given how crowded things get > aspeople test things) and so it will not appear simply by registering > atMOBY-Central. > > Does anyone have any suggestions? > > Cheers, > > Simon. > > -------------------------------------------------------------------------------------------------- > Simon Twigger, Ph.D. > Assistant Professor, Bioinformatics Research Center > > Medical College of Wisconsin > 8701 Watertown Plank Road, > Milwaukee, WI, 53226 > tel. 414-456-8802, fax 414-456-6595 > > ______________________________________________________________________ > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From simont at mcw.edu Mon Dec 8 13:15:07 2003 From: simont at mcw.edu (Simon Twigger) Date: Mon, 8 Dec 2003 12:15:07 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <1070906239.1718.0.camel@localhost.localdomain> Message-ID: <744D3833-29AA-11D8-9393-0003933D1DD8@mcw.edu> Hi Mark, I think registration was partly to blame. However, even once it did appear it didnt actually work - the result screen would come back empty - it didnt say 'Nothing found' it just had no result listed but it knew the result was a string because it listed services that could be used in subsequent steps. Perhaps a Client issue? I managed to get it working by looking at the response XML from working services and copying them. I'm currently registering it as consuming Objects and returning strings and that seemed to make it appear on the Client. To make it actually work properly I seemed to have to take out all the 'moby:' prefixes on the XML, now it seems to run in the client and the cross references come up as expected and link to the right places. try using 'A2m' as a search. Now I have it working I'll clean it up, register it as taking in Global_Keyword and add in some more content to the cross references. I'll also look into the moby: tag issue to see if that was really the problem or just my imagination. Simon. On Monday, Dec 8, 2003, at 11:57 America/Chicago, Mark Wilkinson wrote: > What was your registration code/XML - your service is registered as > consuming "Object" rather than "Global_Keyword"... probably why you > can't discover it in your search. > > M > > > On Fri, 2003-12-05 at 13:47, Simon Twigger wrote: >> Hi there, >> >> I've been using Ken's MobyEd examples to get a service up and >> running(the docs were very useful, thanks) and all seems to be well. >> It takesa Global_Keyword and looks at the list of genes in RGD and if >> thatgene is in RGD returns a String containing the official symbol >> andcross reference data (currently only PMIDs). This is a >> marginallyuseful service that Im using as a test case. >> >> Sample output for comments/vetting. I ran a query using 'Atp1a1', >> theservice ('keywordToGene') returned the following >> >> >> >> >> >> >> > moby:id="Atp1a1"moby:articleName="geneSymbol"> >> Atp1a1 >> >> >> >> >> >> >> >> >> >> >> >> I can register the service and it appears on Ken's >> list_services.cgi,however, it doesnt seem to appear on the MOBYClient >> when I selectGlobal_Keyword as an input. I was wondering if the Client >> is either(a) still looking live at services on MOBY-Central and my >> serviceregistration isnt working as it should, or (b) new services >> dontappear by default (not a bad idea given how crowded things get >> aspeople test things) and so it will not appear simply by registering >> atMOBY-Central. >> >> Does anyone have any suggestions? >> >> Cheers, >> >> Simon. >> >> ---------------------------------------------------------------------- >> ---------------------------- >> Simon Twigger, Ph.D. >> Assistant Professor, Bioinformatics Research Center >> >> Medical College of Wisconsin >> 8701 Watertown Plank Road, >> Milwaukee, WI, 53226 >> tel. 414-456-8802, fax 414-456-6595 >> >> ______________________________________________________________________ >> _______________________________________________ >> moby-l mailing list >> moby-l at biomoby.org >> http://biomoby.org/mailman/listinfo/moby-l > -- > Mark Wilkinson > Illuminae > > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > > ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From mwilkinson at mobile.rogers.com Mon Dec 8 14:16:15 2003 From: mwilkinson at mobile.rogers.com (mwilkinson) Date: Mon, 8 Dec 2003 14:16:15 -0500 Subject: [MOBY] [MOBY-l] Services on MOBYClient Message-ID: <200312081832.hB8IWqFC032609@portal.open-bio.org> Hi simon, You're right - my last message made no sense at all. Please send whatever code you used/are using and any parameters you are filling in so that I can explore what is going wrong. Cheers! M From markw at illuminae.com Mon Dec 8 14:51:27 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 08 Dec 2003 13:51:27 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: References: Message-ID: <1070913086.1964.30.camel@localhost.localdomain> On Mon, 2003-12-08 at 13:13, Simon Twigger wrote: > sub register_service { > my $C = shift; > my $reg = $C->registerService( > serviceName => 'keywordToGene', > authURI => $authURI, > contactEmail => $email, > description => "Test service: matches gene symbol to RGD gene > record, if available", > URL => $url, > input => [ ['', [Object => []]], ], Should be: input => [ ['', [Object => ['Global_Keyword']]], ], > output => [ ['', [String => ['RGD']]], ], > category => "moby", > serviceType => "Retrieval", > ); ... more about this service later... > If you try and register Global_Keyword instead of Object for the input, > the service vanishes from the client even if you say you have a > Global_Keyword as the seed. In fact, registration should probably fail in that case since (contrary to what I said in my last message) Global_Keyword is a namespace, not an object type, so it shouldn't even successfully register. about the service itself: I'm still confused about what the service does... it consumes a "keyword" gene identifier, and returns a string containing the same gene identifier plus a bunch of cross-references... is that the intention? If so, they why is it consuming "Global_Keyword"? Gene identifiers are not really keywords (per se), or at least not the way you are implying that they be used. For example, I executed your service using "kinase" and got nothing, but I executed it using A2m and got the locus. If it were really a keyword lookup, I think I would have expected a return from "kinase". As it is, you are calling RGD ID's "keywords" and thus taking all of the semantic meaning out of them. ??? I guess this is just a test service, but I'm concerned... M From simont at mcw.edu Mon Dec 8 16:47:33 2003 From: simont at mcw.edu (Simon Twigger) Date: Mon, 8 Dec 2003 15:47:33 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <1070913086.1964.30.camel@localhost.localdomain> Message-ID: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> On Monday, Dec 8, 2003, at 13:51 America/Chicago, Mark Wilkinson wrote: > On Mon, 2003-12-08 at 13:13, Simon Twigger wrote: > >> sub register_service { >> my $C = shift; >> my $reg = $C->registerService( >> serviceName => 'keywordToGene', >> authURI => $authURI, >> contactEmail => $email, >> description => "Test service: matches gene symbol to RGD gene >> record, if available", >> URL => $url, >> input => [ ['', [Object => []]], ], > > Should be: input => [ ['', [Object => ['Global_Keyword']]], > ], I'll give that a go. > > In fact, registration should probably fail in that case since (contrary > to what I said in my last message) Global_Keyword is a namespace, not > an > object type, so it shouldn't even successfully register. I wondered about this too but when you look at the Object list (http://mobycentral.cbr.nrc.ca/cgi-bin/types/Objects) Global_Keyword is also listed there as an Object which was why I was trying to do it that way. > about the service itself: > > I'm still confused about what the service does... it consumes a > "keyword" gene > identifier, and returns a string containing the same gene identifier > plus a bunch > of cross-references... is that the intention? Not really, it should take a broader range of inputs and not just regurgitate what you put in with a little bit more info. Though, if one went with the idea of extending the objects like we have in sequence - VirtualGene, GenericGene, FullyAnnotatedGene, etc. (going from bare minimum info - symbol, name and ID to every annotation under the sun) this might have a use. > If so, they why is it consuming > "Global_Keyword"? Gene identifiers are not really keywords (per se), > or at least > not the way you are implying that they be used. Mentally I tend to distinguish identifiers from symbols which perhaps colors my thinking - For me, Identifiers are stable accession numbers, id numbers, etc. (eg RGD:12345), symbols are much less stable and are closer to a keyword than anything else. > For example, I executed your > service using "kinase" and got nothing, but I executed it using A2m > and got > the locus. If it were really a keyword lookup, I think I would have > expected > a return from "kinase". As it is, you are calling RGD ID's "keywords" > and thus > taking all of the semantic meaning out of them This is a test and it just does an absolute match on the query word which isnt what you'd really want. I was trying to build anything that worked and this was just where I started. In retrospect this service might serve the purpose of answering 'do you have any gene records in RGD that match this string?'. You'd input a String object and look for matches in Symbols, Aliases, Gene Names, etc and return a list of matching up to date RGD gene symbols. The symbol(s) returned would be the current correct nomenclature along with associated cross references for you to move on with. This is like doing a search on the Gene table on RGD where you can put in 'kinase' and get back anything with kinase in the name. Though this then opens up a can of worms - should I check to see if Kinase is a GO term and then search on the GO annotations as well, just to be complete - not every kinase has 'kinase' in the name. There is a danger of biting off too much in one go and I would opt for breaking this up into multiple services that could wrapped up and called as an uber-service (that hopefully ran the various searches in parallel before merging at the end). I think my original thought process was that a keyword is just one word as opposed to a String which is potentially a phrase and I was looking to limit what went in. This could be used as a nomenclature server for example - you enter a gene symbol (always one word) and get back the current approved symbol. There are obviously other ways to do this and getting the correct meaning behind each input is important for consistency. Simon. ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From markw at illuminae.com Mon Dec 8 18:24:03 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 08 Dec 2003 17:24:03 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> References: <216C1A24-29C8-11D8-9393-0003933D1DD8@mcw.edu> Message-ID: <1070925842.1966.103.camel@localhost.localdomain> On Mon, 2003-12-08 at 15:47, Simon Twigger wrote: Hey Simon! thanks for your patience! > I wondered about this too but when you look at the Object list > (http://mobycentral.cbr.nrc.ca/cgi-bin/types/Objects) Global_Keyword is > also listed there as an Object which was why I was trying to do it that > way. Is it?!? Good heavens... someone is due for a good spanking! ;-) > Not really, it should take a broader range of inputs and not just > regurgitate what you put in with a little bit more info. Though, if one > went with the idea of extending the objects like we have in sequence - > VirtualGene, GenericGene, FullyAnnotatedGene, etc. (going from bare > minimum info - symbol, name and ID to every annotation under the sun) > this might have a use. Yup - I think this is the way to go. There's nothing wrong with what you are doing **at all**. Passing in a gene ID and returning that gene ID with a bunch of cross-references is a legitimate and useful service... I just didn't understand why you were outputting a string. The alternative - if you find that you really are just regurgitating the input, is to output a collection of Object's representing what you currently output as CrossRef's. That would be an equivalent service. > Mentally I tend to distinguish identifiers from symbols which perhaps > colors my thinking - For me, Identifiers are stable accession numbers, > id numbers, etc. (eg RGD:12345), symbols are much less stable and are > closer to a keyword than anything else. I think in the context of genetics a gene name (e.g. CDC25) is acting as an identifier... this is certainly how we identify genes in publications (barring the problem of multiple names for genes). My loci in DragonDB (an AceDB instance) use the Gene Name as the primary key for the record, so for me it is absolutely acting as an identifier :-) > There is a danger of biting off too much in one go and I would opt for > breaking this up into multiple services that could wrapped up and > called as an uber-service (that hopefully ran the various searches in > parallel before merging at the end). I'm starting to worry about the wisdom of the Global_Keyword namespace at all... but keyword searches are *so* common! It just tempts people to create peculiar services... If you do a registry query for services that consume Global_Keyword right now you end up with a surprisingly large number of them already, and the registry is still quite small! Moreover, most of them are completely useless w.r.t. the keyword that you have in your hand at that moment! The problem is that these kinds of services have very little semantic information, since a keyword lacks semantic information... I can see the usefulness of doing keyword searches on GO, and on PubMed, but in many cases it doesn't seem so useful... Anyway, it's a public registry :-) People will register whatever they like, at the end of the day! M From simont at mcw.edu Mon Dec 8 14:13:54 2003 From: simont at mcw.edu (Simon Twigger) Date: Mon, 8 Dec 2003 13:13:54 -0600 Subject: [MOBY] [MOBY-l] Services on MOBYClient In-Reply-To: <200312081826.hB8IQjn14146@post.its.mcw.edu> Message-ID: Here's the registration code: my $authURI = 'sirius.brc.mcw.edu'; my $email = 'simont at mcw.edu'; my $url = 'http://sirius.brc.mcw.edu/cgi-bin/MobyEd_dispatcher.cgi'; use MOBY::Client::Central; use MOBY::Client::Service; my $Central = MOBY::Client::Central->new(); ®ister_service($Central); exit(0); # End of main ######################################################################## # # Register the service ######################################################################## # sub register_service { my $C = shift; my $reg = $C->registerService( serviceName => 'keywordToGene', authURI => $authURI, contactEmail => $email, description => "Test service: matches gene symbol to RGD gene record, if available", URL => $url, input => [ ['', [Object => []]], ], output => [ ['', [String => ['RGD']]], ], category => "moby", serviceType => "Retrieval", ); die "Bad return value from registerService" unless $reg; if ($reg->success == 1){ print "Registration successful\n\n"; } else { print "Registration failed: ", $reg->message, "\n"; } } If you try and register Global_Keyword instead of Object for the input, the service vanishes from the client even if you say you have a Global_Keyword as the seed. You'd think that as Global_Keyword ISA Object that this really shouldn't make a difference, unless Im missing something from the registration process. I've attached the service's .pm file. Ken's original test_SequenceToFASTA subroutine is at the top, the rest is code for the keywordToGene service. -------------- next part -------------- A non-text attachment was scrubbed... Name: MobyEd_services.pm Type: application/text Size: 5423 bytes Desc: not available Url : http://biomoby.org/pipermail/moby-l/attachments/20031208/62465e2b/MobyEd_services-0002.bin -------------- next part -------------- Simon. On Monday, Dec 8, 2003, at 13:16 America/Chicago, mwilkinson wrote: > Hi simon, > > You're right - my last message made no sense at all. > > Please send whatever code you used/are using and any parameters you > are filling in so that I can explore what is going wrong. > > Cheers! > > M > > ------------------------------------------------------------------------ -------------------------- Simon Twigger, Ph.D. Assistant Professor, Bioinformatics Research Center Medical College of Wisconsin 8701 Watertown Plank Road, Milwaukee, WI, 53226 tel. 414-456-8802, fax 414-456-6595 From michael at acutrans.net Thu Dec 18 17:58:27 2003 From: michael at acutrans.net (Michael Jensen) Date: Thu, 18 Dec 2003 16:58:27 -0600 Subject: [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby Message-ID: These perl modules have been great for not having to mess with the underlying protocols like SOAP. One question I have is where does UDDI and WSDL fit in (if at all) and exactly where and when are they being used, say for instance I am using this script for finding all the services: use MOBY::Client::Central; my $Central = MOBY::Client::Central->new(); my $types = $Central->retrieveServiceTypes(); print "Description of types of services\n\n"; foreach my $type (keys %{ $types} ) { print "Type: ", $type, " Description: ", $$types{$type}, "\n"; my ($ServiceInstances, $RegObject) = $Central->findService(serviceType => $type); next if (not $ServiceInstances); foreach my $ServiceInstance (@{ $ServiceInstances } ){ print "\t", $ServiceInstance->name; print " (", $ServiceInstance->authority, ")"; print "\n\t", $ServiceInstance->description, "\n"; } } (Found at: http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- sol.html) Any resources, explanations, etc. would be greatly appreciated. Thanks! -Michael mdjgf8 at mizzou.edu -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: text/enriched Size: 1181 bytes Desc: not available Url : http://biomoby.org/pipermail/moby-l/attachments/20031218/979c47ba/attachment-0002.bin From markw at illuminae.com Fri Dec 19 09:58:30 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Fri, 19 Dec 2003 08:58:30 -0600 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: References: Message-ID: <1071845909.2128.10.camel@localhost.localdomain> Hi Michael, It's hard to answer your question given the code below, since you don't actually access a service anywhere in that code :-) For a variety of historical and other reasons, MOBY-S does not use UDDI as its registry - we have our own registry system called MOBY Central. There are people in the project who are considering whether it is practical/possible/desirable to port MOBY Central over to an underlying UDDI registry API, but that is not a high priority. MOBY-S does use WSDL... sort of... If you pursued your code for the next 5 or 6 lines you would make a call to retrieveService($ServiceInstance), and this returns a WSDL-compatible document which can be used to make client-side stubs to connect to the service. This document, however, *does not* describe the actual message structure, since this cannot be predicted a priori (there is a lot of discussion about this in various places - just browse through the docs). As such, it is not a 100% valid WSDL document, but it can be consumed by WSDL parsers - certainly SOAP::Lite happily consumes it, and I believe the Java libraries also do (Martin? Heiko?) in order to create objects representing SOAP connections. the next line in your code would be $s = MOBY::Service->new($wsdl); where you use the WSDL from the retrieveService call to create a service connection, and then $s->execute(...input data here...) M On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: > These perl modules have been great for not having to mess with > theunderlying protocols like SOAP. One question I have is where does > UDDIand WSDL fit in (if at all) and exactly where and when are they > beingused, say for instance I am using this script for finding all > theservices: > > useMOBY::Client::Central; > my $Central = MOBY::Client::Central->new(); > my $types = $Central->retrieveServiceTypes(); > print "Description of types of services\n\n"; > foreach my $type (keys %{ $types} ) { > print "Type: ", $type, " Description: ", $$types{$type}, "\n"; > my ($ServiceInstances, $RegObject) > =$Central->findService(serviceType => $type); > next if (not $ServiceInstances); > foreach my $ServiceInstance (@{ $ServiceInstances } ){ > print "\t", $ServiceInstance->name; > print " (", $ServiceInstance->authority, ")"; > print "\n\t", $ServiceInstance->description, "\n"; > } > } > > (Found > at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl-sol.html) > > Any resources, explanations, etc. would be greatly appreciated. > Thanks! > > -Michael > mdjgf8 at mizzou.edu > > ______________________________________________________________________ > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From michael at acutrans.net Fri Dec 19 11:55:33 2003 From: michael at acutrans.net (Michael Jensen) Date: Fri, 19 Dec 2003 10:55:33 -0600 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: <1071845909.2128.10.camel@localhost.localdomain> References: <1071845909.2128.10.camel@localhost.localdomain> Message-ID: <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> Thank you! Very helpful. So if MOBY Central is used then, what is it based on? RDF? Or is it just something put together? Thanks! -Michael On Dec 19, 2003, at 8:58 AM, Mark Wilkinson wrote: > Hi Michael, > > It's hard to answer your question given the code below, since you don't > actually access a service anywhere in that code :-) > > For a variety of historical and other reasons, MOBY-S does not use UDDI > as its registry - we have our own registry system called MOBY Central. > There are people in the project who are considering whether it is > practical/possible/desirable to port MOBY Central over to an underlying > UDDI registry API, but that is not a high priority. > > MOBY-S does use WSDL... sort of... If you pursued your code for the > next > 5 or 6 lines you would make a call to > retrieveService($ServiceInstance), > and this returns a WSDL-compatible document which can be used to make > client-side stubs to connect to the service. This document, however, > *does not* describe the actual message structure, since this cannot be > predicted a priori (there is a lot of discussion about this in various > places - just browse through the docs). As such, it is not a 100% > valid > WSDL document, but it can be consumed by WSDL parsers - certainly > SOAP::Lite happily consumes it, and I believe the Java libraries also > do > (Martin? Heiko?) in order to create objects representing SOAP > connections. > > the next line in your code would be $s = MOBY::Service->new($wsdl); > where you use the WSDL from the retrieveService call to create a > service > connection, and then $s->execute(...input data here...) > > M > > > > On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: >> These perl modules have been great for not having to mess with >> theunderlying protocols like SOAP. One question I have is where does >> UDDIand WSDL fit in (if at all) and exactly where and when are they >> beingused, say for instance I am using this script for finding all >> theservices: >> >> useMOBY::Client::Central; >> my $Central = MOBY::Client::Central->new(); >> my $types = $Central->retrieveServiceTypes(); >> print "Description of types of services\n\n"; >> foreach my $type (keys %{ $types} ) { >> print "Type: ", $type, " Description: ", $$types{$type}, "\n"; >> my ($ServiceInstances, $RegObject) >> =$Central->findService(serviceType => $type); >> next if (not $ServiceInstances); >> foreach my $ServiceInstance (@{ $ServiceInstances } ){ >> print "\t", $ServiceInstance->name; >> print " (", $ServiceInstance->authority, ")"; >> print "\n\t", $ServiceInstance->description, "\n"; >> } >> } >> >> (Found >> at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- >> sol.html) >> >> Any resources, explanations, etc. would be greatly appreciated. >> Thanks! >> >> -Michael >> mdjgf8 at mizzou.edu >> >> ______________________________________________________________________ >> _______________________________________________ >> moby-l mailing list >> moby-l at biomoby.org >> http://biomoby.org/mailman/listinfo/moby-l > -- > Mark Wilkinson > Illuminae > > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > From markw at illuminae.com Fri Dec 19 11:57:11 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Fri, 19 Dec 2003 10:57:11 -0600 Subject: [MOBY] [MOBY-l] rundown of the use of UDDI, WSDL, SOAP, etc. in Moby In-Reply-To: <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> References: <1071845909.2128.10.camel@localhost.localdomain> <29185A78-3244-11D8-8F36-000393B6201C@acutrans.net> Message-ID: <1071853031.2501.11.camel@localhost.localdomain> :-) ...ahem... "just" something put together, yes... though you have correctly predicted that the next major iteration of MOBY Central is going to attempt to represent/serve the same information from an underlying RDF store, rather than a relational DB. M On Fri, 2003-12-19 at 10:55, Michael Jensen wrote: > Thank you! Very helpful. > > So if MOBY Central is used then, what is it based on? RDF? Or is it > just something put together? > > Thanks! > > -Michael > > > On Dec 19, 2003, at 8:58 AM, Mark Wilkinson wrote: > > > Hi Michael, > > > > It's hard to answer your question given the code below, since you don't > > actually access a service anywhere in that code :-) > > > > For a variety of historical and other reasons, MOBY-S does not use UDDI > > as its registry - we have our own registry system called MOBY Central. > > There are people in the project who are considering whether it is > > practical/possible/desirable to port MOBY Central over to an underlying > > UDDI registry API, but that is not a high priority. > > > > MOBY-S does use WSDL... sort of... If you pursued your code for the > > next > > 5 or 6 lines you would make a call to > > retrieveService($ServiceInstance), > > and this returns a WSDL-compatible document which can be used to make > > client-side stubs to connect to the service. This document, however, > > *does not* describe the actual message structure, since this cannot be > > predicted a priori (there is a lot of discussion about this in various > > places - just browse through the docs). As such, it is not a 100% > > valid > > WSDL document, but it can be consumed by WSDL parsers - certainly > > SOAP::Lite happily consumes it, and I believe the Java libraries also > > do > > (Martin? Heiko?) in order to create objects representing SOAP > > connections. > > > > the next line in your code would be $s = MOBY::Service->new($wsdl); > > where you use the WSDL from the retrieveService call to create a > > service > > connection, and then $s->execute(...input data here...) > > > > M > > > > > > > > On Thu, 2003-12-18 at 16:58, Michael Jensen wrote: > >> These perl modules have been great for not having to mess with > >> theunderlying protocols like SOAP. One question I have is where does > >> UDDIand WSDL fit in (if at all) and exactly where and when are they > >> beingused, say for instance I am using this script for finding all > >> theservices: > >> > >> useMOBY::Client::Central; > >> my $Central = MOBY::Client::Central->new(); > >> my $types = $Central->retrieveServiceTypes(); > >> print "Description of types of services\n\n"; > >> foreach my $type (keys %{ $types} ) { > >> print "Type: ", $type, " Description: ", $$types{$type}, "\n"; > >> my ($ServiceInstances, $RegObject) > >> =$Central->findService(serviceType => $type); > >> next if (not $ServiceInstances); > >> foreach my $ServiceInstance (@{ $ServiceInstances } ){ > >> print "\t", $ServiceInstance->name; > >> print " (", $ServiceInstance->authority, ")"; > >> print "\n\t", $ServiceInstance->description, "\n"; > >> } > >> } > >> > >> (Found > >> at:http://www.pasteur.fr/%7Eletondal/biomoby/biomoby-tutorial-perl- > >> sol.html) > >> > >> Any resources, explanations, etc. would be greatly appreciated. > >> Thanks! > >> > >> -Michael > >> mdjgf8 at mizzou.edu > >> > >> ______________________________________________________________________ > >> _______________________________________________ > >> moby-l mailing list > >> moby-l at biomoby.org > >> http://biomoby.org/mailman/listinfo/moby-l > > -- > > Mark Wilkinson > > Illuminae > > > > _______________________________________________ > > moby-l mailing list > > moby-l at biomoby.org > > http://biomoby.org/mailman/listinfo/moby-l > > > > > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From markw at illuminae.com Mon Dec 22 11:54:15 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 22 Dec 2003 10:54:15 -0600 Subject: [MOBY-l] new objects for sequence features Message-ID: <1072112055.1728.37.camel@localhost.localdomain> Hi MOBYers! I needed to create some new Sequence/Feature objects in order to build services to run OOTB on a Gbrowse installation. These will no doubt be useful to other people as these kinds of objects didn't exist up to now. There is a hierarchy of GFF objects (GFF (root), GFF1, GFF2, GFF2_5, GFF3) that you can use to pass GFF feature files as formatted text. In addition there is a BasicGFFSequenceFeature object that holds all of the required GFF fields, along with an indeterminate number of key/value pair objects. These Key/value pair objects are also new, and come in two flavours: simple_key_value_pair for 1:1 key/value relationships, and multi_key_value_pair for 1:many key/value relationships, such as exist in GFF & Ace. Finally, there is a new DNA Sequence object 'DNASequenceWithGFFFeatures' which is a DNA sequence containing a corresponding set of BasicGFFSequenceFeature objects. have fun, and let me know if you think these objects are badly conceived. M -- Mark Wilkinson Illuminae From markw at illuminae.com Sun Dec 28 14:15:51 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Sun, 28 Dec 2003 13:15:51 -0600 Subject: [MOBY-l] changes to the LSID designation of Obj/Serv/Namesp Message-ID: <1072638950.2503.5.camel@localhost.localdomain> Hi all, This news will likely cause cheers all-round :-) The newest version of the LSID libraries from the I3C no longer mess around with the character-case of LSID's, so we can now make the final field in the LSID have the same case as the common name for the Object/Service/Namespace! You can now get the correct object name by $lsid =~ /:(\S+)$/ yay!! Mark From markw at illuminae.com Sun Dec 28 20:44:34 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Sun, 28 Dec 2003 19:44:34 -0600 Subject: [MOBY-l] People's experience with perl-based GUI libraries Message-ID: <1072662274.2079.14.camel@localhost.localdomain> Hi all, I'm getting serious now about building a standalone MOBY client, and will be writing it in Perl since the perl MOBY libraries have somewhat higher functionality at the moment (yeah, THAT's the reason!) I'm wondering what experience people have with the various widget libraries that are available for Perl. I have a lot of experience with Tk/Perl through my work on Genquire, but I am not particularly pleased with it. I'm also looking at WxPerl, and Qt. I'm quite impressed with Qt-Perl, actually, but it is a bit of a pain to install, and perhaps more importantly there is no free distribution of the Qt widgets for MS Windows so it would require Windows users to install Cygwin (which isn't such a bad idea anyway! ;-) ) Do any of you have opinions on this (based on experience or gut instinct ;-) )? Certainly I'll be trying to keep the "guts" and the visualization as separate as possible so that we can change our minds later, but it would be nice to have a widely useful product in the first iteration. Comments welcome! Mark -- Mark Wilkinson Illuminae From lstein at cshl.edu Mon Dec 29 10:33:24 2003 From: lstein at cshl.edu (Lincoln Stein) Date: Mon, 29 Dec 2003 10:33:24 -0500 Subject: [MOBY-l] People's experience with perl-based GUI libraries In-Reply-To: <1072662274.2079.14.camel@localhost.localdomain> References: <1072662274.2079.14.camel@localhost.localdomain> Message-ID: <200312291033.24954.lstein@cshl.edu> A lot of people seem happy with GTK-Perl. I always liked PerlTk, though, and it is very portable to Windows. Lincoln On Sunday 28 December 2003 08:44 pm, Mark Wilkinson wrote: > Hi all, > > I'm getting serious now about building a standalone MOBY client, > and will be writing it in Perl since the perl MOBY libraries have > somewhat higher functionality at the moment (yeah, THAT's the > reason!) > > I'm wondering what experience people have with the various widget > libraries that are available for Perl. I have a lot of experience > with Tk/Perl through my work on Genquire, but I am not particularly > pleased with it. I'm also looking at WxPerl, and Qt. I'm quite > impressed with Qt-Perl, actually, but it is a bit of a pain to > install, and perhaps more importantly there is no free distribution > of the Qt widgets for MS Windows so it would require Windows users > to install Cygwin (which isn't such a bad idea anyway! ;-) ) > > Do any of you have opinions on this (based on experience or gut > instinct ;-) )? Certainly I'll be trying to keep the "guts" and > the visualization as separate as possible so that we can change our > minds later, but it would be nice to have a widely useful product > in the first iteration. > > Comments welcome! > > Mark From markw at illuminae.com Mon Dec 29 11:56:06 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 29 Dec 2003 10:56:06 -0600 Subject: [MISC] Re: [MOBY-l] People's experience with perl-based GUI libraries In-Reply-To: <200312291033.24954.lstein@cshl.edu> References: <1072662274.2079.14.camel@localhost.localdomain> <200312291033.24954.lstein@cshl.edu> Message-ID: <1072716966.1724.72.camel@localhost.localdomain> yeah, perlTk is fine and VERY portable. There are some small hiccups on OS-X, but nothing insurmountable - Dave figured out how to get Genquire working on OS-X, so we do have documentation on how to solve that problem. However, from my non-bioinformatic consulting work I have found that MS Windows users find Tk interfaces quite off-putting and unnerving because they don't have the same "look and feel" that they are used to. This may or may not be a serious consideration. One big advantage of going with PerlTK is that I can create 100% standalone MS Windows executables using AS's perlapp so that makes distribution that much easier. This would not be possible with Qt, since you need to have the C-based widgets installed and you have to pay for the Windows version of that! >>sigh<< ugh... it is becoming clear that Tk is probably the way to go :-( Excuse me while I wash the bad taste out of my mouth... Mark On Mon, 2003-12-29 at 09:33, Lincoln Stein wrote: > A lot of people seem happy with GTK-Perl. I always liked PerlTk, > though, and it is very portable to Windows. > > Lincoln From steube at sdsc.edu Mon Dec 29 13:03:49 2003 From: steube at sdsc.edu (Ken Steube) Date: Mon, 29 Dec 2003 10:03:49 -0800 (PST) Subject: [MOBY-l] MOBY status? In-Reply-To: <1072716966.1724.72.camel@localhost.localdomain> Message-ID: Hey Mark, Could you send us a couple paragraphs about what's going to change in MOBY over the next couple months? I have another MOBY workshop Jan 15-16 here in San Diego and want to know the latest scoop. Also, if you hear of any plans to do any maintenance to moby-central Jan 16 or during the week before I'd appreciate if you could keep me in the loop (or maybe postpone if it's major change???) Thanks! Ken From markw at illuminae.com Mon Dec 29 14:07:11 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Mon, 29 Dec 2003 13:07:11 -0600 Subject: [MOBY] [MOBY-l] MOBY status? In-Reply-To: References: Message-ID: <1072724831.1722.100.camel@localhost.localdomain> Hi Ken et al., I don't think I will be making any major (even minor!) changes to MOBY Central in January. I'll be busy packing for my move to Vancouver, and I'm becoming quite obsessed with building a standalone client so that will soak up most of my development time :-) For your workshop sure that you are teaching to the most recent version of the API. All of the services in /Perl/scripts/Services/LocalServices.pm are now coded to this updated spec, and there is a template (sub _generic_service_template) that is pretty much cut-n-pasteable as a service. Just add your specific code where it says "do your thing here", and the rest is done for you. I'll try to add a couple of new routines to CommonSubs that can deal with the new Xref cross-references in time for your course. I think it is already pretty much ready, but I haven't tested it thoroughly, and I don't think any service currently return this type of cross-reference (Perhaps Heiko or Rebecca have some already?) so it isn't *that* critical :-) The only other big news is that the CVS version of Gbrowse (not the distribution) now includes a moby browser as well as some pre-canned moby services that configure themselves during Gbrowse installation and can be registered by running a little script in the Gbrowse /bin folder. It is TREZ COOL that services are so simple that they can be built and installed by an install program! Let me know if you need anything from me for the course. How many victi...er... I mean students do you have? Cheers!! Mark On Mon, 2003-12-29 at 12:03, Ken Steube wrote: > Hey Mark, > > Could you send us a couple paragraphs about what's going to change in MOBY > over the next couple months? I have another MOBY workshop Jan 15-16 here > in San Diego and want to know the latest scoop. > > Also, if you hear of any plans to do any maintenance to moby-central Jan > 16 or during the week before I'd appreciate if you could keep me in the > loop (or maybe postpone if it's major change???) > > Thanks! > > Ken > > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l -- Mark Wilkinson Illuminae From michael at acutrans.net Tue Dec 30 15:13:11 2003 From: michael at acutrans.net (Michael Jensen) Date: Tue, 30 Dec 2003 14:13:11 -0600 Subject: [MOBY-l] help with MobyXMLObject... Message-ID: <97B14724-3B04-11D8-B989-000393B6201C@acutrans.net> I am trying to put a few services together into one script, so taking the output of one to another. I can get a few working together, but the getGOTerm service output has me stuck. Here is the output from the simple script just running this service and trying to get some of return values by themselves: phospholipase A2 activity Catalysis of the reaction: phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a carboxylate. Found an input Simple object: Class 'moby:GO_Term' xml_tag 'GO_Term' Namespace 'GO' ID 'GO:0004623' Name '' Value '' So I can get the articleName and even the GO:00004623 out of the various elements, but I can't figure out how to get the values of the Term and Definition from within the tags (phospholipase A2 activity). My code is as follows: #!/usr/bin/perl ##### put in 0004623 from the command line for it to run on something####### use MOBY::Client::Central; use MOBY::Client::Service; use MobyXmlObject; ################## getGOTerm ################## my $Central = MOBY::Client::Central->new(); my ($Services, $REG) = $Central->findService( authURI => 'www.illuminae.com', serviceName => 'getGoTerm', ); unless ($Services) { print "Discovery failed: ", $REG->message; exit(1); } my $svc = $Services->[0]; print "Executing service ", $svc->name, "\n", $svc->description, "\n\n"; my $wsdl = $Central->retrieveService($svc); my $S = MOBY::Client::Service->new(service => $wsdl); my $result; foreach my $goterm(@ARGV) { $result = $S->execute( XMLinputlist => [ ['', qq{}] ] ) || 'No result'; print $result, "\n"; } my @simples = MobyXmlObject->getMobySimples($result); my @go_list; foreach my $s (@simples) { my $class = $s->class(); my $namespace = $s->namespace(); my $id = $s->id(); my $name = $s->articleName(); my $value = $s->valueTrimmed(); my $xml_tag = $s->xml_tag(); print qq{ Found an input Simple object: Class '$class' xml_tag '$xml_tag' Namespace '$namespace' ID '$id' Name '$name' Value '$value' }; } Note to run it you should pass in 0004623 or another go id. Any help would be greatly appreciated! THANKS! -Michael Jensen mdjgf8 at mizzou.edu From steube at sdsc.edu Tue Dec 30 15:59:53 2003 From: steube at sdsc.edu (Ken Steube) Date: Tue, 30 Dec 2003 12:59:53 -0800 (PST) Subject: [MOBY-l] help with MobyXMLObject... In-Reply-To: <97B14724-3B04-11D8-B989-000393B6201C@acutrans.net> Message-ID: I included a working example for your XML, but a little explanation is required: A MOBY object is myVALUE so a MobyXmlObject $mobj returns five values $mobj->class() myCLASS $mobj->namespace() myNS $mobj->id() myID $mobj->articleName() myNAME $mobj->value() myVALUE If myVALUE includes XML, then these are separate MOBY objects. You need to use MobyXmlObject to access these additional MOBY objects using the $mobj->getIncludedObjects() call, which returns a list of new MobyXmlObject objects corresponding to the included objects. This is demonstrated in the included example. Ken On Tue, 30 Dec 2003, Michael Jensen wrote: > I am trying to put a few services together into one script, so taking > the output of one to another. I can get a few working together, but the > getGOTerm service output has me stuck. Here is the output from the > simple script just running this service and trying to get some of > return values by themselves: > > > xmlns='http://www.biomoby.org/moby'> > > > > > id='GO:0004623'> > namespace='' id='' articleName='Term'>phospholipase A2 > activity > namespace='' id='' articleName='Definition'>Catalysis of the reaction: > phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a > carboxylate. > > > > > > > > Found an input Simple object: > Class 'moby:GO_Term' > xml_tag 'GO_Term' > Namespace 'GO' > ID 'GO:0004623' > Name '' > Value '' > > > So I can get the articleName and even the GO:00004623 out of the > various elements, but I can't figure out how to get the values of the > Term and Definition from within the tags (phospholipase A2 activity). > My code is as follows: > > #!/usr/bin/perl > ##### put in 0004623 from the command line for it to run on > something####### > > use MOBY::Client::Central; > use MOBY::Client::Service; > use MobyXmlObject; > > ################## getGOTerm ################## > > my $Central = MOBY::Client::Central->new(); > > my ($Services, $REG) = $Central->findService( > authURI => 'www.illuminae.com', > serviceName => 'getGoTerm', > ); > unless ($Services) { print "Discovery failed: ", $REG->message; > exit(1); } > > my $svc = $Services->[0]; > print "Executing service ", $svc->name, "\n", $svc->description, "\n\n"; > my $wsdl = $Central->retrieveService($svc); > my $S = MOBY::Client::Service->new(service => $wsdl); > > my $result; > foreach my $goterm(@ARGV) { > $result = $S->execute( > XMLinputlist => [ ['', qq{}] > ] > ) || 'No result'; > print $result, "\n"; > } > > my @simples = MobyXmlObject->getMobySimples($result); > my @go_list; > > foreach my $s (@simples) { > my $class = $s->class(); > my $namespace = $s->namespace(); > my $id = $s->id(); > my $name = $s->articleName(); > my $value = $s->valueTrimmed(); > my $xml_tag = $s->xml_tag(); > print qq{ > Found an input Simple object: > Class '$class' > xml_tag '$xml_tag' > Namespace '$namespace' > ID '$id' > Name '$name' > Value '$value' > }; > } > > Note to run it you should pass in 0004623 or another go id. > > Any help would be greatly appreciated! > > THANKS! > > -Michael Jensen > mdjgf8 at mizzou.edu > > > _______________________________________________ > moby-l mailing list > moby-l at biomoby.org > http://biomoby.org/mailman/listinfo/moby-l > -- ------------------------------------- Ken Steube steube at sdsc.edu San Diego Supercomputer Center @ UCSD San Diego, California USA -------------- next part -------------- use MobyXmlObject; my $query = qq{ phospholipase A2 activity Catalysis of the reaction: phosphatidylcholine + H2O = 1-acylglycerophosphocholine + a carboxylate. }; my @simples = MobyXmlObject->getMobySimples($query); foreach my $s (@simples) { my ($class, $ns, $id) = ($s->class(), $s->namespace(), $s->id()); print "class=$class,ns=$ns,id=$id\n"; print " Included MOBY objects:\n"; foreach my $inc ($s->getIncludedObjects()) { my $class = $inc->class(); my $name = $inc->articleName(); my $value = $inc->valueTrimmed(); print " class=$class,name=$name,value=$value\n"; next; } } From markw at illuminae.com Tue Dec 30 18:03:45 2003 From: markw at illuminae.com (Mark Wilkinson) Date: Tue, 30 Dec 2003 17:03:45 -0600 Subject: [MOBY-l] Retiring the old CGI Client program! Message-ID: <1072825425.1724.117.camel@localhost.localdomain> Hi everyone! It will hang around in the CVS repository for a while, but I think it is time to retire that old crappy CGI client. I've installed the MOBY-S client that I just wrote for Gbrowse on mobycentral and that is now the default client program when you browse to http://mobycentral.cbr.nrc.ca This is the ONLY client that I plan to maintain, so if you are linking into a client program you should probably link to this one. You can invoke it with GET parameters '?namespace=SomeMobyNamespace&id=SomeID' or you can just start it up and select them from the dropdown menu as before. The only thing this client cannot do that the old one could is to send queries in bulk. I may get ambitious and write that in a few weeks, but if I start messing around with it just before the next Gbrowse release I am surely asking to be sent straight to purgatory without passing GO! The nice thing about this client is that it has a "plugins" like interface for writing new renderers for various object types - if anyone wants to write renderers, have a look at the code in the Gbrowse conf/MobyServices/*_renderer.pm modules for an example. The client will traverse the ontology from object-type-node back to root looking for a renderer to handle that object type; if it doesn't find one it will treat it as formatted text. Let me know if you find bugs. That's all the news for now, Cheers all! Happy New year! Mark -- Mark Wilkinson Assistant Professor (Bioinformatics) Dept. of Medical Genetics University of British Columbia's iCAPTURE Centre Vancouver, BC, Canada ------------------------------------------------------------------------ It just goes to show you that SOAP::Lite is more intuitive than you might think, if you know enough Perl and have the patience to dive into the source code. -Byrne Reese -http://builder.com.com/5100-6389_14-1045078-2.html ------------------------------------------------------------------------ From mdjgf8 at mizzou.edu Wed Dec 31 10:17:00 2003 From: mdjgf8 at mizzou.edu (Michael Jensen) Date: Wed, 31 Dec 2003 09:17:00 -0600 Subject: [MOBY-l] languages being used with MOBY... In-Reply-To: <1072881662.1718.59.camel@localhost.localdomain> References: <1072881662.1718.59.camel@localhost.localdomain> Message-ID: <61D77500-3BA4-11D8-B989-000393B6201C@mizzou.edu> I know Perl and Java are strong in BioMOBY, but I was wondering if others are using other languages to use and develop BioMOBY services with and to interact with services. What are the limitations of other languages besides not having all the modules ready to go like Perl and Java? Thanks! -Michael Jensen