GithubHelp home page GithubHelp logo

pblab / rpysight Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4.79 MB

Real-time 2D/3D rendering of photon streams from a TimeTagger

License: GNU General Public License v3.0

Python 8.47% Rust 91.53%
microscopy neuroscience photon-counting rendering

rpysight's People

Contributors

hagaihargil avatar liorgolgher avatar pbl007 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

rpysight's Issues

Dynamically change brightness

Brightness levels of pixels are currently handled in a pretty simple way. We should either move these parameters to the configuration file, in hopes that one day we could modify configs and see the changes in real-time (#4) or do something smarter inside the code itself, which is probably the better solution in the long term.

Improve rendering

The rendering status is in a type of a local maximum - it works fine and looks OKish, but in the long term it will simply not be sufficient.

The underlying library (kiss3d) is unmaintained, and some of the functionality it provides is broken. Moreover, it can only display a single window at any given moment, which means that we currently only render the merged channel.

It seems that the best way forward is to switch the underlying library, but the options are quite limited - there are currently no other high-level GPU-based rendering libs in Rust. Bevy and rg3d might go there one day, but currently they're not trying to. The only option is to go down the stack and re-implement a subset of kiss3d's functionality using the dependencies of kiss3d.

Live configuration parameters updates

When having a config issue, like entering a wrong value for the line shift, the only solution is to restart rPySight. That's unfortunate and can perhaps be handled more elegantly.

Handle PYTHONPATH and the TimeTagger library

Since this is a Rust project we're kinda neglecting the Python side of things, and specifically the import of the TimeTagger library, which is obviously crucial. Even if we release the crate in a binary form, the call_timetagger.py file will remain excluded. Its first import part might have to be modified on a per-user basis due to the PATH modification done in it, so it's still unclear how to distribute it.

Perhaps we can embed its code in the Rust source code and ask users to have the TimeTagger library in their path beforehand.

More documentation

While the API reference is OKish, the library isn't published to crates.io so it's kind of inaccessible. Moreover there's currently no user guide, how-to articles and the basic tutorial only exists in the article form.

Profile performance

rPySight is definitely resource heavy, and it would be nice to know exactly which parts of it are causing the most issues for the computer.

It's also worth looking at changing a few Cargo.toml settings and see if it helps, and even try to use the TimeTagger's C++ API instead of the Pythonic one.

Determine when to end stream

Currently rPySight doesn't know when to end reading from the data stream. During online acquisition it's less of a problem, but during replay the rendering window simply hangs instead of gracefully exiting.

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.