Hi Chris<br><br>13 minutes is the result for 50.000 inserts, sorry I reported only my last test. The test with 1000 images was completed in about 36 seconds.<br><br>Luca<br><br><div class="gmail_quote">2009/8/6 Chris Allan <span dir="ltr">&lt;<a href="mailto:callan@blackcat.ca">callan@blackcat.ca</a>&gt;</span><br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Thu, 2009-08-06 at 12:50 +0200, Luca Lianas wrote:<br>
&gt; Hi Chris<br>
<br>
Hi Luca.<br>
<div class="im"><br>
&gt;<br>
&gt; thanks for your advice. As suggested by you, I modified the script and<br>
&gt; created only 4 LogicalChannelI objects linked to the image&#39;s channels<br>
&gt; (I looked into the xml model file and found the many-to-one<br>
&gt; relationship between channel and logicalchannel), now the execution<br>
&gt; time takes only 13 minutes.<br>
<br>
</div>1 minute and 42 seconds --&gt; 13 minutes? (did you mean seconds? :))<br>
<br>
As OMERO&#39;s objects are graph oriented you also don&#39;t need to save the<br>
LogicalChannels you are re-using. So just, the following at the top of<br>
your try block is fine:<br>
<br>
  adenine = om.model.LogicalChannelI()<br>
  adenine.setName(omt.rstring(&#39;ADENINE&#39;))<br>
  citosine = om.model.LogicalChannelI()<br>
  citosine.setName(omt.rstring(&#39;CITOSINE&#39;))<br>
  guanine = om.model.LogicalChannelI()<br>
  guanine.setName(omt.rstring(&#39;GUANINE&#39;))<br>
  thymine = om.model.LogicalChannelI()<br>
  thymine.setName(omt.rstring(&#39;THYMINE&#39;))<br>
<br>
OMERO knows how to inspect the graph for duplicates, how to ensure<br>
references are properly represented, calculate the INSERT plan, etc.<br>
<div class="im"><br>
&gt; I attach the script in order to provide an example if anybody needs<br>
&gt; one.<br>
&gt;<br>
&gt; Luca<br>
<br>
</div><font color="#888888">-Chris<br>
</font><div><div></div><div class="h5"><br>
&gt; 2009/8/5 Chris Allan &lt;<a href="mailto:callan@blackcat.ca">callan@blackcat.ca</a>&gt;<br>
&gt;         Hi Luca,<br>
&gt;<br>
&gt;         One big thing is to be very careful with enumerations:<br>
&gt;<br>
&gt;         26       do = om.model.DimensionOrderI()<br>
&gt;         27       do.setValue(omt.rstring(&#39;XYZCT&#39;))<br>
&gt;         28       pt = om.model.PixelsTypeI()<br>
&gt;         29       pt.setValue(omt.rstring(&#39;uint16&#39;))<br>
&gt;<br>
&gt;         This is creating brand new enumerations for every image<br>
&gt;         inserted, which<br>
&gt;         will slow any enumeration queries to a crawl and is causing<br>
&gt;         3000 extra<br>
&gt;         INSERTs, significant graph inspection overhead, etc. You want<br>
&gt;         to<br>
&gt;         retrieve the existing enumerations through IQuery and then use<br>
&gt;         an<br>
&gt;         unloaded version of the object to help you out, for example<br>
&gt;         (pseudo-code):<br>
&gt;<br>
&gt;         ...<br>
&gt;         dimension_orders = iquery.findAll(&quot;DimensionOrder&quot;)<br>
&gt;         xyzct = filter(lambda a: a.value.val == &#39;XYZCT&#39;)[0]<br>
&gt;         syzct.unload()<br>
&gt;         ...<br>
&gt;         for image in range(0, 100):<br>
&gt;         ...<br>
&gt;            p.setDimensionOrder(xyzct)<br>
&gt;<br>
&gt;         The above applies to FormatI, DimensionOrderI and PixelsTypeI.<br>
&gt;         In fact,<br>
&gt;         you&#39;ve sort of corrupted your database in a way for the<br>
&gt;         particular user<br>
&gt;         you&#39;ve logged in as by adding 1000&#39;s of bogus enumerations.<br>
&gt;<br>
&gt;         Give that a try first after deleting your bogus enums and see<br>
&gt;         where you<br>
&gt;         get to.<br>
&gt;<br>
&gt;         -Chris<br>
&gt;<br>
&gt;<br>
&gt;         On Wed, 2009-08-05 at 16:06 +0200, Luca Lianas wrote:<br>
&gt;         &gt; Sorry, i forgot the attachment...<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt; 2009/8/5 Luca Lianas &lt;<a href="mailto:luca.lianas@crs4.it">luca.lianas@crs4.it</a>&gt;<br>
&gt;         &gt;         I belong to the biomedical reserch group at CRS4, a<br>
&gt;         research<br>
&gt;         &gt;         centre in Italy; we are currently using omero in<br>
&gt;         several<br>
&gt;         &gt;         projects and we are running some performance tests<br>
&gt;         during<br>
&gt;         &gt;         these days.<br>
&gt;         &gt;         We noticed that the server has low performances when<br>
&gt;         loading a<br>
&gt;         &gt;         large amount of data (I tried to load the<br>
&gt;         meta-informations<br>
&gt;         &gt;         for 50.000 4-channel images).<br>
&gt;         &gt;         I did a smaller test loading 1000 images using a<br>
&gt;         python script<br>
&gt;         &gt;         and it took 1 minute and 42 seconds to load the data<br>
&gt;         (as said<br>
&gt;         &gt;         before, I only wrote the meta-data of the images<br>
&gt;         into the<br>
&gt;         &gt;         database, the real pixels are stored into a HDFS<br>
&gt;         file system).<br>
&gt;         &gt;         I used the compiled version of Omero downloaded from<br>
&gt;         the<br>
&gt;         &gt;         website and with default configuration. Omero runs<br>
&gt;         on a Linux<br>
&gt;         &gt;         server (Fedora core 11) with a dual opteron<br>
&gt;         processor (248<br>
&gt;         &gt;         model) and 4GB of RAM.<br>
&gt;         &gt;         I&#39;m wondering what is the problem and if there are<br>
&gt;         some hints<br>
&gt;         &gt;         to improve the performances on the server. Any help<br>
&gt;         is<br>
&gt;         &gt;         appreciated.<br>
&gt;         &gt;<br>
&gt;         &gt;         Please see the script I&#39;m using, as per attachment<br>
&gt;         (maybe is<br>
&gt;         &gt;         the script itself my problem).<br>
&gt;         &gt;<br>
&gt;         &gt;         Thanks for you attention<br>
&gt;         &gt;<br>
&gt;         &gt;         Luca<br>
&gt;         &gt;<br>
&gt;<br>
&gt;         &gt; _______________________________________________<br>
&gt;         &gt; ome-devel mailing list<br>
&gt;         &gt; <a href="mailto:ome-devel@lists.openmicroscopy.org.uk">ome-devel@lists.openmicroscopy.org.uk</a><br>
&gt;         &gt;<br>
&gt;         <a href="http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel" target="_blank">http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel</a><br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br>