Giter Site home page Giter Site logo

janelia-flyem / neutu Goto Github PK

View Code? Open in Web Editor NEW
37.0 15.0 13.0 227.16 MB

Software package for neuron reconstruction and visualization

License: Other

Shell 0.15% CMake 0.08% Makefile 0.02% C 4.83% Perl 0.21% C++ 93.60% QMake 0.08% GLSL 0.09% HTML 0.02% Python 0.50% OpenEdge ABL 0.36% Awk 0.01% MATLAB 0.01% Batchfile 0.01% RAML 0.01% M4 0.02% Terra 0.01% Raku 0.01% SWIG 0.01%
connectome-reconstruction c-plus-plus qt segmentation

neutu's People

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

Watchers

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

neutu's Issues

Optimize the handling of "todo" marks for super voxels needing splitting

When in the cleave tool, users need a way to mark super voxels as needing traditional splitting. Currently, that is done with the traditional "todo" mechanism. The problem is that in this context, this mechanism involves reading from DVID for each super voxel, which gets quite slow for the large numbers of super voxels we plan to be using. In fact, the TaskBodyCleave.cpp did have the following code to disable "todo" processing to improve performance:

bodyDoc->showTodo(false);

For now, we have disabled that line, which means we get the marking functionality at the expense of performance. To improve performance, we should use a new mechanism, which stores all the "todo" marks for the super voxels in a single DVID key for the overall body. With this approach, there would be only one DVID access independent of the number of super voxels.

Cannot install NeuTu via conda

I have tried to install NeuTu via conda:

$ conda create -n neutu -c flyem neutu

However, this fails with an error message, telling me that conda can't find the package:

Fetching package metadata: ......
Solving package specifications: .
Error:  Package missing in current linux-64 channels: 
  - neutu

I have tried this on two different machines, both running Ubuntu 14.04 with the latest Miniconda2 version.

Tilt the cut plane for grayscale view in neu3

In viewing neurons with grayscale, tilted angle of the blue square in neu3 should be helpful (close to 90 degree rotate). The square should also stay in the fixed position in the middle of the window so that a neuron can be translated easily and seen with a right angle in the cut.

Refactor to allow cleaving without protocols

The current implementation of the cleave tool in the TaskBodyCleave class uses the "protocol" framework from the TaskProtocolTask and TaskProtocolWindow classes. The advantage of this framework is that it supports code that extends the UI and functionality of the core Neu3 code in a loosely coupled way (decreasing both the complexity and the build time of the code). The disadvantage is that cleaving capabilities are available only through the JSON data files expected by the framework. We would like to be able to use cleaving in a more free-form way, with users deciding what bodies to cleave spontaneously in the course of a Neu3 session. We would like to support this functionality while keeping the loosely-coupled nature of the TaskBodyCleave code. The solution is probably some sort of simple plug-in architecture for Neu3.

Image Stack failes to open with Segmentation Fault

Dear Neutu developers

Thank you very much for developing this very nice piece of software. It's a very useful when comparing a reconstruction and it's corresponding image stack.

When I try to import some of my image stacks, Neutu crashes with a segmentation fault. I am using an installation which I got by compiling the source on my Ubuntu 14.04 machine.

Here is a test file: https://copy.com/gDqPfJr36GYxiSoa

Could you please have a look.

Thanks
Ajay

Check and alert the user if the cleave server omits super voxels

We have reports that sometimes a particular set of cleaving seeds sent from Neu3 will confuse the cleaving server, and it will send back results that omit some of the super voxels. Such super voxels will appear white in Neu3. Neu3 should check for this situation, and if it occurs Neu3 should display a warning dialog. Neu3 also should select all the meshes corresponding to the omitted super voxels, to make ti easer for users to find them.

Isometric projection for 3d view

Is it possible to alter the 3d camera to remove the default perspective projection?

It is really nice to look at, but I find the 3d view almost useless because the perspective projection makes orientation confusing.

Also it would be really nice to have hotkeys for orthogonal views.
You already use the number pad for rotating the camera, so it might be nice to steal the blender hotkeys in this instance. (numpad 1 for front [z-x projection], numpad 3 for left [z-y projection], numpad 7 for top [x-y])

Suppress warning when toggling off the only seed

Currently, pressing the space bar to toggle off the only seed will produce a warning about all the super voxels being missing from the server response. That warning is spurious, because it is intentional in this case that all the super voxels will be returned to the unassigned state.

Pre-fetch split bodies

Because we will typically have a sequence of bodies to examine, the next body's grayscale sparse volume should be pre-fetched. Similarly, if a user wants to split a body that is not prefetched, the grayscale for that body should be fetched while the user is putting down seeds and examining the body.

enable users to add overlay a grid in neutu on the 2D image

When doing manual synapse annotation, it is useful to have a grid of lines overlayed on the image, as a guide.

The user should be able to specify a bounding box in neutu which will cause a grid to appear. This view should be easy to toggle on and off with a button.

Cleaving tool still slows down over long assignments

Erika had reported that the Neu3 cleaving tool gets slower as she works her way through the bodies in an assignment. The problem had seemed to be the cache (the "garbage") that Neu3 uses to store meshes so they don't need to be reloaded: clearing it when the user changes tasks in the assignment had seemed to prevent memory usage from growing causing the slowness. That fix is in the "develop" branch now.

But now that Erika is working on larger assignments with more bodies, she is noticing the slowness again. So perhaps there is another memory leak?

uncertainty visualization in neu

We should allow the user to visualize a body at various levels of speculation. This is similar to the rollback feature except in the reverse direction.

The user should be able to indicate that speculative supervoxels should be shown (determined using some threshold knob). These speculative supervoxels should be shown in a different color than the original body.

saving preferences

