Code Monkey home page Code Monkey logo

ilastik's Introduction

ilastik logo

ilastik

The interactive learning and segmentation toolkit

CircleCI AppVeyor Codecov Image.sc forum Code style: black

Leverage machine learning algorithms to easily segment, classify, track and count your cells or other experimental data. Most operations are interactive, even on large datasets: you just draw the labels and immediately see the result. No machine learning expertise required.

Screenshot

See ilastik.org for more info.


Installation

Binary installation

Go to the download page, get the latest non-beta version for your operating system, and follow the installation instructions. If you are new to ilastik, we suggest to start from the pixel classification workflow. If you don't have a dataset to work with, download one of the example projects to get started.

Conda installation (experimental)

ilastik is also available as a conda package on our ilastik-forge conda channel. We recommend using mamba instead of conda, for faster installation:

mamba create -n ilastik --override-channels -c pytorch -c ilastik-forge -c conda-forge ilastik

# activate ilastik environment and start ilastik
conda activate ilastik
ilastik

Python compatibility notes

Versions of ilastik until 1.4.1b2 are based on, and only compatible with Python 3.7 Starting from ilastik 1.4.1b3 ilastik environments can be created with Python versions 3.7 to 3.9. Limitations when going with Python 3.7: please use a version of tifffile >2020.9.22,<=2021.11.2 (see also note in environment-dev.yml).

Usage

ilastik is a collection of workflows, designed to guide you through a sequence of steps. You can select a new workflow, or load an existing one, via the startup screen. The specific steps vary between workflows, but there are some common elements like data selection and data navigation. See more details on the documentation page.

Support

If you have a question, please create a topic on the image.sc forum. Before doing that, search for similar topics first: maybe your issue has been already solved! You can also open an issue here on GitHub if you have a technical bug report and/or feature suggestion.

Contributing

We always welcome good pull requests! If you just want to suggest a documentation edit, you can do this directly here, on GitHub. For more complex changes, see CONTRIBUTING.md for details.

License

GPL

ilastik's People

Contributors

akreshuk avatar bheuer avatar btbest avatar burcin avatar burgerdev avatar chaubold avatar clausripp avatar constantinpape avatar cstraehl avatar derthorsten avatar emilmelnikov avatar fabianisensee avatar fynnbe avatar ilastikdev avatar jaimeivancervantes avatar jakirkham avatar k-dominik avatar kemaleren avatar letip avatar limpingtwerp avatar m-novikov avatar martinsch avatar nielsbuwen avatar njase avatar opetra avatar paulhfu avatar ssidorenko avatar stuarteberg avatar tomaz-vieira avatar ukoethe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ilastik's Issues

"save and take snapshot" should just be "save snapshot"

When saving a project snapshot I do not want to touch the original project file. It should be clear by the name of the option that only a new snapshot will be written out but nothing in the original project file will be touched.

Rename to "save snapshot" or "take snapshot" or something like that

Usability: Layers in Training applet

When I want to change the opacity of a layer, or toggle its visibility, then in most cases I need two clicks, and thus one too many: first click to set focus on a layer, second click to achieve what I want. Can we set focus AND perform action by a single click? If not, we'll need up / down / remove icons on every layer.

Batchprocessing fails with Segmentation Fault

Hi,

