Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pixel classification predictions using Ilastik classifier #13

Merged
merged 10 commits into from May 9, 2018

Conversation

mcquin
Copy link
Contributor

@mcquin mcquin commented Jun 15, 2017

Create probability maps using an Ilastik pixel classifier. Users must specify the Ilstik executable name, or provide the path to the executable if it is not on the system path. Additionally, users must specify the location of their project (.ilp) file.

Input:
screen shot 2017-06-15 at 10 04 17 am

Output:
screen shot 2017-06-15 at 10 04 00 am

Probability map segmentation with IdentifyPrimaryObjects:
screen shot 2017-06-15 at 10 04 02 am

@chaubold @stuarteberg @karhohs @bethac07 @0x00b1

predict.py Outdated

fin = tempfile.NamedTemporaryFile(suffix=".h5", delete=False)

with h5py.File(fin.name, "w") as f:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ilastik can use NumPy arrays. You could replace this HDF5 stuff with numpy.save.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NumPy is not compatible with all versions of Ilastik. It doesn't seem to be supported in the version I have, which is 1.0.2.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly, we have only added the numpy load/save interface recently. The upside of using hdf5 is that ilastik might access the data faster and not load it all into RAM if the images get really big.


x_data = image.pixel_data

fin = tempfile.NamedTemporaryFile(suffix=".h5", delete=False)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use TemporaryFile scopes, e.g. with TemporaryFile as temporary:.

Copy link
Contributor

@0x00b1 0x00b1 Jun 15, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've opted to use another pattern suggested by the article since the behavior is unspecified when one process tries to write to a file opened by another process.

@mcquin
Copy link
Contributor Author

mcquin commented Jun 15, 2017

@0x00b1 I'm ready for another review. :)

@AnneCarpenter
Copy link
Member

I'm super excited about this!!

Would be great if you all can wait for @karhohs or @bethac07 to edit the user-facing documentation if needed (in the "?" buttons for each setting) and decide on the visible settings labels (right now they aren't consistent w other modules AFAIK).

@bethac07
Copy link
Member

bethac07 commented Aug 22, 2017

Can you add what the output settings within ilastik should be to the documentation (ie that the user should just leave them at h5, etc)? I definitely was wondering that now on my first attempt to use it.

@bethac07
Copy link
Member

bethac07 commented Sep 28, 2017

I am an idiot, see below, but preserved comment in case someone else runs into this in the future.
This totally broke at some point between August 22nd and September 10th.

INFO ilastik_main: Starting ilastik from "C:\Program Files\ilastik-1.2.0".
Starting ilastik from "C:\Program Files\ilastik-1.2.0".
INFO ilastik.applets.thresholdTwoLevels.opThresholdTwoLevels: Using 'vigra' labeling implemetation
WARNING 2017-09-28 13:50:25,519 __init__ 8776 13752 Failed to import automatic tracking workflow (conservation tracking). For this workflow, see the installationinstructions on our website ilastik.org; check dependencies: No module named pgmlinkNoIlpSolver
WARNING 2017-09-28 13:50:25,621 __init__ 8776 13752 Failed to import structured learning tracking workflow. For this workflow, see the installationinstructions on our website ilastik.org; check dependencies: DLL load failed: The specified module could not be found.
WARNING 2017-09-28 13:50:29,625 __init__ 8776 13752 Failed to import 'Edge Training With Multicut' workflow; check dependencies: Can't import OpMulticut: No solver libraries detected!
INFO ilastik.shell.projectManager: Opening Project: C:/Users/bcimini/Desktop/Test30_120.ilp
WARNING dataset.py(70): DeprecationWarning: numpy boolean negative, the `-` operator, is deprecated, use the `~` operator or the logical_not function instead.
INFO ilastik.workflows.pixelClassification.pixelClassificationWorkflow: Beginning Batch Processing
ERROR 2017-09-28 13:50:35,355 log_exception 8776 13752 Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\shell\projectManager.py", line 443, in _loadProject
    self.workflow.onProjectLoaded( self )
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\workflows\pixelClassification\pixelClassificationWorkflow.py", line 337, in onProjectLoaded
    self.batchProcessingApplet.run_export_from_parsed_args(self._batch_input_args)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 59, in run_export_from_parsed_args
    return self.run_export(role_path_dict, parsed_args.input_axes)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 120, in run_export
    export_to_array=export_to_array )
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 210, in _run_export_with_empty_batch_lane
    opDataSelectionBatchLaneView.DatasetGroup[role_index].setValue(info)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 110, in call_in_setup_context
    return func(self, *args, **kwargs)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1195, in setValue
    self._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1401, in _changed
    self._configureOperator(self)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1415, in _configureOperator
    self.operator._setupOutputs()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\operator.py", line 450, in _setupOutputs
    self.setupOutputs()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\dataSelection\opDataSelection.py", line 317, in setupOutputs
    .format( "".join(tag.key for tag in datasetInfo.axistags), len(providerSlot.meta.shape) ) )
