Hi guys,
I have python script that runs fine outside KNIME. It uses python-bioformats to read image metadata to create a z-surface of the image sample to check focus issues. Now my idea was to transfer this to KNIME to do more analysis and create reports. But when I try to run the script it throw error messages.
I suspect that has something to do with the javabridge used by python-bioformats but I am not an expert here. The relevant part of the script is here:
import sys sys.path.append(r'c:\Users\Sebastian\Documents\GitHub\BioFormatsRead') sys.path.append(r'c:\Users\Sebastian\Documents\GitHub\BioFormatsRead\bftools') import bfimage as bf import dispZsurface as dsp import pandas as pd import matplotlib.pyplot as plt filenameczi = input_table['czifilename'][0] print'Selected CZI File: ', filenameczi # create plane info from CZI image file and write CSV file (optional) planetable, filenamecsv = bf.get_planetable(filenameczi, writecsv=False, separator='\t') # show the dataframe print planetable[:10] print planetable.shape[0]
And the error message is here:
Selected CZI File: s:\Python_Projects_Testdata\CZI\testwell96.czi
Failed to get class loci/common/RandomAccessInputStream
Problem retrieving Java Metadata Store or Series size: <class 'javabridge.jutil.JavaException'>
Traceback (most recent call last):
File "C:\Program Files\KNIME\plugins\org.knime.python_3.3.0.v201611242050\py\PythonKernel.py", line 282, in execute
exec(source_code, _exec_env, _exec_env)
File "<string>", line 12, in <module>
File "c:\Users\Sebastian\Documents\GitHub\BioFormatsRead\bfimage\bftools.py", line 383, in get_planetable
jmd, MetaInfo['TotalSeries'], MetaInfo['ImageIDs'], series_dimension, multires = get_java_metadata_store(imagefile)
File "c:\Users\Sebastian\Documents\GitHub\BioFormatsRead\bfimage\bftools.py", line 126, in get_java_metadata_store
rdr = bioformats.get_image_reader(None, path=imagefile)
File "C:\Anaconda2\lib\site-packages\bioformats\formatreader.py", line 945, in get_image_reader
rdr = ImageReader(path=path, url=url)
File "C:\Anaconda2\lib\site-packages\bioformats\formatreader.py", line 638, in __init__
self.path)
File "C:\Anaconda2\lib\site-packages\javabridge\jutil.py", line 1713, in make_instance
raise JavaException(jexception)
JavaException: loci/common/RandomAccessInputStream
Any idea how to solve this issue?
Sebi