When I want to run batch processing for a 1GB input file, select about 15 features, and select "save to directory", I am always getting a segmentation fault after a while. (I haven't tried that out with a smaller dataset or considerably less features).
This happens on my Linux Mint workstation and Ubuntu 12.04 laptop.

Let me know if you need more details.
Backtrace:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe53f8700 (LWP 24840)]
0x00007ffff0130111 in pyx_tp_dealloc_4h5py_8_objects_ObjectID (o=
<traceback at remote 0x5be8d88>) at h5py/_objects.c:4570
4570 h5py/_objects.c: No such file or directory.
(gdb) bt
0 0x00007ffff0130111 in __pyx_tp_dealloc_4h5py_8_objects_ObjectID (o=
<traceback at remote 0x5be8d88>) at h5py/_objects.c:4570
1 0x00007fffebe64718 in __pyx_pf_4h5py_3h5d_9DatasetID_5shape___get
(
__pyx_v_self=) at h5py/h5d.c:2040
2 __pyx_getprop_4h5py_3h5d_9DatasetID_shape (o=,
x=) at h5py/h5d.c:3590
3 0x00000000004e6038 in ?? ()
4 0x00000000004ee36a in _PyObject_GenericGetAttrWithDict ()
5 0x0000000000497f4e in PyEval_EvalFrameEx ()
6 0x000000000049f1c0 in PyEval_EvalCodeEx ()
7 0x00000000004a8960 in ?? ()
8 0x00000000004e9f36 in PyObject_Call ()
9 0x0000000000552895 in PyObject_CallFunction ()
10 0x00000000004ee36a in _PyObject_GenericGetAttrWithDict ()
11 0x0000000000497f4e in PyEval_EvalFrameEx ()
12 0x000000000049f1c0 in PyEval_EvalCodeEx ()
13 0x00000000004a8960 in ?? ()
14 0x00000000004e9f36 in PyObject_Call ()
15 0x00000000004ec11a in ?? ()
16 0x00000000004e9f36 in PyObject_Call ()
17 0x0000000000479f97 in ?? ()
18 0x0000000000499171 in PyEval_EvalFrameEx ()
19 0x0000000000498602 in PyEval_EvalFrameEx ()
--Type to continue, or q to quit---
20 0x000000000049f1c0 in PyEval_EvalCodeEx ()
21 0x00000000004a8a92 in ?? ()
22 0x00000000004e9f36 in PyObject_Call ()
23 0x00000000004ec11a in ?? ()
24 0x00000000004e9f36 in PyObject_Call ()
25 0x00000000004eb62e in ?? ()
26 0x00000000004e9f36 in PyObject_Call ()
27 0x0000000000499bc0 in PyEval_EvalFrameEx ()
28 0x0000000000498602 in PyEval_EvalFrameEx ()
29 0x000000000049f1c0 in PyEval_EvalCodeEx ()
30 0x00000000004983b8 in PyEval_EvalFrameEx ()
31 0x0000000000498602 in PyEval_EvalFrameEx ()
32 0x000000000049f1c0 in PyEval_EvalCodeEx ()
33 0x00000000004a8a92 in ?? ()
34 0x00000000004e9f36 in PyObject_Call ()
35 0x00000000004ec11a in ?? ()
36 0x00000000004e9f36 in PyObject_Call ()
37 0x00000000004eb62e in ?? ()
38 0x00000000004e9f36 in PyObject_Call ()
39 0x0000000000499bc0 in PyEval_EvalFrameEx ()
40 0x0000000000498602 in PyEval_EvalFrameEx ()
41 0x000000000049f1c0 in PyEval_EvalCodeEx ()
42 0x00000000004983b8 in PyEval_EvalFrameEx ()
--Type to continue, or q to quit---
43 0x000000000049f1c0 in PyEval_EvalCodeEx ()
44 0x00000000004a8a92 in ?? ()
45 0x00000000004e9f36 in PyObject_Call ()
46 0x00000000004ec11a in ?? ()
47 0x00000000004e9f36 in PyObject_Call ()
48 0x000000000047b6b7 in ?? ()
49 0x00000000004e9f36 in PyObject_Call ()
50 0x0000000000499bc0 in PyEval_EvalFrameEx ()
51 0x000000000049f1c0 in PyEval_EvalCodeEx ()
52 0x00000000004a8960 in ?? ()
53 0x00000000004e9f36 in PyObject_Call ()
54 0x00000000004ec11a in ?? ()
55 0x00000000004e9f36 in PyObject_Call ()
56 0x00000000004ea396 in PyEval_CallObjectWithKeywords ()
57 0x00007fffea7aea1d in g_initialstub (mark=)
at greenlet.c:804
58 0x00007fffea7ae368 in g_switch (target=0x7fff5043e260, args=(), kwargs=0x0)
at greenlet.c:576
59 0x00007fffea7aeef6 in green_switch (self=,
args=, kwargs=) at greenlet.c:1092
60 0x0000000000497ea4 in PyEval_EvalFrameEx ()
61 0x0000000000498602 in PyEval_EvalFrameEx ()
62 0x0000000000498602 in PyEval_EvalFrameEx ()
--Type to continue, or q to quit---
63 0x000000000049f1c0 in PyEval_EvalCodeEx ()
64 0x00000000004a8960 in ?? ()
65 0x00000000004e9f36 in PyObject_Call ()
66 0x00000000004ec11a in ?? ()
67 0x00000000004e9f36 in PyObject_Call ()
68 0x00000000004ea396 in PyEval_CallObjectWithKeywords ()
69 0x00000000004b0bc8 in ?? ()
70 0x00007ffff7bc4e9a in start_thread (arg=0x7fffe53f8700)
at pthread_create.c:308
71 0x00007ffff69b5dbd in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
72 0x0000000000000000 in ?? ()