Exception: Your dataset's provided axistags (yxc) do not have the correct dimensionality for your dataset, which has 2 dimensions.

ERROR 2017-09-28 13:50:35,355 log_exception 8776 13752 Project could not be loaded due to the exception shown above.
Aborting Project Open Action
ERROR 2017-09-28 13:50:36,898 excepthooks 8776 13752 Unhandled exception in thread: 'MainThread'
ERROR 2017-09-28 13:50:36,905 excepthooks 8776 13752 Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik.py", line 122, in <module>
    main()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik.py", line 108, in main
    ilastik_main.main(parsed_args, workflow_cmdline_args)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik_main.py", line 102, in main
    f(shell)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik_main.py", line 317, in loadProject
    shell.openProjectFile(path, parsed_args.readonly)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\shell\headless\headlessShell.py", line 116, in openProjectFile
    self.projectManager._loadProject(hdf5File, projectFilePath, readOnly)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\utility\timer.py", line 142, in wrapper
    return func(*args, **kwargs)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\shell\projectManager.py", line 443, in _loadProject
    self.workflow.onProjectLoaded( self )
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\workflows\pixelClassification\pixelClassificationWorkflow.py", line 337, in onProjectLoaded
    self.batchProcessingApplet.run_export_from_parsed_args(self._batch_input_args)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 59, in run_export_from_parsed_args
    return self.run_export(role_path_dict, parsed_args.input_axes)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 120, in run_export
    export_to_array=export_to_array )
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\batchProcessing\batchProcessingApplet.py", line 210, in _run_export_with_empty_batch_lane
    opDataSelectionBatchLaneView.DatasetGroup[role_index].setValue(info)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 110, in call_in_setup_context
    return func(self, *args, **kwargs)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1195, in setValue
    self._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1395, in _changed
    c._changed()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1401, in _changed
    self._configureOperator(self)
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\slot.py", line 1415, in _configureOperator
    self.operator._setupOutputs()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\lazyflow\lazyflow\operator.py", line 450, in _setupOutputs
    self.setupOutputs()
  File "C:\Program Files\ilastik-1.2.0\ilastik-meta\ilastik\ilastik\applets\dataSelection\opDataSelection.py", line 317, in setupOutputs
    .format( "".join(tag.key for tag in datasetInfo.axistags), len(providerSlot.meta.shape) ) )
Exception: Your dataset's provided axistags (yxc) do not have the correct dimensionality for your dataset, which has 2 dimensions.

ilastik error:
The operation completed successfully.

Failed to run module Predict
Traceback (most recent call last):
  File "cellprofiler\gui\pipelinecontroller.py", line 2887, in do_step
    self.__pipeline.run_module(module, workspace)
  File "cellprofiler\pipeline.py", line 2022, in run_module
    module.run(workspace)
  File "C:\Users\bcimini\GitHub\CellProfiler-plugins\predict.py", line 146, in run
    raise ioe
IOError: Unable to open file (File signature not found)

FWIW, calling

C:\Program Files\ilastik-1.2.0>ilastik.exe --headless --project="C:\Users\bcimini\Desktop\Test30_120.ilp" --output_format="hdf5" --export_source="Probabilities" --output_filename_format="C:\Users\bcimini\Desktop\Test.h5" C:\Users\bcimini\Desktop\PixelClassificationExercise\BBBC030\cho01.png

