[MOBY-dev] [MOBY-l] DataInputs for complex services

Ola Spjuth ola.spjuth at farmbio.uu.se
Fri Aug 10 12:36:38 UTC 2007


Thanks a lot Paul, that got me going.

Another question:
Is there a way to cache the data type and namespace ontologies and  
get rid of the annoying

Fetching data type ontology from http://biomoby.org/RESOURCES/MOBY-S/ 
Objects
  ... done
Fetching namespace ontology from http://biomoby.org/RESOURCES/MOBY-S/ 
Namespaces

which happens on every startup? Can I download the ontologies and  
tell jMoby where it is located locally?

Cheers,

    ../Ola

On Aug 9, 2007, at 16:51 , Paul Gordon wrote:

> Hi Ola,
>
> The key, if you are using the org.biomoby.shared.data package, is that
> everything is a primitive, or a composite.
> Composites are Java Maps, with member article names as the keys.  See
> the examples below.  May I suggest, if you have
> not already, to join the moby-dev mailing list, as the moby-l mailing
> list is primarily for non-technical discussion
> (I'm cross-posting this reply just in case you are not on moby-dev,  
> and
> to show the moby-l-only folks that we are
> doing real work ;-)).
>> Hello,
>>
>> Thanks for a great framework, I am excited to add BioMoby features to
>> Bioclipse (http://www.bioclipse.net). However, I have some questions
>> to get things running:
>>
>> How do I set up the PrimaryDataInput and SecondaryDatainputs for a
>> more advanced service in jMoby?
>> For example, the service 'runClustalwFast':
>>
>> MobyService templateService = new MobyService("runClustalwFast");
>> MobyService[] validServices = worker.findService(templateService);
>>
>> This gives me the following info from the service:
>>
>> Primary inputs:
>> Name: 'sequences' - DataType: 'GenericSequence'
>>
> /** Here is the 'Generic' solution, untested and off the cuff */
>
> MobyDataComposite seq = new MobyDataComposite("GenericSequence");
> for(MobyRelationship child: seq.getDataType().getAllChildren()){
>   String childTypeName = child.getDataTypeName();
>   // Things are either primitive, or composite
>   if(PrimitiveType.isPrimitive(childTypeName)){
>     seq.put(child.getName(),
>                 MobyDataObject.createInstanceFromString(childTypeName,
>
> sourceDataStringForThisField));
>   }
>   else{
>     // recursively populate the child as a MobyDataComposite
>   }
> }
>> Primary outputs:
>> Name: 'alignment' - DataType: 'Clustalw_Text'
>>
> You don't need to do anything, the service will populate this for
> you (via MobyRequest.invokeService()).
>
>> Secondary inputs:
>> Name: 'ktup' - DataType: 'Integer'
>> Name: 'gapext' - DataType: 'Float'
>> Name: 'transitions_weight' - DataType: 'Float'
>> Name: 'window' - DataType: 'Integer'
>> Name: 'topdiag' - DataType: 'Integer'
>> Name: 'matrix' - DataType: 'String'
>> Name: 'pairgap' - DataType: 'Integer'
>> Name: 'endgaps' - DataType: 'String'
>> Name: 'gapdist' - DataType: 'Integer'
>> Name: 'gapopen' - DataType: 'Float'
>>
>    public static void setSecondaries(MobyRequest mr, MobyService  
> service){
>         MobySecondaryData[] secondaryData =  
> service.getSecondaryInputs();
>         MobyDataSecondaryInstance[] secondaryInstances =
>             new MobyDataSecondaryInstance[secondaryData.length];
>
>         for(int i = 0; i < secondaryData.length; i++){
>             MobySecondaryData param = secondaryData[i];
>             // Set specific values for the following param, just as an
> example
>             if(param.getName().equals("strand")){
>                 secondaryInstances[i] = new
> MobyDataSecondaryInstance(param, "Reverse");
>             }
>             // Use default value for other parameters (if any), is set
> to the registered default value automagically
>             else{
>                 secondaryInstances[i] = new
> MobyDataSecondaryInstance(param);
>             }
>         }
>
>         mr.setSecondaryInput(secondaryInstances);
>     }
>
>> How do I set up the inputs with MobyDataObject's for this service?
>> The sample clients in CVS only deal with simple setups (id and
>> namespace) so some lines of example code would be really helpful.
>>
>> Another question: How can I from the MobyDataType tell what format I
>> should expect to fill in? If it is 'GenericSequence', how can I tell
>> if i'm supposed to add a String? Can I look that up somewhere?
> This is covered in the first example, mobyDataType.getAllChildren();
>
>> And do
>> the MobyDataType's have constraints (like min/max values) etc?
> No, only Secondary parameters have constraints on values in Moby.
>> I have
>> also not really understood the key-value-datatype. Is it possible to
>> get the allowed keys from the MobyDataType in some way?
>>
> Do you mean namespace/id?  You can get the list of valid namespaces  
> with
> Central..|*getFullNamespaces
> <http://biomoby.open-bio.org/CVS_CONTENT/moby-live/Java/docs/API/ 
> org/biomoby/shared/Central.html#getFullNamespaces%28%29>*()|
> .
> There is no way to validate IDs except by submitting them to services
> are seeing if they work.
>
> Hope this helps!
>
> -Paul
>> Cheers,
>>
>>     .../Ola Spjuth
>>
>>
>>
>>
>> _______________________________________________
>> moby-l mailing list
>> moby-l at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/moby-l
>>
>> !DSPAM:60005,46ba331480211783021950!
>>
>>
>>
>>
>
> _______________________________________________
> MOBY-dev mailing list
> MOBY-dev at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/moby-dev




More information about the MOBY-dev mailing list