"File->Open Project" prematurely resets current project

The GUI should wait until the user actually opens a new project before cleaning up the current project.

Right now, hitting "File->Open Project", then "Cancel", does not allow the user to resume working on the current project.

Make feature selection dialog modal

The feature selection dialog should be modal and not just floating around somewhere in the background. I opened and forget about it and when shift+tabbing between the windows I got either the dialog or the main window.

Keyboard shortcuts

We need keyboard shortcuts for the Project menu and the layer list controls. Some applet drawer controls (e.g. "Live Prediction") should have keyboard shortcuts, too.

Difference of Gaussians vs Laplacian

When I select all features at a given scale, the "Difference of Gaussians" and "Laplacian of Gaussian" are visually indiscernible. Anyway, do we want both?

Select features menu is too small

to accommodate all lines of the menu. When I make the window larger, I retain the scrollbar on the RHS, the rest of the contents does not unfold.

Anyway, we need something prettier at some stage.

Training applet: problems when loading differently-sized volumes

I load a volume and train.
Then I load additional volumes of different sizes.
I delete all original label classes (by pressing the red cross next to the label classes).
When switching between volumes, I no longer see the raw data.
When adding new labels, their colors are not correct (it does not start with red / green)
I can not add new annotations (which anyway doesn't make sense, given that the raw data is not visible)

Reorganize repos

  • Rename ilastik to ilastik 0.5
  • Rename applet-workflows to ilastik 0.6
  • Create ilastik-meta, which tracks the working revisions of lazyflow, ilastik, and volumina.

Allow opening read-only project files

Apparently some users want to be capable of viewing project files in directories they have read-only access to. Currently, ilastik will simply fail to open the project (we assume we'll want to write to the file eventually). Instead, we should open the file anyway, and fail if the user tries to do save any changes to it.

FeatureSelection: Don't let the user edit sigma headings

In the FeatureSelection GUI, the feature table widget allows the user to edit the sigma column headings. The current version of the applet uses hard-coded sigma options, so the user's edits will be ignored. Disable the edit feature for now to avoid user confusion.

Needs More Testing: Export Layer context menu item

We need a unit test for the Export Layer context menu item. The test should use a lazyflow slot to provide the data.

In addition, to make this functionality more discoverable, add a "save" button next to the up, down arrows. This will export the currently selected layer.

Batch processing fails because of wrong chunkShape

Here is the end of the stacktrace:

File "/home/akreshuk/lazyflow/lazyflow/graph.py", line 697, in call
result_op = self.operator.execute(self.slot, (), roi, destination)
File "/home/akreshuk/lazyflow/lazyflow/operators/obsolete/vigraOperators.py", line 1217, in execute
slicings=self.computeRequestSlicings()
File "/home/akreshuk/lazyflow/lazyflow/operators/obsolete/vigraOperators.py", line 1268, in computeRequestSlicings
shift = chunkShape * numpy.array([10,2,2,2,10])
ValueError: operands could not be broadcast together with shapes (4) (5)

Time Spinbox increases by 2 when clicked

To reproduce:

  1. New Project, add 5d data from hdf5
  2. Go to training drawer and click on the upper triangle of the timespinbox
    -> Jumps from zero to 2

This is not happening when the ImageView is maximized.

Bug appears with the following commit to volumina
3fe2832d2130703f462ef0268160b3a3d400eefc

The bug appears only in pixelclassification, but not in standalone volumina.

The commit looks unrelated, though. Could be a bug somehow caused by the new tooltip or shortcut mechanism

Batchprocessing doesn't work in headless mode

When I want to run pixel classification batch processing from the command line with the following command

python pixelClassificationWorkflowMainHeadless.py --project ~/projectFile.ilp --batch_export_dir ~/outputDir/ ~/inputFile.h5

I am getting the following error message:

INFO main: Opening project: '/home/user/projectFile.ilp'
INFO ilastik.shell.projectManager: Opening Project: /home/user/projectFile.ilp

ERROR 2012-10-12 20:22:22,062 pixelClassificationWorkflowMainHeadless 16795 140659294799616 Traceback (most recent call last):
File "pixelClassificationWorkflowMainHeadless.py", line 35, in main
runWorkflow(parsed_args)
File "pixelClassificationWorkflowMainHeadless.py", line 102, in runWorkflow
args.batch_output_dataset_name)
File "pixelClassificationWorkflowMainHeadless.py", line 163, in generateBatchPredictions
logger.info( "Exporting data to " + opBatchResults.OutputDataPath[0].value )
File "/home/user/ilastikenv/local/lib/python2.7/site-packages/lazyflow-0.0.0-py2.7.egg/lazyflow/graph.py", line 830, in value
temp = self[:].allocate().wait()
File "/home/user/ilastikenv/local/lib/python2.7/site-packages/lazyflow-0.0.0-py2.7.egg/lazyflow/request.py", line 561, in wait
self._execute()
File "/home/user/ilastikenv/local/lib/python2.7/site-packages/lazyflow-0.0.0-py2.7.egg/lazyflow/request.py", line 682, in _execute
self.result = self.function(**self.kwargs)
File "/home/user/ilastikenv/local/lib/python2.7/site-packages/lazyflow-0.0.0-py2.7.egg/lazyflow/graph.py", line 694, in call
result_op = self.operator.execute(self.slot, (), roi, destination)
File "/home/user/ilastikenv/local/lib/python2.7/site-packages/ilastik-0.6a-py2.7.egg/ilastik/applets/batchIo/opBatchIo.py", line 112, in execute
assert False # This slot is already set via setupOutputs
AssertionError

Seems like setupOutputs of opBatchIo is never called?

The error doesn't appear if I run the batch processing with the --generate_project_predictions flag.

Unify volumina viewer shortcuts with applet shortcuts

Shortcuts in volumina are not coordinated through the applet-workflows shortcut manager, so it isn't clear which shortcuts are unavailable for applet controls without inspecting the VolumeEditorWidget source code.

add a setup.py

Add a setup.py to allow
"python setup.py install".

This way, we don't have to mess around with PYTHONPATH anymore.

spurious feature layers / not a showstopper

Load two volumes
compute features
label and predict interactively on one volume
switch to the other and view a few predictions
switch back to the first volume
switch to feature app

Now there are, in addition to the original, and fully functional, feature layers, some more redundant instances of the original feature layers. They are non-functional and show up as blank in the orthoviews.

Export View button

ilastik 0.5 had a feature to export the current (2-d) slicing view. The new ilastik should have it, too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.