Code Monkey home page Code Monkey logo

knossos-project / knossos Goto Github PK

View Code? Open in Web Editor NEW
72.0 72.0 18.0 46.2 MB

KNOSSOS is a software tool for the visualization and annotation of 3D image data and was developed for the rapid reconstruction of neural morphology and connectivity.

Home Page: https://knossos.app

License: GNU General Public License v2.0

CMake 1.06% C++ 90.22% Python 3.99% C 0.58% Shell 0.71% Inno Setup 0.23% GLSL 0.33% CSS 0.03% Rich Text Format 2.80% Cython 0.04%
connectomics cross-platform desktop image-annotation linux macos neuroscience visualization windows

knossos's People

Contributors

aircrackng avatar al3xst avatar eroica avatar fabiansvara avatar jmrk84 avatar my-tien avatar n0void avatar optiligence avatar orenshatz avatar santiagocasas 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

Watchers

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

knossos's Issues

Simple Tracing Fixes

enabled by default with persistent GUI setting instead of annotation file setting
message when pressing C instead of suppression

Invisible Trees after Annotation Merge

Annotate a tree at a certain position and save into file number 1.
Clear skeleton or restart a fresh knossos.
Annotate again another tree at the same position and save into file number 2.
Load file number 1, chose "Merge".
Now switch between the two trees (one from each file) by clicking nodes in the annotation widget.
Upon clicking a node from one tree, both trees are shown - as they should.
But clicking a node from the other tree shown only this one, while the other doesn't show at all.

Legacy file names + path should be carried over

If one opens a *.nml file and then resaves, the resulting *.k.zip is stored at the default location and the filename changed to the default filename. More expected would be that it is stored in the same folder as the original nml and with the same name.

Remote cube loading bugs discussion

When one loads a remote dataset, eventually some cubes don’t get loaded.
Coincidentally FTP thread should exit is displayed in the console.
If the the download request was not successful, it should be repeated e.g. in total 3 times.

Work time reduces sometimes from one submit to the next

I think, I found the problem for this. In the QTime documentation the description of the elapsed() method states:
"Note that the counter wraps to zero 24 hours after the last call to start() or restart."
http://qt-project.org/doc/qt-5/qtime.html#elapsed

Something like the following could have happened:

  • Suppose, KNOSSOS is started and runs for 15h.

  • After that a skeleton is loaded that has a work time of 25h.

  • The variable "skeletonTimeCorrection" stores the 15h offset on skeleton loading.

  • Then e.g. KNOSSOS has run more than 25h in total, after which the skeleton is saved.

  • The time is saved with following calculation:

    time = skeletonTime (25h) - skeletonTimeCorrection (15h) + time.elapsed() (1h, because of the wrap after 24h) = 11h

Correct time would be 35h.

No more skeleton nodes / trees shown

Loading an nml, clearing the skeleton and loading a different skeleton sometimes can lead to a state where no nodes and tree are shown (in tree view and open vis.). Closing Knossos and starting it again fixed the issue. Nmls were loaded via dragn drop in the old .nml format. Knossos showed the filename correctly in the titlebar.

Node/Tree QTableWidget → QTreeView + Model

Using the QTableWidget gets really slow with a large amount of nodes.
With Model/View one can easily update the whole table, rendering optimization functions obsolete, which only update/insert or remove certain rows.
It also provides a uniform look and implementation for segmentation and skeletonization tables.

Knossos hangs when streaming is enabled and no connection available on start up

Reproduce with:
Select a streaming dataset. Stream. Close Knossos. Disable wifi. Start Knossos again.
=> Knossos hangs until something times out. This is unexpected behavior - just showing black cubes is much more acceptable for users, even better would be a message box indicating that the streaming dataset could not be opened due to connection problems

Knossos needs a simple-tracing mode

A mode that prevents creation of new trees, creation of unconnected nodes, possibly even creation of cycles for standard tracings. While detecting these problems post-hoc (in Heidelbrain) is easy, correcting them manually is time-consuming and correcting them automatically is potentially error-prone.

restarted command-line parameter not recycled

When supercube-edge (M) or overlay usage are changed, the command-line parameters are simply added to the current command-line. But if those are already explicitly specified in the current one, the present ones are not replaced but retained. This for example happens when one changes M and restarts knossos, and then changes M again, etc. The command-line just becomes longer and longer. This only works by chance, since we parse the command-line order-wise and not e.g. by hashing the elements and processing them randomly.

Asynchronized PythonQt Pontential Hazard

It seems that when PythonQt invokes a C++ function in the Scripting thread, that emits a signal to a slot in the MainWindow thread, then sometimes (or always?) the emission returns before the slot returns, namely - immediately after emission (probably).
This may constitute a problem when python scripts would require an operation to end before the next one may build on top of it.

forced vsync in newer Qt versions

as of Qt 5.3, vsync is enabled when not explicitly forced off by the driver
meaning QGLWidget::update is blocking
meaning Knossos updates at max ≤ 15 fps (16.6 ms · 4 QGLWidgets + cpu time)
this applies to the complete GUI not just the viewports, which means its really sluggish

fix segmentation color picking

When picking, only the unique color texture should be rendered.
Currently the intersection axis, nodes and text are also picked, which results in invalid IDs.

WiFi, weird cube loading

The issue seen in the following image and previously discussed in #31 appears immediately when Knossos is started and only when a remote dataset is loaded through a WiFi connection on Jörgens Laptop using Knossos 4.0 through 4.1 Nightly.

image

Remote dataset, cubes sometimes don’t get loaded

When dragging the dataset around some cubes stay black.
FTP thread should exit appears in the console when they get in sight.
The issue seems more prevalent, when segmentation is enabled. (This is a new discovery)
Also a slow connection seems to be an issue.
fragmented discussion in #31

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.