Difference btwn OMERO Python API and OMERO API
Posted: Fri Nov 10, 2017 5:29 pm
Hello,
I am reading through the documentation and find that I have come to a crossroads in terms of understanding the difference and use for the OMERO Python API and simply the OMERO API. Let me back up a step to walk you through my logic and see where I have gone wrong.
The first developers page makes reference to OMERO.web and OMERO Clients. https://www.openmicroscopy.org/omero/developers/.
If you follow the link to OMERO clients, https://docs.openmicroscopy.org/omero/5.4.0/developers/GettingStarted/AdvancedClientDevelopment.html you will notice the first `Note` that says if you are only interested in using and not developing the OMERO client you should follow the OMERO client overview https://docs.openmicroscopy.org/omero/5.4.0/users/clients-overview.html.
Here the series of client applications: OMERO.web, OMERO.insight and OMERO.importer, are mentioned. Which leads me to my first question.
1) Is OMERO.web simply a component of OMERO clients? What is their relationship and why does the first page you enter mention them as separate entities if going down the chain you can learn about OMERO.web anyway?
Flow Diagram 1:
Developing OMERO clients -> OMERO clients overview -> OMERO.web framework
The next inconsistency in my understanding is the difference between the OMERO API and the OMERO Python API. If you start reading from the 'Developing OMERO clients' page, there is mention that a Blitz client is any application which uses the OMERO API to talk to the OMERO.blitz server. Without an example I don't know what a Blitz client is . If we follow a separate track via the OMERO.web framework page https://docs.openmicroscopy.org/omero/5.4.0/developers/Web.html, there is mention that the OMERO.web framework is all based on the OMERO Python API. I couldn't find any "OMERO Python API", but I was able to locate a page for the "OMERO Python language bindings" which states that in addition to the auto-generated Python libraries of the core OMERO API, you have developed a more user-friendly Python module ‘Blitz Gateway’ that facilitates several aspects of working with the Python API.
This leads to my second question.
2) What is the difference between the OMERO API vs OMERO Python API vs OMERO Python Language Bindings
Flow Diagram 2:
Developing OMERO clients -> OMERO API
vs
OMERO.web framework -> OMERO Python API
vs
Using OMERO API -> OMERO Python Language Bindings (developed Blitz gateway instead of OMERO API)
And last question,
3) How does the Blitz client differ from the Blitz gateway.
This is my depiction of the system so far, which definitely has mistakes. I am attempting to understand the flow of data throughout the system.
I would most like to clear up how and data is transferred from OMERO.web to OMERO.server, the Blitz gateway has thrown off my understanding due to the comments on the omero.model being wrapped and then transferred to the OMERO API (if this is correct). My original thought was that we were passing JSON objects between the Django API app and OMERO-server but that can't be right. I know this is probably the longest post by the most confused individual you have seen in 12 years so I thank you in advance.
Personal Note (My 2 cents after working with OMERO for 6 weeks):
I truly believe in this project, but I also think the number of hyperlinks embedded within each document makes it hard to get through a page without first being told to read through 5-10 other pages. There should be an effort to consolidate the number of pages so that there is a natural flow to the way the docs are read because currently a new developer is thrown into the deep-end in trying to make sense of the docs.
I think lessons can be learned from the Docker tutorials (https://docs.docker.com/get-started/) and the Robot-Operating-System tutorials (http://wiki.ros.org/ROS/Tutorials). In the OMERO docs, there isn't a clear path to teach yourself what you're looking for. An example is on the OMERO.web framework page (https://docs.openmicroscopy.org/omero/5 ... s/Web.html), there is mention of an app that lets you browse data through map annotations linked to images called OMERO.mapr. It makes reference to a repository (https://github.com/ome/omero-mapr/) with the instructions on how to install and test the application. But nowhere is there mention of how a user actually is supposed to use it.
A second example can be found in the installations page for the OMERO.server (https://docs.openmicroscopy.org/omero/5 ... ation.html). You'll notice that the first sentence that reads, "Depending upon which platform you are using, you may find a more specific walk-through listed below but we recommend you read through this page first as it explains the entire process." The problem with this is that you yourself have to keep track of the flow of docs that should be read. Some developers may choose to skip straight to the document that is specific to their system and some may read through to the bottom of the page and forget to go back to the top to find their OS specific installation.
In my case, I moved onto the Ubuntu Installation where the very first line tells me that this page "should be read in conjunction with OMERO.web administration" (https://docs.openmicroscopy.org/omero/5 ... l-web.html). I find that is difficult to hold the readers attention in one place, to ask them to read 2 documents at the same time with no guidance in what order they should be read, makes things difficult. In the paragraph following I'm told "This guide does not describe how to install OMERO.web. To deploy OMERO.web separately from OMERO.server (recommended), please read OMERO.web installation separately from OMERO.server on Ubuntu 16.04 and IcePy 3.6 or to deploy with OMERO.server OMERO.web installation with OMERO.server on Ubuntu 16.04 and IcePy 3.6". Here's the first problem, I now have to keep track of more links to make sure I get this done correctly. There are often times where I had 15-20 tabs open in my browser to different OMERO pages. This quickly becomes a programmers, all too often, nightmare of keeping track of an unnecessarily complicated system. The second problem and more importantly, is that I'm not told WHY I should be choosing either scenario. Throughout the docs components of the system are given to the user but often times the reason behind some functional component is left out. A system that is extremely versatile and has 10,000 tools is not necessarily better than a system that has 100 tools. Especially if the user/developer doesn't know how to make use of 90% of the tools.
I have been able to learn complex architectures (with more functionality than OMERO) in under a week, but have been working on OMERO for nearly 6 weeks and am still unable to tell you the difference between OMERO.web and an OMERO client and how to go about editing the source code without breaking the OMERO data model. Infact, the only reason I was able to get the server/client up and running is because there are OMERO-web and OMERO-server Docker images in the OME repository.
I think if you insert into the docs some language that focuses on reiterating the WHY of each step, that would be hugely important. For example why the 'web-gateway' is used or the 'Blitz-gateway' or 'Ice', instead of just the pure functionality of how it works. Don't assume the developer has a deep understanding of the system the 5th layer down. A gentle constant reminder of why we are using OMERO Python API would be great. If you really want a product to become widespreadly used it needs to be EASY to learn, and EASY to use. You really can't create a standard if nobody knows how to use it. If the documentation is cleaned up, an added bonus is that there is less likely a need for the forum because ideas are clearly expressed in the documentation and walkthroughs have a natural flow in installing the system and extending the system.
I'd like to close by saying that although everything I just said may seem critical, it goes without saying that this project has done a great job blending years of knowledge in the field for scientists to consolidate their needs in using a system that allows them to store and share their data. I am using OMERO because it is the best option out there, and I would like the number of users to spread like wildfire, but I don't know if the documentation yet allows the functionality of the project to shine through.
I am reading through the documentation and find that I have come to a crossroads in terms of understanding the difference and use for the OMERO Python API and simply the OMERO API. Let me back up a step to walk you through my logic and see where I have gone wrong.
The first developers page makes reference to OMERO.web and OMERO Clients. https://www.openmicroscopy.org/omero/developers/.
If you follow the link to OMERO clients, https://docs.openmicroscopy.org/omero/5.4.0/developers/GettingStarted/AdvancedClientDevelopment.html you will notice the first `Note` that says if you are only interested in using and not developing the OMERO client you should follow the OMERO client overview https://docs.openmicroscopy.org/omero/5.4.0/users/clients-overview.html.
Here the series of client applications: OMERO.web, OMERO.insight and OMERO.importer, are mentioned. Which leads me to my first question.
1) Is OMERO.web simply a component of OMERO clients? What is their relationship and why does the first page you enter mention them as separate entities if going down the chain you can learn about OMERO.web anyway?
Flow Diagram 1:
Developing OMERO clients -> OMERO clients overview -> OMERO.web framework
The next inconsistency in my understanding is the difference between the OMERO API and the OMERO Python API. If you start reading from the 'Developing OMERO clients' page, there is mention that a Blitz client is any application which uses the OMERO API to talk to the OMERO.blitz server. Without an example I don't know what a Blitz client is . If we follow a separate track via the OMERO.web framework page https://docs.openmicroscopy.org/omero/5.4.0/developers/Web.html, there is mention that the OMERO.web framework is all based on the OMERO Python API. I couldn't find any "OMERO Python API", but I was able to locate a page for the "OMERO Python language bindings" which states that in addition to the auto-generated Python libraries of the core OMERO API, you have developed a more user-friendly Python module ‘Blitz Gateway’ that facilitates several aspects of working with the Python API.
This leads to my second question.
2) What is the difference between the OMERO API vs OMERO Python API vs OMERO Python Language Bindings
Flow Diagram 2:
Developing OMERO clients -> OMERO API
vs
OMERO.web framework -> OMERO Python API
vs
Using OMERO API -> OMERO Python Language Bindings (developed Blitz gateway instead of OMERO API)
And last question,
3) How does the Blitz client differ from the Blitz gateway.
This is my depiction of the system so far, which definitely has mistakes. I am attempting to understand the flow of data throughout the system.
I would most like to clear up how and data is transferred from OMERO.web to OMERO.server, the Blitz gateway has thrown off my understanding due to the comments on the omero.model being wrapped and then transferred to the OMERO API (if this is correct). My original thought was that we were passing JSON objects between the Django API app and OMERO-server but that can't be right. I know this is probably the longest post by the most confused individual you have seen in 12 years so I thank you in advance.
Personal Note (My 2 cents after working with OMERO for 6 weeks):
I truly believe in this project, but I also think the number of hyperlinks embedded within each document makes it hard to get through a page without first being told to read through 5-10 other pages. There should be an effort to consolidate the number of pages so that there is a natural flow to the way the docs are read because currently a new developer is thrown into the deep-end in trying to make sense of the docs.
I think lessons can be learned from the Docker tutorials (https://docs.docker.com/get-started/) and the Robot-Operating-System tutorials (http://wiki.ros.org/ROS/Tutorials). In the OMERO docs, there isn't a clear path to teach yourself what you're looking for. An example is on the OMERO.web framework page (https://docs.openmicroscopy.org/omero/5 ... s/Web.html), there is mention of an app that lets you browse data through map annotations linked to images called OMERO.mapr. It makes reference to a repository (https://github.com/ome/omero-mapr/) with the instructions on how to install and test the application. But nowhere is there mention of how a user actually is supposed to use it.
A second example can be found in the installations page for the OMERO.server (https://docs.openmicroscopy.org/omero/5 ... ation.html). You'll notice that the first sentence that reads, "Depending upon which platform you are using, you may find a more specific walk-through listed below but we recommend you read through this page first as it explains the entire process." The problem with this is that you yourself have to keep track of the flow of docs that should be read. Some developers may choose to skip straight to the document that is specific to their system and some may read through to the bottom of the page and forget to go back to the top to find their OS specific installation.
In my case, I moved onto the Ubuntu Installation where the very first line tells me that this page "should be read in conjunction with OMERO.web administration" (https://docs.openmicroscopy.org/omero/5 ... l-web.html). I find that is difficult to hold the readers attention in one place, to ask them to read 2 documents at the same time with no guidance in what order they should be read, makes things difficult. In the paragraph following I'm told "This guide does not describe how to install OMERO.web. To deploy OMERO.web separately from OMERO.server (recommended), please read OMERO.web installation separately from OMERO.server on Ubuntu 16.04 and IcePy 3.6 or to deploy with OMERO.server OMERO.web installation with OMERO.server on Ubuntu 16.04 and IcePy 3.6". Here's the first problem, I now have to keep track of more links to make sure I get this done correctly. There are often times where I had 15-20 tabs open in my browser to different OMERO pages. This quickly becomes a programmers, all too often, nightmare of keeping track of an unnecessarily complicated system. The second problem and more importantly, is that I'm not told WHY I should be choosing either scenario. Throughout the docs components of the system are given to the user but often times the reason behind some functional component is left out. A system that is extremely versatile and has 10,000 tools is not necessarily better than a system that has 100 tools. Especially if the user/developer doesn't know how to make use of 90% of the tools.
I have been able to learn complex architectures (with more functionality than OMERO) in under a week, but have been working on OMERO for nearly 6 weeks and am still unable to tell you the difference between OMERO.web and an OMERO client and how to go about editing the source code without breaking the OMERO data model. Infact, the only reason I was able to get the server/client up and running is because there are OMERO-web and OMERO-server Docker images in the OME repository.
I think if you insert into the docs some language that focuses on reiterating the WHY of each step, that would be hugely important. For example why the 'web-gateway' is used or the 'Blitz-gateway' or 'Ice', instead of just the pure functionality of how it works. Don't assume the developer has a deep understanding of the system the 5th layer down. A gentle constant reminder of why we are using OMERO Python API would be great. If you really want a product to become widespreadly used it needs to be EASY to learn, and EASY to use. You really can't create a standard if nobody knows how to use it. If the documentation is cleaned up, an added bonus is that there is less likely a need for the forum because ideas are clearly expressed in the documentation and walkthroughs have a natural flow in installing the system and extending the system.
I'd like to close by saying that although everything I just said may seem critical, it goes without saying that this project has done a great job blending years of knowledge in the field for scientists to consolidate their needs in using a system that allows them to store and share their data. I am using OMERO because it is the best option out there, and I would like the number of users to spread like wildfire, but I don't know if the documentation yet allows the functionality of the project to shine through.