Metadata-Version: 2.3
Name: stemia
Version: 0.7.6
Summary: A personal collection of (sometimes...) useful scripts and tools for cryoem/cryoet.
Project-URL: homepage, https://github.com/brisvag/stemia
Project-URL: repository, https://github.com/brisvag/stemia
Author-email: Lorenzo Gaifas <brisvag@gmail.com>
License: GPLv3
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Requires-Dist: click
Requires-Dist: mrcfile
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: rich
Requires-Dist: scipy
Requires-Dist: sh
Provides-Extra: align-filament-particles
Requires-Dist: starfile; extra == 'align-filament-particles'
Provides-Extra: all
Requires-Dist: cryohub; extra == 'all'
Requires-Dist: cryotypes; extra == 'all'
Requires-Dist: edt; extra == 'all'
Requires-Dist: eulerangles; extra == 'all'
Requires-Dist: ipython; extra == 'all'
Requires-Dist: kaleido; extra == 'all'
Requires-Dist: magicgui; extra == 'all'
Requires-Dist: matplotlib; extra == 'all'
Requires-Dist: mdocfile; extra == 'all'
Requires-Dist: napari; extra == 'all'
Requires-Dist: napari[pyqt5]; extra == 'all'
Requires-Dist: plotly; extra == 'all'
Requires-Dist: scikit-image; extra == 'all'
Requires-Dist: starfile; extra == 'all'
Requires-Dist: tabulate; extra == 'all'
Provides-Extra: center-filament
Requires-Dist: scikit-image; extra == 'center-filament'
Provides-Extra: classify-densities
Requires-Dist: edt; extra == 'classify-densities'
Requires-Dist: matplotlib; extra == 'classify-densities'
Requires-Dist: plotly; extra == 'classify-densities'
Provides-Extra: create-mask
Requires-Dist: edt; extra == 'create-mask'
Provides-Extra: cryosparc
Requires-Dist: ipython; extra == 'cryosparc'
Requires-Dist: magicgui; extra == 'cryosparc'
Requires-Dist: plotly; extra == 'cryosparc'
Requires-Dist: starfile; extra == 'cryosparc'
Provides-Extra: csplot
Requires-Dist: ipython; extra == 'csplot'
Requires-Dist: magicgui; extra == 'csplot'
Requires-Dist: plotly; extra == 'csplot'
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: cryohub; extra == 'dev'
Requires-Dist: cryotypes; extra == 'dev'
Requires-Dist: edt; extra == 'dev'
Requires-Dist: eulerangles; extra == 'dev'
Requires-Dist: ipython; extra == 'dev'
Requires-Dist: kaleido; extra == 'dev'
Requires-Dist: magicgui; extra == 'dev'
Requires-Dist: matplotlib; extra == 'dev'
Requires-Dist: mdocfile; extra == 'dev'
Requires-Dist: napari; extra == 'dev'
Requires-Dist: napari[pyqt5]; extra == 'dev'
Requires-Dist: pdbpp; extra == 'dev'
Requires-Dist: plotly; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: rich; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: scikit-image; extra == 'dev'
Requires-Dist: starfile; extra == 'dev'
Requires-Dist: tabulate; extra == 'dev'
Provides-Extra: extract-z-snapshots
Requires-Dist: cryohub; extra == 'extract-z-snapshots'
Requires-Dist: cryotypes; extra == 'extract-z-snapshots'
Requires-Dist: napari[pyqt5]; extra == 'extract-z-snapshots'
Provides-Extra: fix-filament-ids
Requires-Dist: starfile; extra == 'fix-filament-ids'
Provides-Extra: fix-mdoc
Requires-Dist: mdocfile; extra == 'fix-mdoc'
Provides-Extra: flip-z
Requires-Dist: eulerangles; extra == 'flip-z'
Requires-Dist: starfile; extra == 'flip-z'
Provides-Extra: generate-tilt-angles
Requires-Dist: starfile; extra == 'generate-tilt-angles'
Provides-Extra: image
Requires-Dist: cryohub; extra == 'image'
Requires-Dist: cryotypes; extra == 'image'
Requires-Dist: edt; extra == 'image'
Requires-Dist: eulerangles; extra == 'image'
Requires-Dist: kaleido; extra == 'image'
Requires-Dist: matplotlib; extra == 'image'
Requires-Dist: napari; extra == 'image'
Requires-Dist: napari[pyqt5]; extra == 'image'
Requires-Dist: plotly; extra == 'image'
Requires-Dist: scikit-image; extra == 'image'
Requires-Dist: starfile; extra == 'image'
Provides-Extra: merge-star
Requires-Dist: starfile; extra == 'merge-star'
Provides-Extra: offset-angle
Requires-Dist: mdocfile; extra == 'offset-angle'
Provides-Extra: prepare-isonet
Requires-Dist: starfile; extra == 'prepare-isonet'
Provides-Extra: project-profile
Requires-Dist: kaleido; extra == 'project-profile'
Requires-Dist: napari; extra == 'project-profile'
Requires-Dist: plotly; extra == 'project-profile'
Provides-Extra: relion
Requires-Dist: starfile; extra == 'relion'
Provides-Extra: spoof-mdoc
Requires-Dist: mdocfile; extra == 'spoof-mdoc'
Provides-Extra: summarize
Requires-Dist: tabulate; extra == 'summarize'
Provides-Extra: warp
Requires-Dist: mdocfile; extra == 'warp'
Requires-Dist: starfile; extra == 'warp'
Requires-Dist: tabulate; extra == 'warp'
Description-Content-Type: text/markdown