does produce output, along with the following logs

INFO ilastik_main: Starting ilastik from "C:\Program Files\ilastik-1.2.0".
Starting ilastik from "C:\Program Files\ilastik-1.2.0".
INFO ilastik.applets.thresholdTwoLevels.opThresholdTwoLevels: Using 'vigra' labeling implemetation
WARNING 2017-09-28 13:56:33,651 __init__ 19292 7652 Failed to import automatic tracking workflow (conservation tracking). For this workflow, see the installationinstructions on our website ilastik.org; check dependencies: No module named pgmlinkNoIlpSolver
WARNING 2017-09-28 13:56:33,724 __init__ 19292 7652 Failed to import structured learning tracking workflow. For this workflow, see the installationinstructions on our website ilastik.org; check dependencies: DLL load failed: The specified module could not be found.
WARNING 2017-09-28 13:56:37,437 __init__ 19292 7652 Failed to import 'Edge Training With Multicut' workflow; check dependencies: Can't import OpMulticut: No solver libraries detected!
INFO ilastik.shell.projectManager: Opening Project: C:/Users/bcimini/Desktop/Test30_120.ilp
WARNING dataset.py(70): DeprecationWarning: numpy boolean negative, the `-` operator, is deprecated, use the `~` operator or the logical_not function instead.
INFO ilastik.workflows.pixelClassification.pixelClassificationWorkflow: Beginning Batch Processing
INFO ilastik.applets.batchProcessing.batchProcessingApplet: Exporting to C:/Users/bcimini/Desktop/Test.h5/exported_data
INFO lazyflow.operators.ioOperators.ioOperators.OpH5WriterBigDataset: Data shape: (2, 1032, 1376)
INFO lazyflow.utility.bigRequestStreamer: Estimated RAM usage per pixel is 652.0B * safety factor (2.0)
INFO lazyflow.utility.bigRequestStreamer: determining blockshape assuming available_ram is 11.1GiB, split between 8 threads
INFO lazyflow.utility.bigRequestStreamer: Chose blockshape: (2, 1032, 1109)
INFO lazyflow.utility.bigRequestStreamer: Estimated RAM usage per block is 2.6MiB
DEBUG lazyflow.operators.classifierOperators: Features took 3.279 seconds, Prediction took 0.939 seconds for roi: [0, 1109, 0] : [1032, 1376, 2]
DEBUG lazyflow.operators.classifierOperators: Features took 10.337 seconds, Prediction took 1.492 seconds for roi: [0, 0, 0] : [1032, 1109, 2]
INFO ilastik.workflows.pixelClassification.pixelClassificationWorkflow: Completed Batch Processing

@bethac07
Copy link
Member

SO it turns out this didn't break, but my screwup is likely to happen to more than just me so it should also be preserved as part of the module help (with better wording of course) and also preferably explicitly caught as an exception-

Some brightfield images (such as BBBC030) are actually RGB color but look grayscale. CP will happily load them if you set the as "Grayscale" in NamesAndTypes and will just collapse all the colors together (as is documented in NamesAndTypes), but then the error from my preceding comment will occur when you try to pass them to ilastik since ilastik is expecting an RGB color image. Changing the type to "Color" in NamesAndTypes fixes the error.

@dmattek
Copy link

dmattek commented Oct 11, 2017

I've tried the module with CP3.0.0rc7 but the right-hand-side image in CP output window is a blank image with Channel 1 values set to 1.0 and Channel 2 set to 0. The ilp project executed in the headless mode produces correct Probabilities.h5 file.

Files for testing are here.

@mcquin
Copy link
Contributor Author

mcquin commented Oct 20, 2017

Hi @dmattek --

I believe there is a fundamental problem with the module. CellProfiler implicitly rescales image data to the range [0.0, 1.0] on load, while ilastik does not implicitly rescale. Your image data is 16-bit unsigned integer, which means your classifier is trained on integer data in range [0, 65536) but asked to make predictions on floating point data in range [0.0, 1.0].

