janelia-flyem / neutu Goto Github PK
View Code? Open in Web Editor NEWSoftware package for neuron reconstruction and visualization
License: Other
Software package for neuron reconstruction and visualization
License: Other
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.
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.
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.
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.
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
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.
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])
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.
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.
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.
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?
When a body is selected, a shortcut 'z' is to jump to the plane top of the body and 'b' is to the plane bottom.
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.
The save swc function in the windows build saves a file with the extension .swc)
which is a little annoying as you need to manually rename the file in order to open it again
It should be possible when cleaving bodies in neu3, to allow the proofreader to specify that a given supervoxel should be split in the future. This can be saved as a specialized bookmark in DVID.
(Request by Shinya and Steve)
Overlay segmentation with the grayscale slice view.
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.
Currently, leaving NeuTu open will force periodic POSTs into an associated "bookmarks" keyvalue instance. This should only occur if the associated bookmarks are changing since the last POST.
Show a body by typing a bodyID. A shortcut key (like F1) to show a dialog box is also required.
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,
Select segmentations shown in Neu3 while opening neuroglancer.
The link to the latest builds is dead
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:
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.
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.
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.
Qt has a bug that can make QNetworkAccessManager give and error, "Network access is disabled":
https://bugreports.qt.io/browse/QTBUG-55180
Since Neu3 uses QNetworkAccessManager to communicate with the cleaving server, this problem results in a failure of cleaving.
The work-around is to set the following environment variable before launching the Qt app, neu3 in our case:
export QT_BEARER_POLL_TIMEOUT=999999999
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.
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).
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.
It might be caused by incompatibility with encoded body ids.
Starting up neu3 with a configuration should probably only require a few DVID calls. Unnecessary calls should be removed to speedup restart time.
Top-left corner in the main window, a body neuron name and bodyID need to be displayed appropreately.
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.
Request by Shinya (recorded by Steve)
The initial view port of the grayscale window is not initialized correctly.
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.
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,
This allows us to sort and filter reconstructed neurons (by size, has name, corrected vs uncorrected, etc).
The menu takes up a lot of the screen. It would be good to have the option to minimize it.
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.
POST <api URL>/node/<UUID>/<data name>/cleave/<label>[?cleavelabel=X]
Described here:
https://github.com/janelia-flyem/dvid/blob/stuart-trial/datatype/labelmap/labelmap.go#L838
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.