[ome-devel] connecting to omero via python

Will Moore will at lifesci.dundee.ac.uk
Sun Feb 6 23:26:30 GMT 2011


Hi Adam,

  Just an update on my previous response...

The blitzcon connection is just a wrapper around the other 'plain'  
connection you've used.
I would suggest you use the blitzcon connection, since if you need any  
methods from the plain API services, you can get them from the  
blitzcon object:

blitzcon.getContainerService()

This will also handle reuse of services, so you can call the above  
method repeatedly without unnecessary expense.
I believe the blitzcon connection will also handle timeouts and  
reconnection to the server.

The example I gave previously should have been

image.getChannels()
see http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/epydoc/omero.gateway._ImageWrapper-class.html#getChannels

If you have any feedback or comments about the Python client  
documentation, please let me know so we can make it easier for new users

  Cheers,

   Will


On 5 Feb 2011, at 08:04, Will Moore wrote:

> Hi Adam,
>
> Sorry for the confusion, but the connection you're using for most  
> stuff is the 'blitzcon' connection?
> Or is 'blitzcon' the "second" connection you're using to get Dataset  
> ID?
> Confusingly, we have a 'gateway' service in the createSession()  
> connection, but we also refer to the 'blitzcon' connection as  
> omero.gatewa
>
> You want to allow the user to browse their Projects and Datasets by  
> name, to get Dataset ID?
> You can use the container service to list Projects and Datasets...
>
> >>> projects = cs.loadContainerHierarchy("Project", None, None)
> >>> for p in projects:
> >>>        print p.getName().getValue()
> >>>        for d in p.linkedDatasetList():
> >>>             print d.getName().getValue()
>
> But if you know the name of the Dataset from the start, and you  
> simply want the ID, you CAN use the query service.
> Using the query service is a 'quick and dirty' way of writing your  
> own database queries, but could be more susceptible to changes in  
> the OMERO data model etc.
>
> Generally you will find it much easier to work with the blitzcon  
> connection.
> You can do
>
> i = blitzcon.getImage(ID)
> for c in i.listChannels():
> 	c.getName()
>
> However, the blitzcon connection may make more calls to the server  
> and you have less control of this.
> Let us know how you get on,
>
>   Will.
>
>
> On 4 Feb 2011, at 18:45, Adam Fraser wrote:
>
>> I'm in the process of developing the first OMERO interface from  
>> CellProfiler 2.0, and I'd like a little help in writing clean  
>> efficient code. The first module I'm working on is one that will  
>> import image channels into CP directly from OMERO.
>>
>> From a user point of view, the controls will look like this:
>> server: my server
>> username: afraser
>> password: *****
>> project: adams_project
>> dataset: adams_dataset
>>
>> ...and they'll specify a name for each of their channels somehow:
>> channel 1 name: DNA
>> channel 2 name: Actin
>> (add channel button)
>> (these names will be used in the input controls of downstream  
>> modules in CellProfiler)
>>
>> Just before the pipeline is run, I'd like to connect to the server,  
>> and create a list of all the image ids that I'll be accessing  
>> during each iteration. One way to do this would be:
>>
>>         c = omero.client(self.server.value)
>>         s = c.createSession(self.username.value, self.password.value)
>>         cs = s.getContainerService()
>>         blitzcon = client_wrapper(self.username.value,
>>                                   self.password.value,
>>                                   host=self.host.value, port=4064)
>>
>>         blitzcon.connect()
>>         for p in blitzcon.listProjects():
>>             for dataset in p.listChildren():
>>                 if dataset.getName() == self.dataset.value
>>                     dataset_id = dataset.getId()
>>
>>         imgs = cs.getImages("Dataset", [dataset_id], None)
>>         d = self.get_dictionary(image_set_list)
>>         for i, img in enumerate(imgs):
>>             image_set = image_set_list.get_image_set(i)
>>             d[i] = img.getId().getValue()
>>
>> I emboldened dataset_id because you can see that I am establishing  
>> a whole second connection just to get it because I was unable to  
>> find equivalent methods within omero.gateway which I am using (so  
>> far) for everything else.
>>
>> I was hoping someone could give me a better way of doing this.  
>> Additionally I have yet to run into trouble regarding keeping the  
>> session alive, but I'm not doing anything special to prevent it  
>> from going away so I expect this will be a problem eventually.
>>
>> Thanks for your help,
>> Adam
>> _______________________________________________
>> ome-devel mailing list
>> ome-devel at lists.openmicroscopy.org.uk
>> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel
>
> William Moore
> Wellcome Trust Centre for Gene Regulation & Expression
> College of Life Sciences
> MSI/WTB/JBC Complex
> University of Dundee
> Dow Street
> Dundee  DD1 5EH
> United Kingdom
>
> Phone 01382 386364
> http://openmicroscopy.org
>
>
>
>
>
> _______________________________________________
> ome-devel mailing list
> ome-devel at lists.openmicroscopy.org.uk
> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel

William Moore
Wellcome Trust Centre for Gene Regulation & Expression
College of Life Sciences
MSI/WTB/JBC Complex
University of Dundee
Dow Street
Dundee  DD1 5EH
United Kingdom

Phone 01382 386364
http://openmicroscopy.org





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openmicroscopy.org.uk/pipermail/ome-devel/attachments/20110206/1870b623/attachment.html>


More information about the ome-devel mailing list