Skip to content

Commit

Permalink
Merge branch 'main' into McHaillet-patch-1-1
Browse files Browse the repository at this point in the history
  • Loading branch information
McHaillet authored Aug 14, 2024
2 parents 829383f + 3f71d44 commit 086b0b6
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 3 deletions.
115 changes: 115 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: pytom-match-pick
message: >-
If you use this software, please cite both the article
from preferred-citation and the software itself.
type: software
authors:
- given-names: Marten L.
family-names: Chaillet
email: [email protected]
orcid: 'https://orcid.org/0000-0001-7231-7742'
affiliation: Utrecht University
- given-names: Sander
family-names: Roet
email: [email protected]
affiliation: Utrecht University
orcid: 'https://orcid.org/0000-0003-0732-545X'
- given-names: Friedrich
family-names: Förster
email: [email protected]
affiliation: Utrecht University
orcid: 'https://orcid.org/0000-0002-6044-2746'
identifiers:
- type: doi
value: 10.5281/zenodo.10728422
description: zenodo DOI for the code
repository-code: 'https://github.com/SBC-Utrecht/pytom-match-pick'
abstract: >-
GPU-accelerated template matching for cryo-electron tomography, originally developed in PyTom, as a standalone Python package that is run from the command line.
keywords:
- electron cryo-tomography
- particle localization and identification
- template matching
- GPU acceleration
- volume registration
license: GPL-2.0
preferred-citation:
authors:
- given-names: Marten L.
family-names: Chaillet
email: [email protected]
orcid: 'https://orcid.org/0000-0001-7231-7742'
affiliation: Utrecht University
- given-names: Gijs
name-particle: van der
family-names: Schot
email: [email protected]
affiliation: Utrecht University
- given-names: Ilja
family-names: Gubins
email: [email protected]
affiliation: Utrecht University
- given-names: Sander
family-names: Roet
email: [email protected]
affiliation: Utrecht University
orcid: 'https://orcid.org/0000-0003-0732-545X'
- given-names: Remco C.
family-names: Veltkamp
email: [email protected]
affiliation: Utrecht University
orcid: 'https://orcid.org/0000-0003-1934-7170'
- given-names: Friedrich
family-names: Förster
email: [email protected]
affiliation: Utrecht University
orcid: 'https://orcid.org/0000-0002-6044-2746'
type: article
title: Extensive Angular Sampling Enables the Sensitive Localization of Macromolecules in Electron Tomograms
abstract: >-
Cryo-electron tomography provides 3D images of
macromolecules in their cellular context. To detect
macromolecules in tomograms, template matching (TM) is
often used, which uses 3D models that are often reliable
for substantial parts of the macromolecules. However, the
extent of rotational searches in particle detection has
not been investigated due to computational limitations.
Here, we provide a GPU implementation of TM as part of the
PyTOM software package, which drastically speeds up the
orientational search and allows for sampling beyond the
Crowther criterion within a feasible timeframe. We
quantify the improvements in sensitivity and
false-discovery rate for the examples of ribosome
identification and detection. Sampling at the Crowther
criterion, which was effectively impossible with CPU
implementations due to the extensive computation times,
allows for automated extraction with high sensitivity.
Consequently, we also show that an extensive angular
sample renders 3D TM sensitive to the local alignment of
tilt series and damage induced by focused ion beam
milling. With this new release of PyTOM, we focused on
integration with other software packages that support more
refined subtomogram-averaging workflows. The automated
classification of ribosomes by TM with appropriate angular
sampling on locally corrected tomograms has a sufficiently
low false-discovery rate, allowing for it to be directly
used for high-resolution averaging and adequate
sensitivity to reveal polysome organization.
keywords:
- electron cryo-tomography
- particle localization and identification
- template matching
- GPU acceleration
- volume registration
license: CC-BY-4.0
journal: "International Journal of Molecular Sciences"
month: 8
start: 13375 # First page number
doi: 10.3390/ijms241713375
issue: 17
volume: 24
year: 2023
8 changes: 6 additions & 2 deletions src/pytom_tm/entry_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,9 @@ def extract_candidates(argv=None):

# write out as a RELION type starfile
starfile.write(
df, job.output_dir.joinpath(f"{job.tomo_id}_particles.star"), overwrite=True
{"particles": df},
job.output_dir.joinpath(f"{job.tomo_id}_particles.star"),
overwrite=True,
)


Expand Down Expand Up @@ -1019,5 +1021,7 @@ def merge_stars(argv=None):
dataframes = [starfile.read(f) for f in files]

starfile.write(
pd.concat(dataframes, ignore_index=True), args.output_file, overwrite=True
{"particles": pd.concat(dataframes, ignore_index=True)},
args.output_file,
overwrite=True,
)
3 changes: 2 additions & 1 deletion src/pytom_tm/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ def extract_particles(
# apply tomogram mask if provided
tomogram_mask = None
if ignore_tomogram_mask:
logging.warn("Ignoring tomogram mask")
logging.warning("Ignoring tomogram mask")
elif tomogram_mask_path is not None:
tomogram_mask = read_mrc(tomogram_mask_path)
elif job.tomogram_mask is not None:
Expand Down Expand Up @@ -346,6 +346,7 @@ def extract_particles(
"rlnCoordinateY": "rlnCenteredCoordinateYAngst",
"rlnCoordinateZ": "rlnCenteredCoordinateZAngst",
"rlnMicrographName": "rlnTomoName",
"rlnDetectorPixelSize": "rlnTomoTiltSeriesPixelSize",
}
output = output.rename(columns=column_change)

Expand Down
1 change: 1 addition & 0 deletions tests/test_tmjob.py
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,7 @@ def test_extraction(self):
"rlnCenteredCoordinateYAngst",
"rlnCenteredCoordinateZAngst",
"rlnTomoName",
"rlnTomoTiltSeriesPixelSize",
):
self.assertTrue(
column in df_rel5.columns,
Expand Down

0 comments on commit 086b0b6

Please sign in to comment.