This is why we recommend a two-pipeline approach:

  1. First, load your training images into CellProfiler and use RescaleIntensity to ensure all images are scaled to the same range (typically [0.0, 1.0]). Export your rescaled training images as 32-bit TIFs using SaveImages.
  2. Next, train your classifier.
  3. Finally, load the images you want to make predictions of into CellProfiler, use RescaleIntensity as you did in the preprocessing pipeline, then use Predit to generate probability maps.

I tried this process on your images, and it worked. Could you please let me know if you are also successful? Of course, let me know if you still aren't getting the result you want.

I will try to figure out a way to circumvent this dual pipeline approach since it's non-intuitive and annoying.

@mcquin
Copy link
Contributor Author

mcquin commented Oct 20, 2017

Hi, again, @dmattek -

I have a solution that is slightly better than running two CellProfiler pipelines. You can rescale your image back to its original data range using the ImageMath module:

screen shot 2017-10-20 at 5 05 43 pm

Settings to use:

  • Operation: None
  • Multiply the first image by: 65535.0
  • Set values greater than 1 equal to 1?: No

I'll update the module documentation with this information.

* Address how to handle rescaling by CellProfiler
* Expand documentation for project types
@mcquin mcquin requested a review from 0x00b1 November 3, 2017 15:34
@bethac07
Copy link
Member

bethac07 commented Nov 6, 2017

I'm finding this only works for me when running from source, not compiled. Has anyone else observed this, and/or does anyone have an idea as to why?

@mcquin
Copy link
Contributor Author

mcquin commented Nov 6, 2017

@bethac07 I am able to run a pipeline with this module using the latest released version of CellProfiler. What behavior are you observing? What version of CellProfiler are you using?

@bethac07
Copy link
Member

bethac07 commented Nov 6, 2017

