Particle tracking instrumentation and analysis in Python
PyNTA aims at bridging the gap between data acquisition and analysis in nanoparticle tracking experiments. You can read more about the project at http://nanoepics.github.io/pynta.
Create a virtual environment in your own computer and run the following command to get the latest PyNTA version:
pip install pynta
And if you want the development branch, you can run:
pip install git+https://github.com/nanoepics/pynta@develop
Note that the development branch is for testing purposes only. Forward compatibility is not ensured and unexpected bugs may be encountered.
In order to start the program, you need to run the following command:
It will automatically start the program with a default synthetic camera. If you would like to specify your own configuration file for PyNTA, you should run instead:
pynta -c config.yml
config.yml has to be replaced by the name of your file. You can explore the examples folder in the repository.
First Steps with PyNTA
By default, PyNTA comes configures to use synthetic data. The images displayed are simulated random movements of particles. You can use that data to test the program regardless of whether you have a camera available or not.
You can start by aquiring images and movies. Stream the data to the hard drive and do real time tracking and characterization based on the diffusion of the particles. You can find more information on the online documentation.
We currently support the following cameras:
- Hamamatsu Orca (which interface through DCAM-API)
- Photonic Science
The code has been structured in such a way that adding support for other cameras is straightforward, and also the simulation of experiments is easy to implement. You can read the guide on how to contribute to the code.
The key feature of PyNTA is the ability to acquire and analyse images in real time. By leveraging the capabilities of Trackpy, every frame is processed, detecting particles and linking their trajectories. This allows the user to see results about the distribution of particle sizes in close-to real time.
PyNTA allows the user to stream data directly to the hard drive, both video data and particle location can be saved during the progress of the experiment, making it failsafe against failures. Metadata is included in every generated file, guaranteeing the reproducibility of the experiments.
To report a problem with PyNTA, or suggestions for improvement, etc. you can use the Issue Tracking System. You can also contact the authors of the program if you have specific needs or would like to collaborate either scientifically or with development of code.
- Make PyNTA available for data analysis of data already collected
- Simplify the generation of the configuration file
- Encapsulate the experiment and isolate it from the GUI
- Improve response time for calculating size histograms
- Include extra parameters for the tracking, currently supported by trackpy but not implemented in the GUI
- Create an installer easy to distribute
In summary, if you want to add or improve the code, the proper workflow is as follows:
Fork the repository into your own user space on Github.
Start a new branch based on develop if you are adding new functionality or on master if you are solving an ASAP bug.
Improve the code on that branch.
Once you are done, update your branch with the latest code from develop:
git checkout develop git pull upstream develop git rebase develop my_branch
my_branchis the name of the branch you have started. More info here.
This leaves your branch with a history appended to the end of the history of develop. Then, you can just merge the branch into develop with
git merge --squash my_branch git commit -m "description of your work"
Important: When you do this, all the work that you have done on your branch will be condensed to a single commit into develop. Make sure you use a clear message. This makes tracking changes much easier, and the history of commits remains safe in your own repository.