[ome-devel] adding woolz to bioformats
Bill Hill
Bill.Hill at igmm.ed.ac.uk
Mon Aug 26 18:14:01 BST 2013
Melissa,
Thanks for all your help. I've just pushed my changes for Woolz
(, WlzIIPSrv) and bioformats out to github.
I know that you can find the changes from git but this brief
summary is partly for us here:
add dir components/bio-formats/src/loci/formats/out
add components/bio-formats/src/loci/formats/in/WlzReader.java
add components/bio-formats/src/loci/formats/out/WlzWriter.java
add components/bio-formats/src/loci/formats/services/WlzService.java
add components/bio-formats/src/loci/formats/services/WlzServiceImpl.java
mod components/scifio/src/loci/formats/readers.txt
mod components/bio-formats/build.properties
mod components/bio-formats/pom.xml b/components/bio-formats/pom.xml
mod components/loci-legacy/src/loci/common/services/services.properties
mod components/scifio/src/loci/formats/writers.txt
With this we can now read/write 2 and 3D Woolz objects which
correspond to images (WLZ_2D_DOMAINOBJ and WLZ_3D_DOMAINOBJ).
The origin is preserved but spatial domains become rectangular.
Domains without (image) values become unsigned byte images with
image values 0 (outside domain) and 255 (inside domain).
Background values are not preserved, compound and all other
object types are unsupported.
All in https://github.com/ma-tech/bioformats/tree/develop-bill
and locally as git at mahost:bioformats.git
At some point soon I'll add dynamic libs for something other than
just recent 64 bit Linux's with libc.so.6.
Cheers,
Bill
> Hi Bill,
>
>
> On Thu, Aug 22, 2013 at 4:38 AM, Bill Hill <Bill.Hill at igmm.ed.ac.uk
> <mailto:Bill.Hill at igmm.ed.ac.uk>> wrote:
>
> Many thanks for all your help. I now have a Woolz reader/writer
> written which has all the Woolz stuff encapsulated in a service
> using a service factory. I've a few small bits to tidy up before
> I push it out my branch to an external git repository.
>
> *Q* I've not been able to find an example of reading a specific
> stage label, which following discussions here I'm using to record
> the origin of the Woolz object. I'm using this code to save the
> origin in WlzWriter.java:
>
> CoreMetadata md = core.get(0);
> MetadataStore store = makeFilterMetadata();
> md.rgb = wlz.isRGB();
> ...
> store.setStageLabelName("__WoolzOrigin", 0);
> store.setStageLabelX((double )(wlz.getOrgX()), 0);
> store.setStageLabelY((double )(wlz.getOrgY()), 0);
> store.setStageLabelZ((double )(wlz.getOrgZ()), 0);
> MetadataTools.populatePixels(__store, this);
>
> In WlzReader.java I have:
>
> MetadataRetrieve meta = getMetadataRetrieve();
> MetadataTools.__verifyMinimumPopulated(meta, series);
> wlz.open(id, "w");
> int oX = 0; // HACK TODO use WoolzOrigin
> int oY = 0; // HACK TODO use WoolzOrigin
> int oZ = 0; // HACK TODO use WoolzOrigin
> int nX = meta.getPixelsSizeX(series).__getValue().intValue();
> ...
> if(meta.__getPixelsPhysicalSizeX(0) != null) {
> vX = meta.getPixelsPhysicalSizeX(0)__.getValue();
> }
> ...
> int gType = FormatTools.__pixelTypeFromString(
> meta.getPixelsType(series).__toString());
> wlz.setupWrite(oX, oY, oZ, nX, nY, nZ, nC, nT, vX, vY, vZ,
> gType);
>
> Is there example code anywhere of reading a specific stage label?
>
>
> The stage label retrieval methods are analogous to the saving methods,
> so something like this should work:
>
> String stageLabelName = meta.getStageLabelName(0);
> Double stageLabelX = meta.getStageLabelX(0);
> Double stageLabelY = meta.getStageLabelY(0);
> Double stageLabelZ = meta.getStageLabelZ(0);
>
> *Q* I'd like to save the Woolz object's background value, ie the image
> value assumed to hold for the rest of the universe outside of the
> Woolz object's domain. Any suggestions on the appropriate metadata
> options for this?
>
>
> I can't think of a good place to put that at the moment - most likely
> we'd need to add that to the schema.
>
> *Q* How should the service fail when there's no native library?
> At the moment I have:
>
> bill at bill-lt% ./tools/showinf qwe.wlz
> ...
>
> Checking file format [Woolz]
> Initializing reader
> WlzReader initializing qwe.wlz
> Exception in thread "main" loci.formats.__MissingLibraryException:
> Woolz is required to read and write Woolz objects.
> Please obtain the necessary JAR and native library files from:
>
> http://www.emouseatlas.org/__emap/analysis_tools_resources/__software/woolz.html
> <http://www.emouseatlas.org/emap/analysis_tools_resources/software/woolz.html>.
> The source code for these is also available from:
> https://github.com/ma-tech/__Woolz <https://github.com/ma-tech/Woolz>.
> at
>
> loci.formats.services.__WlzServiceImpl.open(__WlzServiceImpl.java:126)
> at loci.formats.in.WlzReader.__initFile(WlzReader.java:111)
> at loci.formats.FormatReader.__setId(FormatReader.java:1333)
> at loci.formats.ImageReader.__setId(ImageReader.java:762)
> at loci.formats.ReaderWrapper.__setId(ReaderWrapper.java:564)
> at loci.formats.tools.ImageInfo.__testRead(ImageInfo.java:1017)
> at loci.formats.tools.ImageInfo.__main(ImageInfo.java:1062)
> Caused by: java.lang.__UnsatisfiedLinkError: no JWlz in
> java.library.path
> at java.lang.ClassLoader.__loadLibrary(ClassLoader.java:__1734)
> at java.lang.Runtime.__loadLibrary0(Runtime.java:823)
> at java.lang.System.loadLibrary(__System.java:1028)
> at uk.ac.mrc.hgu.Wlz.WlzBase.<__clinit>(WlzBase.java:46)
> at
>
> loci.formats.services.__WlzServiceImpl.open(__WlzServiceImpl.java:122)
> ... 6 more
>
>
> I would override the 'checkClassDependency(Class)' method in
> AbstractService and have it throw MissingLibraryException, as you are
> now. checkClassDependency can then be called from the constructor
> and/or open methods in your WlzServiceImpl (see for example
> loci.formats.service.OMEXMLServiceImpl).
>
> Regards,
> -Melissa
>
>
>
> Cheers,
> Bill
> --
> Bill Hill : http://www.hgu.mrc.ac.uk
> MRC Human Genetics Unit : http://www.emouseatlas.org
> MRC IGMM, University of Edinburgh : Bill.Hill at igmm.ed.ac.uk
> <mailto:Bill.Hill at igmm.ed.ac.uk>
> Western General Hospital : +44-131-3322471x2119
> <tel:%2B44-131-3322471x2119>
> Crewe Road, Edinburgh EH4 2XU, UK. : +44-131-4678456
> <tel:%2B44-131-4678456>
>
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
> _________________________________________________
> ome-devel mailing list
> ome-devel at lists.__openmicroscopy.org.uk
> <mailto:ome-devel at lists.openmicroscopy.org.uk>
> http://lists.openmicroscopy.__org.uk/mailman/listinfo/ome-__devel
> <http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel>
>
>
--
Bill Hill : http://www.hgu.mrc.ac.uk
MRC Human Genetics Unit : http://www.emouseatlas.org
MRC IGMM, University of Edinburgh : Bill.Hill at igmm.ed.ac.uk
Western General Hospital : +44-131-3322471x2119
Crewe Road, Edinburgh EH4 2XU, UK. : +44-131-4678456
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
More information about the ome-devel
mailing list