Is it possible to save the default trace settings? At the moment each time I start up neuTube I set all the configs to minimize the amount of auto tracing that the program does (my images are too noisy for auto tracing to be reliable)

Also, a nice addition would be a completely manual tracing mode. Keeping the same work flow, except extending nodes does a simple linear interpolation without adding additional nodes in between.

Body-goto function

Show a body by typing a bodyID. A shortcut key (like F1) to show a dialog box is also required.

Display an error dialog if a cleaving task has an invalid body ID

Currently, if the JSON file for a cleaving task has an invalid body ID (e.g., due to a typo), then Neu3 will just freeze with the "Loading meshes..." progress dialog at 33%. To help a user know what is actually going wrong in this case, there should be an error dialog stating that the problem is due to an invalid ID. ZFlyEmBody3dDoc::makeBodyMeshModels() can detect this situation when it calls ZDvidReader::readMeshArchiveStart() and gets back a null pointer. It should then use ZWidgetMessage with TARGET_DIALOG to report the problem. Ting will be adding to Neu3 the code that responds to this message by popping up the error dialog,

Different mode of actions in proofreading

Currently 'merge' button is used to link bodies. This operation is not optimal for neuron tracing. We will probably need several modes in proofreading in NeuTu where a mouse click action behaves differently:

  • Body-selection mode allowing us to select and deselect bodies.
  • Body-link (merge) mode allowing us to link bodies/segments.
  • Synapse-annotation mode
  • Bookmark mode
  • Measure mode allowing us to measure dimensions of neural profiles, synaptic vesicles, etc.

Bug: Neu3 freezes on an empty Draco file in a tar archive

Cleaving assignment: /groups/flyem/data/hemi_brain/base20180227_8nm_watershed_agglo_20180214_sm3_dec05/body-cleave-sessions/17503.neacee/17503.neacee.json

Server: emdata3:8300
UUID: c174b
Segmentation: base20180227_8nm_watershed
Body Label (under "Advanced"): base20180227_8nm_watershed

When showing the super voxels for the first body, Neu3 will freeze with the progress meter at 45%.

The problem is that there is an empty Draco file in the tar archive, and when ZDvidReader::readMeshArchiveAsync() calls ZMeshIO::instance().loadFromMemory() it never returns.

Warn if a cleaving task was assigned to another user

Lowell will add to the task JSON a field with the login name of the user to whom the task was assigned. Philip will update the Neu3 taskbodycleave.cpp code to check that field, if present, against the name of the user running the Neu3 session, and produce a warning dialog if they don't match.

call mesh update service for body merge/split

We currently store meshes in two ways -- body mesh and tar of supervoxel meshes. The supervoxel meshes can probably be modified in a blocking procedure since this should be fast. A body mesh could be assembled from supervoxels and stored as well.

whitespace removed on dvid config

When copy & pasting from Slack or other coordination platforms, proofreaders can inadvertently add whitespace before or after DVID configuration forms, e.g., host or data instance name. NeuTu should just prune whitespace before and after form input.

Enable body splits for part of the body.

When the user enters 3D mode, a coarse vol of the body should pop up immediate. The user should have the option to split the whole neuron or create a bounding box over the region to be split.

Only the sparse volume from this region should be selected. There must be a seed designated for the 'home' body. The goal is to make splitting off small pieces very easy. There should be an option assign this entire bounding box neuron to a new neuron label. Essentially what this means is fetching the sparse volume for the bounding box and pushing that volume back to DVID (perhaps DVID could have an API for this to prevent the round trip).

show nearby bodies for body merging

For a given body, display "nearby" big bodies according to google supervoxel affinities (the service that provides this information is a separate action item). For a given location picked by a user, show all nearby bodies (small or large) with "reasonably" high body affinity.

Support alternative 'meshes_tars' data instances in the cleave tool

Currently, the cleave tool computes the name of the data instance containing the tar archives of meshes from the name of the segmentation instance. As we experiment with the details of the meshes (e.g., how much decimation to do) it would be helpful to have an easy way for a user to specify alternative instance names. Ideally, there would be a way to do so through some "advanced" part of the "Open DVID" dialog that appears at the start of the Neu3 session (so different choices could be saved). But if that is too difficult, we could use an environment variable.

Neuroglancer / neu3 integration enhancements

Request by Shinya (recorded by Steve)

  1. When launching neuroglancer, indicate selected body (easy change to URL)
  2. Change the default layout for neuroglancer to be full screen one-plane view instead of the orthogonal view (easy change to URL)
  3. Load neuroglancer with the same arbitrary orientation as the body in neu3
  4. Allow user to copy neuroglancer url into neu3, so that the neuroglancer current location is indicated on the neu3 body.
  5. (nice to have) Embed neuroglancer as a widget directly into neu3 (and automatically parse the URL as the user navigates to show the corresponding point in the main 3D view)

Color map (named vs unnamed)

Color maps will be useful for efficient proofreading and neuron refinement. An initial requirement for the color map is to label all the neurons that has not been corrected in red. Then a body turns green when it's body status is changed to 'corrected' after manual proofreading.

ZDvidReader should skip non ".drc" files in tar archives

Stuart may want to add to the tar archives a text file with information about the decimation parameters used to generate the meshes in the archive. Thus, ZDvidReader::readMeshArchiveNext() and ZDvidReader::readMeshArchiveAsync() need to skip any files that don't end in the ".drc" extension used for mesh files compressed by Draco,

Neuron list (Sequencer)

This allows us to sort and filter reconstructed neurons (by size, has name, corrected vs uncorrected, etc).

Display server status in neu3

Currently when the cleave server is down the users are still able to place seeds that don't seem to propagate. A server status could allow them to pause work until the issue is resolved.

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.