Giter Site home page Giter Site logo

volumina's Introduction

Volumina - Volume Slicing and Editing Library

build deployment black ilastik-forge-version

Installing

conda install -c ilastik-forge -c conda-forge volumina

Using Volumina as an Image Viewer

Currently, only format supported is .npy.

Open an .npy image and display it:

# Usage: volumina image axisorder
volumina <myimage.npy> yx

axisorder should correspond to the data. Only t (time), c (channel), and the spacial axes x, y, z are valid.

Volumina Development

Create a development environment

To set up a development environment, we currently recommend to follow Contributing Guidelines of our main repository ilastik: CONTRIBUTING

volumina's People

Contributors

akreshuk avatar bheuer avatar btbest avatar burcin avatar burgerdev avatar chaubold avatar christophdecker avatar cstraehl avatar dependabot[bot] avatar emilmelnikov avatar ericheim avatar fynnbe avatar ilastik-bot avatar ilastikdev avatar jaimeivancervantes avatar jakirkham avatar jensnrad avatar jonashund avatar k-dominik avatar kemaleren avatar limpingtwerp avatar m-novikov avatar nielsbuwen avatar njase avatar opetra avatar paulhfu avatar sebherbert 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

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

volumina's Issues

Implement PositionModel

Currently, the NavigationControl holds the position (model) internally.
To provide a public interface, we have should have a separate position model, to which the controler can listen.

Estimated time: 2h

Patches are sometimes not painted due to unavailable paint engine

Seldomly patches are not painted and the according tile is white or contains some garbage.
The following error is printed:

QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::setOpacity: Painter not active
QPainter::end: Painter not active, aborted

To reproduce this bug, set use very small patches (like 10x10) on big data and try a few times.

Est. time: 3 days

Links:
http://www.developer.nokia.com/Community/Wiki/QPainter::begin:Paint_device_returned_engine_%3D%3D_0

re-enable VolumeEditor.updateInfoLabels

after #50 was fixed, this should take
estimated time: 20min

   def updateInfoLabels(self, axis, x, y, valid):
        if not valid:
            return       
#FIXME: resurrect
#        pos = (posX, posY, posZ) = self._imageViews[axis].coordinateUnderCursor()
#        colorValues = self.overlayWidget.getOverlayRef("Raw Data").getOverlaySlice(pos[axis], axis, time=0, channel=0)._data[x,y]
#        
#        self.posLabel.setText("<b>x:</b> %03i  <b>y:</b> %03i  <b>z:</b> %03i" % (posX, posY, posZ))
#        
#        #FIXME RGB is a special case only
#        if isinstance(colorValues, numpy.ndarray):
#            self.pixelValuesLabel.setText("<b>R:</b> %03i  <b>G:</b> %03i  <b>B:</b> %03i" % (colorValues[0], colorValues[1], colorValues[2]))
#        else:
#            self.pixelValuesLabel.setText("<b>Gray:</b> %03i" %int(colorValues))

Test for multichannel/multitime data

Write a test for multichannel data:

  • is old behaviour stil replicable?
  • what about rgb vs. multichannel?
  • how is time dealt with?

Step 1:
create 5d raw data as numpy array
est. time: 2 hours
done

Specify volume data interface

OverlayItem takes a data object in its init. Specify the interface of this object for proper ducktyping and decoupling from ilastik. It should be a subset of the DataAccesor interface from ilastik. Document it in the docstring.

est. time: 2 days

Document exact architecture of refactored code

Draw a component diagram of the architecture using the real Classes and their connections (instead of the rough sketch, what we want to do currently in the wiki). Document design principles.

Implement PositionModel

Currently, the NavigationControler holds the position (model) internally.
To provide a public interface, we have should have a separate position model, to which the controler can listen.

Estimated time: 2h

Crosshair and brush are not properly aligned

During labling, the crosshair and the brush are shifted by a few pixel relative to each other. This is confusing for the user, because he needs to know where exactly the lables will be placed.

crosshair cursor updating is broken

time estimate:

  • refactor CrossHair cursor (belongs into scene): 1h
  • enable updating: 30min

time spent:

  • 1.5h start of refactoring in 'refactor-to-mvc' branch
  • another 1.5h into refactoring the cursor works again

Artefacts in ImageView2d when resizeing the volumeeditor

When the volumeeditor window ist resizesed the old lines and crosshair are drawn at the old position outside the image until.
When zooming is used, the image is redrawn and the artefacts disapear. Possible solution could be to reimplement the resize event, that after the resize the imageViews are redrawn correctly.

"clean" target to remove *.pyc files

Add "clean" target to build system to remove *.pyc files. pyc files of deleted/renamed py files remain in the filesystem and are causing mayhem from time to time.

Image export icon on slice views

Add an icon to the slice views to expert the currently visible slice to an image file. Maybe remove the cumbersome ExportDialog stuff (I don't think it is really needed after this improvement).

Object picking

After pixel-level labeling is done, add object-level labeling (what we used to call picking in ilastik 0.5) and all the corresponding overlay highlighting, etc, issues. Including how to store and pass those objects.

Data normalization belongs into the data model

The OverlayItem already is a 5D datastructure with additional annotations like colortable. However the actual conversion takes place in the ImageSceneRender with a large number of if-else-switches. Move the conversion functions into OverlayItem.

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.