Getting Started with FlowCyPy#
This section is designed to help you set up FlowCyPy, familiarize yourself with its components, and explore its capabilities through hands-on experimentation. By following the steps below, you will gain the foundational knowledge and skills needed to contribute meaningfully to the project.
Installation#
To get started, clone the FlowCyPy repository and install the necessary dependencies:
git clone https://github.com/MartinPdeS/FlowCyPy.git
cd FlowCyPy
python -m pip install -e .[testing, documentation] # For Windows/Linux
python -m pip install -e ".[testing, documentation]" # For macOS
python -m pytest . # Run tests to validate the installation
Mini Objective
After installation, run pytest to ensure the software is functioning correctly. If any tests fail, investigate the issues and review the related code to familiarize yourself with its structure and functionality.
Explore the Documentation#
The FlowCyPy documentation provides an in-depth guide to the library’s features, components, and workflows. It is a valuable resource for learning how to configure and run simulations effectively.
Access the documentation: FlowCyPy Documentation
In particular, explore the Examples section, which contains tutorials and step-by-step guides for simulating various flow cytometry experiments.
Mini Objective
Identify an example in the Examples section that simulates scatterers with different sizes. Run the example and analyze the output to understand the relationship between scatterer properties and signals.
Run Example Simulations#
Pre-written scripts in the examples folder demonstrate typical workflows in FlowCyPy. Running these scripts is a great way to explore the software’s capabilities.
cd examples
python example_simulation.py
Mini Objective
Modify an example script to compare the signals generated by a detector with high noise versus one with minimal noise. Observe and interpret the differences.
Adjust detector parameters to induce saturation by using larger scatterers or increasing the laser’s optical power. Analyze how saturation impacts the output signal.
Study Core Components#
The core components of FlowCyPy are modular and designed for flexibility. Familiarizing yourself with these files will deepen your understanding of the library:
`scatterer.py`: Manages particle distributions and their optical properties.
`source.py`: Defines laser source characteristics, such as wavelength and power.
`detector.py`: Configures detectors, including noise levels, responsitivity, and resolution.
`flow_cytometer.py`: Integrates scatterers, sources, and detectors to simulate flow cytometry experiments.
Mini Objective
Use scatterer.py to simulate scatterers with distinct refractive indices. Visualize how these variations affect forward and side scatter signals.
Modify source.py to experiment with different laser wavelengths. Explore the impact on scattering behavior when particle sizes are comparable to or smaller than the wavelength.
In detector.py, reduce the number of signal digitization bins to simulate a low-resolution detector. Observe the effects on signal clarity and precision.
Configure an entire flow cytometry experiment using flow_cytometer.py and compare the performance of detectors placed at different angles.
Stretch Goals#
For advanced exploration, consider the following challenges:
Experiment with the NoiseSetting module:
Combine multiple noise types (e.g., shot noise, thermal noise) to simulate real-world imperfections.
Analyze how cumulative noise impacts signal quality.
Create a custom particle population:
Design a population with a bimodal size distribution.
Simulate and analyze the resulting scatter signals.
Investigate coincidence analysis:
Use the EventCorrelator to study coincidences between detectors.
Examine how altering particle concentration or detector placement affects the coincidence rate.
Forking the Repository#
In most cases, interns working on FlowCyPy will not need to fork the repository. Instead, you can clone the main repository directly and work within branches to implement features or fix issues. However, for specific long-term tasks or independent projects, forking may be required.
If forking is necessary:
Fork the repository on GitHub.
Clone your forked version locally.
Sync your fork regularly with the main repository to stay up-to-date.
Mini Objective
Understand the difference between cloning and forking. If you are working collaboratively on shared tasks, stick to cloning unless explicitly instructed otherwise.