# STEMIA

[![License](https://img.shields.io/pypi/l/stemia.svg?color=green)](https://github.com/brisvag/stemia/raw/main/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/stemia.svg?color=green)](https://pypi.org/project/stemia)
[![Python Version](https://img.shields.io/pypi/pyversions/stemia.svg?color=green)](https://python.org)

**S**cripts and **T**ools for **E**lectron **M**icroscopy **I**mage **A**nalysis.

This is a simple personal collection of (sometimes...) useful scripts and tools for cryoem/cryoet.

## Installation

```bash
pip install stemia
```

You can quickly list all the available tools with

```
stemia -l
```

## Completion

You can enable completion for your bash shell by running:

```
eval "$(_STEMIA_COMPLETE=bash_source stemia)"
```

See [the click docs](https://click.palletsprojects.com/en/8.1.x/shell-completion/#enabling-completion) for how to do it for other shells.

<!-- autogenerated content start here -->

## Tools

Everything is accessible through the main command line interface `stemia`.

Try `stemia -h` for help, or `stemia -l` for the command tree:

```
.stemia
├── aretomo:  A collection of AreTomo-related tools and scripts.
│   ├── aln2xf:  Convert AreTomo `aln` file to imod `xf` format.
│   └── batch:  Run AreTomo on a full directory.
├── cryosparc:  A collection of Cryosparc-related tools and scripts.
│   ├── csplot:  Read a cryosparc job directory and plot interactively any column.
│   ├── fix_filament_ids:  Replace cryosparc filament ids with small unique integers.
│   ├── generate_tilt_angles:  Generate angle priors for a tilted dataset.
│   ├── merge_defects_gainref:  Merge serialEM defects and gainref for cryosparc usage.
│   └── time_wasted:  Print the total amount of time wasted on a project.
├── image:  Simple image manipulation and processing.
│   ├── center_filament:  Center an mrc image (stack) containing filament(s).
│   ├── classify_densities:  Do hierarchical classification of particle stacks based on densities.
│   ├── create_mask:  Create a mask for INPUT.
│   ├── extract_z_snapshots:  Grab z slices at regular intervals from a tomogram as jpg images.
│   ├── flip_z:  Flip the z axis for particles in a RELION star file.
│   ├── fourier_crop:  Bin mrc images to the specified pixel size using fourier cropping.
│   ├── project_profiles:  Project re-extracted and straightened membranes and get some stats.
│   │   ├── prepare:  Generate and select 2D chunked projections for the input data.
│   │   ├── compute:  Take the outputs from prepare and compute statistics and plots.
│   │   └── aggregate:  Aggregate the generated data into general stats about given subsets.
│   └── rescale:  Rescale an mrc image to the specified pixel size.
├── imod:  A collection of IMOD-related tools and scripts.
│   └── find_NAD_params:  Test a range of k and iteration values for nad_eed_3d.
├── relion:  A collection of Relion-related tools and scripts.
│   ├── align_filament_particles:  Fix filament PsiPriors so they are consistent within a filament.
│   └── edit_star:  Simple search-replace utility for star files.
└── warp:  A collection of Warp-related tools and scripts.
    ├── fix_mdoc:  Fix mdoc files to point to the right data and follow warp format.
    ├── offset_angle:  Offset tilt angles in warp xml files.
    ├── parse_xml:  Parse a warp xml file and print its content.
    ├── prepare_isonet:  Update an isonet starfile with preprocessing data from warp.
    ├── spoof_mdoc:  Create dummy mdocs for warp.
    ├── summarize:  Summarize the state of a Warp project.
    └── preprocess_serialem:  Prepare and unpack data from sterialEM for Warp.
```
    
### stemia aretomo aln2xf

```
Usage: stemia aretomo aln2xf [OPTIONS] ALN_FILE

  Convert AreTomo `aln` file to imod `xf` format.

Options:
  -f, --overwrite  overwrite existing output
  --help           Show this message and exit.
```

### stemia aretomo batch

```
Usage: stemia aretomo batch [OPTIONS]

  Run AreTomo on a full directory.

Options:
  --help  Show this message and exit.
```

### stemia cryosparc csplot

```
Usage: stemia cryosparc csplot [OPTIONS] JOB_DIR

  Read a cryosparc job directory and plot interactively any column.

  All the related data from parent jobs will also be loaded. An interactive
  ipython shell will be opened with data loaded into a pandas dataframe.

  JOB_DIR:     a cryosparc job directory.

Options:
  --drop-na         drop rows that contain NaN values (e.g: micrographs with
                    no particles)
  --no-particles    do not read particles data
  --no-micrographs  do not read micrographs data
  --help            Show this message and exit.
```

### stemia cryosparc fix_filament_ids

```
Usage: stemia cryosparc fix_filament_ids [OPTIONS] STAR_FILE

  Replace cryosparc filament ids with small unique integers.

  Relion will fail with cryosparc IDs because of overflows.

Options:
  -o, --star-output FILE  where to put the updated version of the star file
                          [default: <STAR_FILE>_fixed_id.star]
  -f, --overwrite         overwrite output if exists
  --help                  Show this message and exit.
```

### stemia cryosparc generate_tilt_angles

```
Usage: stemia cryosparc generate_tilt_angles [OPTIONS] STAR_FILE TILT_ANGLE
                                             TILT_AXIS

  Generate angle priors for a tilted dataset.

  Read a Relion STAR_FILE with in-plane angles and generate priors for rot and
  tilt angles based on a TILT_ANGLE around a TILT_AXIS.

Options:
  -r, --radians           Provide angles in radians instead of degrees
  -o, --star-output FILE  where to put the updated version of the star file
                          [default: <STAR_FILE>_tilted.star]
  -f, --overwrite         overwrite output if exists
  --help                  Show this message and exit.
```

### stemia cryosparc merge_defects_gainref

```
Usage: stemia cryosparc merge_defects_gainref [OPTIONS] DEFECTS GAINREF

  Merge serialEM defects and gainref for cryosparc usage.

  requires active sbrgrid.

Options:
  -d, --output-defects FILE
  -o, --output-gainref FILE
  -f, --overwrite            overwrite output if exists
  --help                     Show this message and exit.
```

### stemia cryosparc time_wasted

```
Usage: stemia cryosparc time_wasted [OPTIONS] [PROJECT_DIRS]...

  Print the total amount of time wasted on a project.

Options:
  -u, --useful_jobs TEXT  ID of job that gave useful results. Its running time
                          and that of its parents will be used to calculate
                          useful time. Can be passed multiple times.
  --help                  Show this message and exit.
```

### stemia image center_filament

```
Usage: stemia image center_filament [OPTIONS] INPUT [OUTPUT]

  Center an mrc image (stack) containing filament(s).

  Can update particles in a RELION .star file accordingly. If OUTPUT is not
  given, default to INPUT_centered.mrc

Options:
  -s, --update-star FILE        a RELION .star file to update with new
                                particle positions
  -o, --star-output FILE        where to put the updated version of the star
                                file. Only used if -s is passed [default:
                                STARFILE_centered.star]
  --update-by [class|particle]  whether to update particle positions by
                                classes or 1 by 1. Only used if -s is passed
                                [default: class]
  -f, --overwrite               overwrite output if exists
  -n, --n-filaments INTEGER     number of filaments on the image  [default: 2]
  -p, --percentile INTEGER      percentile for binarisation  [default: 85]
  --help                        Show this message and exit.
```

### stemia image classify_densities

```
Usage: stemia image classify_densities [OPTIONS] [STACKS]...

  Do hierarchical classification of particle stacks based on densities.

Options:
  -c, --max-classes INTEGER
  --help                     Show this message and exit.
```

### stemia image create_mask

```
Usage: stemia image create_mask [OPTIONS] INPUT OUTPUT

  Create a mask for INPUT.

  Axis order is zyx!

Options:
  -t, --mask-type [sphere|cylinder|threshold]
  -c, --center TEXT               center of the mask (comma-separated floats)
  -a, --axis INTEGER              main symmetry axis (for cylinder)
  -r, --radius FLOAT              radius of the mask. If thresholding,
                                  equivalent to "hard padding"  [required]
  -i, --inner-radius FLOAT        inner radius of the mask (if any)
  -p, --padding FLOAT             smooth padding
  --ang / --px                    whether the radius and padding are in
                                  angstrom or pixels
  --threshold FLOAT               threshold for binarization of the input map
  -f, --overwrite                 overwrite output if exists
  --help                          Show this message and exit.
```

### stemia image extract_z_snapshots

```
Usage: stemia image extract_z_snapshots [OPTIONS] [INPUTS]...

  Grab z slices at regular intervals from a tomogram as jpg images.

  INPUTS: any number of paths of volume images

Options:
  -o, --output-dir PATH
  --mrc                   also output mrc files
  -n, --n-slices INTEGER  number of equidistant slices to extract
  --keep-extrema          whether to keep slices at z=0 and z=-1 (if false,
                          slices is reduced by 2)
  -a, --average INTEGER   number of slices to average over
  -s, --size TEXT         size of final image (X,Y)
  -r, --range TEXT        range of slices to image (A,B)
  --axis INTEGER          axis along which to do the slicing
  --help                  Show this message and exit.
```

### stemia image flip_z

```
Usage: stemia image flip_z [OPTIONS] STAR_PATH

  Flip the z axis for particles in a RELION star file.

  STAR_PATH: star file to flip along z

  Assumes all tomograms have the same shape.

Options:
  -o, --output FILE
  -m, --mrc_path FILE
  --star_pixel_size FLOAT
  --mrc_pixel_size FLOAT
  --z_shape INTEGER
  --help                   Show this message and exit.
```

### stemia image fourier_crop

```
Usage: stemia image fourier_crop [OPTIONS] [INPUTS]...

  Bin mrc images to the specified pixel size using fourier cropping.

Options:
  -b, --binning FLOAT  binning amount  [required]
  -f, --overwrite      overwrite output if exists
  --help               Show this message and exit.
```

### stemia image project_profiles prepare

```
Usage: stemia image project_profiles prepare [OPTIONS] [PATHS]...

  Generate and select 2D chunked projections for the input data.

Options:
  -o, --output PATH         [required]
  -s, --chunk-size INTEGER
  -f, --overwrite
  --help                    Show this message and exit.
```

### stemia image project_profiles compute

```
Usage: stemia image project_profiles compute [OPTIONS] PROJ_DIR

  Take the outputs from prepare and compute statistics and plots.

Options:
  -f, --overwrite
  --help           Show this message and exit.
```

### stemia image project_profiles aggregate

```
Usage: stemia image project_profiles aggregate [OPTIONS] [INPUTS]...

  Aggregate the generated data into general stats about given subsets.

  Inputs are subdirectories of the project_dir from compute.

Options:
  -o, --output-name TEXT  Title/filename given to the aggregated outputs.
  --help                  Show this message and exit.
```

### stemia image rescale

```
Usage: stemia image rescale [OPTIONS] INPUT OUTPUT TARGET_PIXEL_SIZE

  Rescale an mrc image to the specified pixel size.

  TARGET_PIXEL_SIZE: target pixel size in Angstrom

Options:
  --input-pixel-size FLOAT  force input pizel size and ignore mrc header
  -f, --overwrite           overwrite output if exists
  --help                    Show this message and exit.
```

### stemia imod find_NAD_params

```
Usage: stemia imod find_NAD_params [OPTIONS] INPUT

  Test a range of k and iteration values for nad_eed_3d.

Options:
  -k, --k-values TEXT
  -i, --iterations TEXT
  -s, --std TEXT
  --help                 Show this message and exit.
```

### stemia relion align_filament_particles

```
Usage: stemia relion align_filament_particles [OPTIONS] STAR_FILE

  Fix filament PsiPriors so they are consistent within a filament.

  Read a Relion STAR_FILE with in-plane angles and filament info and flip any
  particle that's not consistent with the rest of the filament.

  If a consensus cannot be reached, or the filament has too few particles,
  discard the whole filament.

Options:
  -o, --star-output FILE          where to put the updated version of the star
                                  file [default: <STAR_FILE>_aligned.star]
  -t, --tolerance FLOAT           angle in degrees within which neighbouring
                                  particles are considered aligned
  -c, --consensus-threshold FLOAT
                                  require an angle consensus at least higher
                                  than this to use a filament.
  -d, --drop-below INTEGER        drop filaments if they have fewer than this
                                  number of particles
  -r, --rotate-bad-particles      rotate bad particles to match the rest of
                                  the filament
  -f, --overwrite                 overwrite output if exists
  --help                          Show this message and exit.
```

### stemia relion edit_star

```
Usage: stemia relion edit_star [OPTIONS] [STAR_FILES]...

  Simple search-replace utility for star files.

  Full regex functionality works (e.g: reusing groups in output)

Options:
  -s, --suffix-output TEXT  suffix added to the output files before extension
  -c, --column TEXT         column(s) to modify
  -i, --regex-in TEXT       regex sed-like search pattern(s)
  -o, --regex-out TEXT      regex sed-like substitution to apply to the
                            column(s)
  -f, --overwrite           overwrite output if exists
  --help                    Show this message and exit.
```

### stemia warp fix_mdoc

```
Usage: stemia warp fix_mdoc [OPTIONS] MDOC_DIR

  Fix mdoc files to point to the right data and follow warp format.

Options:
  -d, --data-dir PATH
  --dates              fix date format
  --paths              fix image paths
  --help               Show this message and exit.
```

### stemia warp offset_angle

```
Usage: stemia warp offset_angle [OPTIONS] [WARP_DIR]

  Offset tilt angles in warp xml files.

Options:
  --help  Show this message and exit.
```

### stemia warp parse_xml

```
Usage: stemia warp parse_xml [OPTIONS] XML_FILE

  Parse a warp xml file and print its content.

Options:
  --help  Show this message and exit.
```

### stemia warp prepare_isonet

```
Usage: stemia warp prepare_isonet [OPTIONS] WARP_DIR ISO_STAR

  Update an isonet starfile with preprocessing data from warp.

Options:
  --help  Show this message and exit.
```

### stemia warp spoof_mdoc

```
Usage: stemia warp spoof_mdoc [OPTIONS] [RAWTLT_FILES]...

  Create dummy mdocs for warp.

  RAWTLT_FILES: simple file with one tilt angle per line. Order should match
  sorted filenames.

Options:
  -d, --dose-per-image FLOAT  electron dose per tilt image (or per frame if
                              inputs are movies)  [required]
  -p, --pixel-size FLOAT
  -e, --extension [tif|mrc]
  -f, --overwrite
  --help                      Show this message and exit.
```

### stemia warp summarize

```
Usage: stemia warp summarize [OPTIONS] [WARP_DIR]

  Summarize the state of a Warp project.

  Reports for each tilt series: - discarded: number of discarded tilts -
  total: total number oftilts in raw data - stacked: number of image slices in
  imod output directory - mismatch: whether stacked != (total - discarded) -
  resolution: estimated resolution if processed

Options:
  --help  Show this message and exit.
```

### stemia warp preprocess_serialem

```
Usage: stemia warp preprocess_serialem [OPTIONS] RAW_DATA_DIR

  Prepare and unpack data from sterialEM for Warp.

  You must be in a new directory for this to work; new files will be placed
  there with the same name as the original tifs.

  RAW_DATA_DIR: the directory containing the raw data

Options:
  --help  Show this message and exit.
```