In the 3.0.0 release version, in TestMode (or AnalysisMode after hitting cancel due to #19) I get a popup error (Forgive typos, I'm transcribing)

Microsoft Visual C++ Runtime Library

Runtime Error! 

Program: C:\Program Files\ilastik-1.2.2\python.exe

R6034
An application has made an attempt to load the C runtime library incorrectly.  
Please contact the application's support team for more information.

This leads to a console error:

Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.2.2\ilastik-meta\ilastik\ilastik.py", line 122, in <module>
    main()
  File "C:\Program Files\ilastik-1.2.2\ilastik-meta\ilastik\ilastik.py", line 66, in main
    import ilastik_main
  File "C:\Program Files\ilastik-1.2.2\ilastik-meta\ilastik\ilastik_main.py", line 4, in <module>
    import ilastik.config
  File "C:\Program Files\ilastik-1.2.2\ilastik-meta\ilastik\ilastik\__init__.py", line 135, in <module>
    _check_depends()
  File "C:\Program Files\ilastik-1.2.2\ilastik-meta\ilastik\ilastik\__init__.py", line 129, in _check_depends
    import h5py
  File "C:\Program Files\ilastik-1.2.2\lib\site-packages\h5py\__init__.py", line 13, in <module>
    from . import _errors
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
ilastik error:
The operation completed successfully.

Failed to run module Predict
Traceback (most recent call last):
  File "CellProfiler\cellprofiler\gui\pipelinecontroller.py", line 2887, in do_step
  File "CellProfiler\cellprofiler\pipeline.py", line 2022, in run_module
  File "C:\Users\bcimini\GitHub\CellProfiler-plugins\predict.py", line 146, in run
    raise ioe
IOError: Unable to open file (file signature not found)

In a relatively recent master (CellProfiler/CellProfiler@4e5dd74) it runs fine in TestMode; it just hangs indefinitely in analysis mode, as Kyle has previously noted (#19).

Image and pipeline here.
Predict_Built_Bug.zip

image

@0x00b1
Copy link
Contributor

0x00b1 commented Nov 13, 2017

@bethac07 From the stack trace you posted it looks like this is an issue with Ilastik. Maybe there’s some compatibility issue between the version of H5Py that CellProfiler links and the version of H5Py that Ilastik links.

@chaubold
Copy link

Hi @bethac07, that error you posted looks weird. Does that ilastik installation usually work?
As @0x00b1 said, it looks indeed like some h5py problem, but as ilastik is called as a subprocess it shouldn't matter which version of h5py is used in that separate process.

We've finally released a beta version of ilastik 1.3.0 where we've fixed lots of bugs and upgraded all our dependencies (Python 3, Qt5, and lots more), giving ilastik a noticeable performance boost. @bethac07 would you mind trying the same thing with this new ilastik version? We'd love to see the bridge working again, and it's great how much effort you guys have put in there already! If the error persists with ilastik 1.3.0, let us know and we'll try to get it fixed!

Cheers from Heidelberg

@bethac07
Copy link
Member

@chaubold @mcquin @0x00b1 Using ilastik 1.3.0, I still get that same error in 3.0.0 built and still do NOT get it when running from 3.0.0 source (I even used the 3.0.0 release commit to try to be as parallel as possible). Naively it therefore seems to me that this is at least partly a CP error rather than an ilastik error, otherwise why the different behavior between prebuilt and source, but IANASE.

Built:

Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.3.0b3\ilastik-meta\ilastik\ilastik.py", line 122, in <module>
    main()
  File "C:\Program Files\ilastik-1.3.0b3\ilastik-meta\ilastik\ilastik.py", line 66, in main
    import ilastik_main
  File "C:\Program Files\ilastik-1.3.0b3\ilastik-meta\ilastik\ilastik_main.py", line 5, in <module>
    import ilastik.config
  File "C:\Program Files\ilastik-1.3.0b3\ilastik-meta\ilastik\ilastik\__init__.py", line 137, in <module>
    _check_depends()
  File "C:\Program Files\ilastik-1.3.0b3\ilastik-meta\ilastik\ilastik\__init__.py", line 131, in _check_depends
    import h5py
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\h5py\__init__.py", line 24, in <module>
    from . import _errors
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
ilastik error:
The operation completed successfully.

Failed to run module Predict
Traceback (most recent call last):
  File "CellProfiler\cellprofiler\gui\pipelinecontroller.py", line 2887, in do_step
  File "CellProfiler\cellprofiler\pipeline.py", line 2022, in run_module
  File "C:\Users\bcimini\GitHub\CellProfiler-plugins\predict.py", line 146, in run
    raise ioe
IOError: Unable to open file (file signature not found)

Source

WARNING __init__.py(15): UserWarning: Couldn't import IIBoost classifier.
INFO lazyflow.operators.vigraOperators: Using fast filters.
WARNING opDetectMissingData.py(59): DeprecationWarning: invalid escape sequence \d
WARNING _bootstrap.py(219): ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
WARNING _bootstrap.py(219): ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
WARNING _bootstrap.py(219): ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
WARNING func_inspect.py(53): DeprecationWarning: invalid escape sequence \<
WARNING _memory_helpers.py(10): DeprecationWarning: invalid escape sequence \s
INFO ilastik_main: Starting ilastik from "C:\Program Files\ilastik-1.3.0b3".
Starting ilastik from "C:\Program Files\ilastik-1.3.0b3".
WARNING opRawBinaryFileReader.py(67): DeprecationWarning: invalid escape sequence \.
WARNING _bootstrap.py(219): ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
WARNING _numpy_compat.py(287): DeprecationWarning: invalid escape sequence \p
WARNING classification.py(349): DeprecationWarning: invalid escape sequence \k
WARNING cross_validation.py(41): DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
WARNING 2017-12-11 13:05:09,405 __init__ 7748 21684 Failed to import the IIBoost Synapse detection workflow.  Check IIBoost dependency.
WARNING __init__.py(75): DeprecationWarning: invalid escape sequence \W
WARNING order.py(56): DeprecationWarning: invalid escape sequence \
WARNING _warnings.py(107): DeprecationWarning: invalid escape sequence \A
WARNING _bootstrap.py(219): ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
WARNING _regionprops.py(610): DeprecationWarning: invalid escape sequence \*
WARNING filter_design.py(425): DeprecationWarning: invalid escape sequence \p
WARNING current_flow_betweenness.py(316): DeprecationWarning: invalid escape sequence \l
WARNING eigenvector.py(93): DeprecationWarning: invalid escape sequence \m
WARNING preflowpush.py(420): DeprecationWarning: invalid escape sequence \s
WARNING geometric.py(338): DeprecationWarning: invalid escape sequence \{
WARNING random_graphs.py(519): DeprecationWarning: invalid escape sequence \e
WARNING random_clustered.py(94): DeprecationWarning: invalid escape sequence \d
WARNING 2017-12-11 13:05:14,639 opConservationTracking 7748 21684 Could not find any ILP solver
WARNING opStructuredTracking.py(546): SyntaxWarning: assertion is always true, perhaps remove parentheses?
WARNING 2017-12-11 13:05:14,875 opStructuredTracking 7748 21684 Could not find any ILP solver
WARNING 2017-12-11 13:05:14,905 structuredTrackingWorkflow 7748 21684 Could not find any learning solver. Tracking will use flow-based solver (DPCT). Learning for tracking will be disabled!
WARNING dtypes.py(369): DeprecationWarning: invalid escape sequence \[
WARNING strings.py(399): DeprecationWarning: invalid escape sequence \w
WARNING format.py(1054): DeprecationWarning: invalid escape sequence \c
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_cplex\__init__.py", line 14, in <module>
    from . import graph
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_cplex\graph\__init__.py", line 9, in <module>
    from . opt import multicut
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_cplex\graph\opt\multicut\__init__.py", line 16, in <module>
    from ._multicut import *
ImportError: DLL load failed: The specified module could not be found.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_gurobi\__init__.py", line 14, in <module>
    from . import graph
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_gurobi\graph\__init__.py", line 9, in <module>
    from . opt import multicut
  File "C:\Program Files\ilastik-1.3.0b3\lib\site-packages\nifty_with_gurobi\graph\opt\multicut\__init__.py", line 16, in <module>
    from ._multicut import *
ImportError: DLL load failed: The specified module could not be found.
INFO ilastik.shell.projectManager: Opening Project: C:/Users/bcimini/Desktop/test/MyProject.ilp
WARNING bind.py(27): DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() or inspect.getfullargspec()
INFO ilastik.workflows.pixelClassification.pixelClassificationWorkflow: Beginning Batch Processing
INFO ilastik.applets.batchProcessing.batchProcessingApplet: Exporting to c:/users/bcimini/appdata/local/temp/tmpud5ann.h5/exported_data
INFO lazyflow.operators.ioOperators.ioOperators.OpH5WriterBigDataset: Data shape: (1032, 1376, 2)
INFO lazyflow.utility.bigRequestStreamer: Estimated RAM usage per pixel is 652.0B * safety factor (2.0)
INFO lazyflow.utility.bigRequestStreamer: determining blockshape assuming available_ram is 11.1GiB, split between 8 threads
INFO lazyflow.utility.bigRequestStreamer: Chose blockshape: (1032, 1109, 2)
INFO lazyflow.utility.bigRequestStreamer: Estimated RAM usage per block is 1.4GiB
DEBUG lazyflow.operators.classifierOperators: Features took 2.255194 seconds, Prediction took 3.479966 seconds for roi: [0, 1109, 0] : [1032, 1376, 2]
DEBUG lazyflow.operators.classifierOperators: Features took 7.564636 seconds, Prediction took 2.032975 seconds for roi: [0, 0, 0] : [1032, 1109, 2]
INFO ilastik.workflows.pixelClassification.pixelClassificationWorkflow: Completed Batch Processing

@cells2numbers
Copy link
Contributor

The last commit added support for 1-channel images, which could not be processed by ilastik (the hdf5 file stored the image data in the format (x_dim, y_dim) but ilastik expects (x_dim, y_dim, 1) ).

@mcquin @0x00b1 in case of a 2 stage classifier the probabilities of stage 2 are exported / returned using cmd += ["--export_source", "probabilities stage 2"]. It would be great if it also would be possible to extract all probabilities. Could this be implement as a drop down menu? The command would be #cmd += ["--export_source", "probabilities all stages"]

@0x00b1 0x00b1 merged commit cc33b78 into master May 9, 2018
@0x00b1 0x00b1 deleted the ilastik/predict branch May 9, 2018 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants