Hi Harri,<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Microservices are written in C. So we couldn't access the Bio-Formats
C++ bindings from there. Maybe just use a system() call to run B-F?<br></blockquote><br>Sure, this is how we integrated Bio-Formats with the original C- and Perl-driven OME server. The "OMEIS" process (written in C) just invoked a particular Bio-Formats Java class responsible for parsing the file in question. This Bio-Formats class then wrote the pixel out to a particular binary file designated by OMEIS, and dumped the OME-XML metadata to stdout, which the OME server's perl layer then consumed. Maybe sounds complicated, but it worked like a charm!<br>
<br>The main thing is to create a Java helper class that behaves the way you want. You then make a single system call from C to that class.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">
Making the conversion to OME-TIFF in iRODS requires some coding, the operation should be wrapped into a "microservice": <a href="https://www.irods.org/index.php/Micro-Services" target="_blank">https://www.irods.org/index.php/Micro-Services</a><br>
</blockquote><br>Since all you need to do is convert to OME-TIFF, system
calls will be just fine. The main advantage of the C++ bindings is the
ability to perform very granular operations (at the same level as the
Java API), which is nice for some applications.<br><br>You might even be able to get away with calling the Bio-Formats "bfconvert" tool (loci.formats.tools.ImageConverter) without need for your own Java helper class.<br>
<br>-Curtis<br><br><div class="gmail_quote">2010/10/22 Harri Jäälinoja <span dir="ltr"><<a href="mailto:harri.jaalinoja@helsinki.fi">harri.jaalinoja@helsinki.fi</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Josh and others,<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Does iRODS have facilities for monitoring file access times and taking actions based on them? <br>
</blockquote>
<br></div>
yes, seems so. The attributes that are stored in the iRODS database include timestamps for modification and creation, and I assume it is possible to use those for querying:<br>
<a href="https://www.irods.org/index.php/icatAttributes" target="_blank">https://www.irods.org/index.php/icatAttributes</a><br>
<br>
It is possible to create delayed or repeated rules, there is a server process that checks every two minutes if there is something to do. So one could run a job every day to move old files to another location for example.<div class="im">
<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
>From the OMERO point-of-view, this sounds very straight-forward. The only issue I can think of off-hand is that OMERO.fs would have to handle the read-only status. I've added a story for this: <a href="http://trac.openmicroscopy.org.uk/omero/ticket/3162" target="_blank">http://trac.openmicroscopy.org.uk/omero/ticket/3162</a><br>
<br>
</blockquote></div>
Thanks. This is my setup so far:<br>
<br>
1. host1 (university general purpose server)<br>
- iRODS main server, with iCAT database<br>
<br>
2. host2 (Centos virtual server running in VMWare)<br>
- OMERO<br>
-- still need to enable OMERO.fs<br>
- iRODS server 2, no database.<br>
-- cannot connect to host1 iRODS, have to figure out why<br>
<br>
Once I get host2 set up, I can start learning iRODS controls with some simple tests.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
This is certainly a much larger undertaking, and could possibly involve making Bio-Formats iRODS-aware (just glancing at Jargon -- it does provide a RandomAccessFile interface, so the necessary modifications may be limited). Perhaps there's a way using callbacks to do the reverse of dropbox? i.e. OMERO writes out to a location, and then iRODS takes control of that location on receiving notification?<br>
<br>
</blockquote></div>
I think it might be possible to accomplish the reverse drop-box with either FUSE (Linux) or WebDAV (Windows, Linux, Mac):<br>
<a href="https://www.irods.org/index.php/iRODS_FUSE" target="_blank">https://www.irods.org/index.php/iRODS_FUSE</a><br>
<a href="https://projects.arcs.org.au/trac/davis" target="_blank">https://projects.arcs.org.au/trac/davis</a><br>
<br>
It seems those will provide an area iRODS is aware of, or a drop-box into iRODS. I am not sure about this, though. For example, I was explained that WebDAV doesn't really make a folder where you can write, but rather just a GUI like WinSCP. I don't know about FUSE yet.<div class="im">
<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
That's of course difficult for everyone involved to say. When you've got both systems running, perhaps we could start with a very simple test, like opening a file stored in iRODS via Bio-Formats and converting it to OME-TIFF in iRODS. That would let us know if there are any barriers to moving forward.<br>
<br>
</blockquote></div>
Making the conversion to OME-TIFF in iRODS requires some coding, the operation should be wrapped into a "microservice": <a href="https://www.irods.org/index.php/Micro-Services" target="_blank">https://www.irods.org/index.php/Micro-Services</a><br>
<br>
Microservices are written in C. So we couldn't access the Bio-Formats C++ bindings from there. Maybe just use a system() call to run B-F?<br>
<br>
I will let you know when I make progress.<br>
<br>
Cheers,<br><font color="#888888">
Harri</font><div><div></div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hoping to hear your comments!<br>
<br>
Best regards,<br>
Harri<br>
</blockquote>
<br>
Cheers,<br>
~Josh.<br>
</blockquote>
<br>
_______________________________________________<br>
ome-users mailing list<br>
<a href="mailto:ome-users@lists.openmicroscopy.org.uk" target="_blank">ome-users@lists.openmicroscopy.org.uk</a><br>
<a href="http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users" target="_blank">http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users</a><br>
</div></div></blockquote></div><br>