2. Development#
[1]:
%load_ext autoreload
%autoreload 2
# import skimage.io
# import matplotlib
# import matplotlib.pyplot as plt
# %matplotlib inline
# nd2 = "/home/dan/pims/pims/tests/data/bioformats/cluster.nd2"
from pathlib import Path
import nima_io.read as ir
tdata = Path("../../tests/data/")
lif = tdata / "2015Aug28_TransHXB2_50min+DMSO.lif"
img_tile = tdata / "t4_1.tif" # C=3 T=4 S=15
img_void_tile = tdata / "tile6_1.tif" # C=4 T=3 S=14 scattered
# imgsingle = tdata / "exp2_2.tif" # C=2 T=81
# mcts = tdata / "multi-channel-time-series.ome.tif" # C=3 T=7
# bigtiff = tdata / "LC26GFP_1.tf8" # bigtiff
slif = str(lif)
simg_tile = str(img_tile)
simg_void_tile = str(img_void_tile)
# simgsingle = str(imgsingle)
# smcts = str(mcts)Z`Z
# sbigtiff = str(bigtiff)
Core metadata list at: https://docs.openmicroscopy.org/bio-formats/7.1.0/developers/file-reader.html
[2]:
md, wr = ir.read(slif)
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
Cell In[2], line 1
----> 1 md, wr = ir.read(slif)
File ~/work/nima_io/nima_io/src/nima_io/read.py:428, in read(filepath)
426 if not Path(filepath).is_file():
427 msg = f"File not found: {filepath}"
--> 428 raise FileNotFoundError(msg)
429 ensure_jvm()
430 channel_separator = jimport("loci.formats.ChannelSeparator")
FileNotFoundError: File not found: ../../tests/data/2015Aug28_TransHXB2_50min+DMSO.lif
[3]:
wr.rdr.setSeries(4)
wr.rdr.getImageCount()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 1
----> 1 wr.rdr.setSeries(4)
2 wr.rdr.getImageCount()
NameError: name 'wr' is not defined
[4]:
wr.rdr.getDimensionOrder()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[4], line 1
----> 1 wr.rdr.getDimensionOrder()
NameError: name 'wr' is not defined
TODO: test convert value
[5]:
ome_store = wr.rdr.getMetadataStore()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[5], line 1
----> 1 ome_store = wr.rdr.getMetadataStore()
NameError: name 'wr' is not defined
2.1. XML#
getRoot was used in imgread-0.2.1
[6]:
root = ome_store.getRoot()
instrument = root.getInstrument(0)
detector = instrument.getDetector(0)
detector.getModel()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[6], line 1
----> 1 root = ome_store.getRoot()
2 instrument = root.getInstrument(0)
3 detector = instrument.getDetector(0)
NameError: name 'ome_store' is not defined
[7]:
wr.rdr.getMetadataStoreRoot().getInstrument(0).getDetector(0).getModel()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[7], line 1
----> 1 wr.rdr.getMetadataStoreRoot().getInstrument(0).getDetector(0).getModel()
NameError: name 'wr' is not defined
[8]:
wr.rdr.getMetadataStore().getRoot().getInstrument(0).getDetector(0).getModel()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[8], line 1
----> 1 wr.rdr.getMetadataStore().getRoot().getInstrument(0).getDetector(0).getModel()
NameError: name 'wr' is not defined
[9]:
[m for m in root.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[9], line 1
----> 1 [m for m in root.__dir__() if m[:3] == "get"]
NameError: name 'root' is not defined
[10]:
image = root.getImage(3)
[m for m in image.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[10], line 1
----> 1 image = root.getImage(3)
2 [m for m in image.__dir__() if m[:3] == "get"]
NameError: name 'root' is not defined
[11]:
obj = image.getObjectiveSettings()
[m for m in obj.__dir__() if m[:3] == "get"]
obj.getID()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[11], line 1
----> 1 obj = image.getObjectiveSettings()
2 [m for m in obj.__dir__() if m[:3] == "get"]
3 obj.getID()
NameError: name 'image' is not defined
[12]:
pixels = image.getPixels()
[m for m in pixels.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[12], line 1
----> 1 pixels = image.getPixels()
2 [m for m in pixels.__dir__() if m[:3] == "get"]
NameError: name 'image' is not defined
[13]:
ch = pixels.getChannel(0)
[m for m in ch.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[13], line 1
----> 1 ch = pixels.getChannel(0)
2 [m for m in ch.__dir__() if m[:3] == "get"]
NameError: name 'pixels' is not defined
[14]:
lp = ch.getLightPath()
[m for m in lp.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[14], line 1
----> 1 lp = ch.getLightPath()
2 [m for m in lp.__dir__() if m[:3] == "get"]
NameError: name 'ch' is not defined
[15]:
pixels.getTimeIncrement()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[15], line 1
----> 1 pixels.getTimeIncrement()
NameError: name 'pixels' is not defined
[16]:
plane = pixels.getPlane(11)
[m for m in plane.__dir__() if m[:3] == "get"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[16], line 1
----> 1 plane = pixels.getPlane(11)
2 [m for m in plane.__dir__() if m[:3] == "get"]
NameError: name 'pixels' is not defined
[17]:
import jpype
jpype.JObject(plane.getTheC()), plane.getDeltaT(), plane.getExposureTime()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[17], line 3
1 import jpype
----> 3 jpype.JObject(plane.getTheC()), plane.getDeltaT(), plane.getExposureTime()
NameError: name 'plane' is not defined
[18]:
for k in root.__dir__():
if k[:3] == "get":
print(k)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[18], line 1
----> 1 for k in root.__dir__():
2 if k[:3] == "get":
3 print(k)
NameError: name 'root' is not defined
[19]:
im = root.getImage(0)
obj = im.getObjectiveSettings()
(
obj.getID(),
obj.getMedium(),
obj.getRefractiveIndex(),
obj.getCorrectionCollar(),
obj.getObjective(),
)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[19], line 1
----> 1 im = root.getImage(0)
2 obj = im.getObjectiveSettings()
3 (
4 obj.getID(),
5 obj.getMedium(),
(...) 8 obj.getObjective(),
9 )
NameError: name 'root' is not defined
[20]:
(
wr.rdr.getMetadataStore().getObjectiveID(0, 0) == obj.getID(),
wr.rdr.getMetadataStore().getObjectiveLensNA(0, 0),
)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[20], line 2
1 (
----> 2 wr.rdr.getMetadataStore().getObjectiveID(0, 0) == obj.getID(),
3 wr.rdr.getMetadataStore().getObjectiveLensNA(0, 0),
4 )
NameError: name 'wr' is not defined
2.2. md vs root (to remember)#
from md i can get info on camera, objectives …
but also key parameters like exposuretime, DeltaT, planePositionXYZ
[21]:
md_vtile, wr_vtile = ir.read(simg_void_tile)
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
Cell In[21], line 1
----> 1 md_vtile, wr_vtile = ir.read(simg_void_tile)
File ~/work/nima_io/nima_io/src/nima_io/read.py:428, in read(filepath)
426 if not Path(filepath).is_file():
427 msg = f"File not found: {filepath}"
--> 428 raise FileNotFoundError(msg)
429 ensure_jvm()
430 channel_separator = jimport("loci.formats.ChannelSeparator")
FileNotFoundError: File not found: ../../tests/data/tile6_1.tif
[22]:
wr_vtile.rdr.getMetadataStore().getObjectiveCount(0)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[22], line 1
----> 1 wr_vtile.rdr.getMetadataStore().getObjectiveCount(0)
NameError: name 'wr_vtile' is not defined
[23]:
ome_store = wr_vtile.rdr.getMetadataStore()
ome_store.getXMLAnnotationValue(
0
) == ome_store.getRoot().getStructuredAnnotations().getXMLAnnotation(0).getValue()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[23], line 1
----> 1 ome_store = wr_vtile.rdr.getMetadataStore()
2 ome_store.getXMLAnnotationValue(
3 0
4 ) == ome_store.getRoot().getStructuredAnnotations().getXMLAnnotation(0).getValue()
NameError: name 'wr_vtile' is not defined
[24]:
# import bioformats
# md = bioformats.get_omexml_metadata(slif)
from xml.etree import ElementTree as ET
# mdroot = ET.fromstring(wr.rdr.getMetadataStore().dumpXML())
java_string = (
wr_vtile.rdr.getMetadataStoreRoot()
.getStructuredAnnotations()
.getXMLAnnotation(0)
.getValue()
)
python_string = jpype.java.lang.String(java_string).toString()
mdroot = ET.fromstring(python_string.getBytes())
for a in mdroot:
print((a.tag, a.attrib))
for aa in a:
print((" GGSSS ", aa.tag, aa.attrib))
for aaa in aa:
print((" GGSSS2 ", aaa.tag, aaa.attrib))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[24], line 8
4 from xml.etree import ElementTree as ET
6 # mdroot = ET.fromstring(wr.rdr.getMetadataStore().dumpXML())
7 java_string = (
----> 8 wr_vtile.rdr.getMetadataStoreRoot()
9 .getStructuredAnnotations()
10 .getXMLAnnotation(0)
11 .getValue()
12 )
13 python_string = jpype.java.lang.String(java_string).toString()
14 mdroot = ET.fromstring(python_string.getBytes())
NameError: name 'wr_vtile' is not defined
[25]:
import xmltodict
m1 = xmltodict.parse(ome_store.dumpXML().getBytes())
list(m1["OME"]), m1["OME"]["Instrument"]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[25], line 3
1 import xmltodict
----> 3 m1 = xmltodict.parse(ome_store.dumpXML().getBytes())
4 list(m1["OME"]), m1["OME"]["Instrument"]
NameError: name 'ome_store' is not defined
[26]:
metalist = [
(child.tag, [[child.attrib]])
for child in ET.fromstring(ome_store.dumpXML().getBytes()).iter()
]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[26], line 3
1 metalist = [
2 (child.tag, [[child.attrib]])
----> 3 for child in ET.fromstring(ome_store.dumpXML().getBytes()).iter()
4 ]
NameError: name 'ome_store' is not defined
[27]:
m = metalist[10]
m[0], m[1][0][0]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[27], line 1
----> 1 m = metalist[10]
2 m[0], m[1][0][0]
NameError: name 'metalist' is not defined
[28]:
for child in mdroot:
if child.tag.endswith(""):
for grandchild in child:
print((grandchild.tag, grandchild.attrib))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[28], line 1
----> 1 for child in mdroot:
2 if child.tag.endswith(""):
3 for grandchild in child:
NameError: name 'mdroot' is not defined