https://github.com/hbhargava7/cryoem-data-simulation
Python3 tools for simulating cryoEM particle data.
https://github.com/hbhargava7/cryoem-data-simulation
biophysics cryoem cryoem-data-simulation simulated-particles structural-biology
Last synced: about 2 months ago
JSON representation
Python3 tools for simulating cryoEM particle data.
- Host: GitHub
- URL: https://github.com/hbhargava7/cryoem-data-simulation
- Owner: hbhargava7
- Created: 2019-10-04T01:50:54.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-12-10T18:50:55.000Z (over 5 years ago)
- Last Synced: 2025-02-08T12:31:15.683Z (4 months ago)
- Topics: biophysics, cryoem, cryoem-data-simulation, simulated-particles, structural-biology
- Language: Jupyter Notebook
- Homepage:
- Size: 10.2 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# cryoem-data-simulation
Python3 tools for simulating cryoEM particle data, analyzing alignments, perturbing data, and more.
Built with help from https://github.com/mbrubake/cryoem-cvpr2015 and https://github.com/asarnow/pyem.
### Features
**Data Simulation**
* `simulate_particles.py`: Core script for multithreaded simulation of cryoEM particle stacks.
* `simulate_dual_stacks.py`: Simulate two stacks from two different volumes but match noise, ctf, and projection angle per particle between the stacks.
* `simulate_dual_stacks_rv.py`: Like `simulate_dual_stacks` but specify two **sets** of input volumes and probability weights (e.g. to model particle heterogeneity or classes).**Alignment Analysis**
* `analyze_alignment.py`: Given experimental alignment parameters (e.g. cisTEM .par file) and theoretical parameters (e.g. from `simulate_dual_stacks.py`) from two different reconstructions, compare the distributions of angular and positional errors.**Tellurification**
* `tellurify.py`: Replace methionines with telluromethionines or phenylalanines with tellurienylalanines in a PDB file.**Data Perturbation**
* `perturb_alignment.py`: Given a star file with some Euler angles, perturb these orientations by a characteristic overall angular error.### Simulating Data
Note: The `pyx` modules in `cryoem-cython-pyx` need to be compiled for your system. See below.
*Simulate data*
```
$ python3 simulate_particles.py --n_particles n --snr s
```
Other Flags:
* `--snr`: Specify a signal to noise ratio for the particles
* `--sigma_noise`: Specify a numeric standard deviation for the noise to be added (will override `--snr`)
* `--cpus`: Specify the number of processors to use (otherwise will use (n_cpus_available - 1)
* `--overwrite`: Don't prompt user for confirmation if the output directory exists and will be overwritten
* The microscope and CTF parameters can be changed in the `params` dict in main().*Inputs*
* `input_mrc`: mrc volume from which the volume data, pixel size, and box size will be read*Outputs (in output_directory)*
* `simulated_particles.mrcs`: mrcs particle stack containing the particle image data
* `simulated_particles.star`: Relion star file describing the simulated particles
* `simulation_metadata.txt`: Log of the simulation parameters and performance
* `plot.png`: Visualization of the first 8 particles
### To compile the pyx files (in cryoem-cython-pyx)
Compile using `clang` or `gcc` and then either move or symlink the `.so` files into the `cryoem` directory.
*For macOS*
```
$ export C_INCLUDE_PATH=/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/Headers:/usr/local/lib/python3.7/site-packages/numpy/core/include$ python3 setup.py build_ext --inplace
```
*For Linux*
```
$ export C_INCLUDE_PATH=/home//.local/lib/python3.7/site-packages/numpy/core/include
```*Symlink the compiled modules*
```
$ cd cryoem
$ ln -s ../cryoem-cython-pyx
```### Dependencies
* Python3
* numpy
* scipy
* cython
* pyfftw (optional, but creates significant speedup)
* matplotlib