Skip to content

Releases: KosinskiLab/pyTME

v0.2.5

06 Sep 09:06
Compare
Choose a tag to compare

Version 0.2.5 introduces analytical gradients for non-exhaustive scoring methods and adds support for complex template shapes in Fourier shift calculations.

Enhancements

  • Cross-correlation-based scores in tme.matching_optimization were given a grad method to compute analytical gradients.
  • tme.matching_data.fourier_padding supports computing shifts of complex-shaped templates.

Documentation

  • Minor revision of code examples to reflect a change in test data packaging.

v0.2.4

25 Aug 10:24
Compare
Choose a tag to compare

Version 0.2.4 addresses a critical bug, continues the deprecation process of tme.preprocessing, and includes various improvements and fixes. Users are strongly advised to update to this new version.

For users working with 0.2.3, the issue can be avoided by using --pad_filter with match_template.py. Alternatively, using the box size recommended by postprocess.py together with --no_centering can be used.

Bug Fixes

  • Fixed a critical bug in match_template.py that caused wider cross-correlation peaks when using filters and templates not padded to the recommended shape by preprocess.py (4d0e01f, Thanks to Min Zhang and #15 for reporting).
  • Resolved a minor numerical inaccuracy when using weighted tilt masks (5d14e6b).
  • Corrected a type error that occurred when using discrete bandpass filters on cupy backends (4d0e01f).

API/CLI Changes

  • Continued the deprecation of tme.preprocessor module and moved the implementation of wedge masks to tme.preprocessing.tilt_series.

Enhancements

  • Restructured C extensions and tests to prevent potential circular imports when testing conda/pyenv installations (4d0e01f).
  • postprocess.py can automatically determine the ideal box size for a given backend.

v0.2.3

13 Aug 08:12
Compare
Choose a tag to compare

Version 0.2.3 introduces quality-of-life improvements, fixes a range of outstanding issues, and more extensive documentation. Users are recommended to update to the new version.

Enhancements

  • Relion star files can be created without extracting subtomograms (#10).
  • preprocess.py has more functionalities for template generation.

API/CLI Changes

  • FFT padding was harmonized across backends, defaulting to tme.backends.NumpyFFTWBackend.
  • tme.preprocessing.WedgeReconstructed returns a strictly binary mask if weighting is disabled.
  • match_template.py can no longer perform threshold-based cropping of input data.

Documentation

  • Deprecated quickstart in favor of a more extensive and structured user guide.

Bug Fixes

  • match_template.py would create CTFs that did not factor in the spatial sampling rate, yielding incorrect CTFs. This has since been fixed and tme.preprocessing.tilt_series.CTF has been adapted accordingly to avoid such issues in the future (48eadf6).
  • For certain data shape and parameter combinations (odd/even, fourier padding / edge padding), template matching results would be shifted by a single-voxel. This has been fixed in a793815.
  • tme.Density.from_file would incorrectly extract the origin argument from CCP4/MRC files with non-standard MAPC, MAPS, MAPR configuration. This has been fixed in 2a2438b.
  • Using tme.analyzer.PeakCallerMaximumFilter with the pytorch backend would ignore peaks on the boundaries for certain min-distance requirements. This has been fixed in 531ff77.
  • Fixed an issue where the pytorch backend would not be listed as available in c54ddef.

v0.2.2

31 Jul 20:39
Compare
Choose a tag to compare

Version 0.2.2 introduces improvements to core functionality, new backends, and code refactoring.

Enhancements

  • Exposed computation backend in match_template.py.
  • Extended match_template.py to support n-dimensional matching (previously API-only).
  • Added background correction feature to postprocess.py.
  • Expanded GUI capabilities for manual matching refinement and target mask creation.
  • Introduced new computation backends: MLX and Jax.

API Changes

  • Deprecated tme.helpers; functions moved to tme.Structure and tme.Preprocessor.
  • Replaced redundant functions in tme.preprocessor with the tme.preprocessing module.
  • Updated shape expressions in tme.matching_exhaustive to use fundamental types instead of backend-specific arrays.
  • Relocated scoring functions from tme.matching_exhaustive to tme.matching_scores.
  • Refactored backends using metafunctions to reduce redundancy.

Documentation

  • Updated README.md and made minor changes to overall documentation.

v0.2.1

14 Jun 12:22
Compare
Choose a tag to compare

Version 0.2.1 introduces a range of new filters, improves interoperability, and addresses minor issues.

Enhancements

  • match_template.py can perform 3D CTF correction.
  • New reconstruction filters reducing artifact introdution.
  • postprocess.py can oversample and locally refine peaks to subvoxel / sub angular sampling precision.
  • Improved interoperability between dynamo, relion and pytme via tme.Orientations.

API Changes

  • tme.Density.centered now pads to odd box shapes, which improves the stability of peak estimates.
  • tme.MatchingData handles additional init parameters to avoid potentially unexpected interactions with setters.
  • tme.backends data type naming scheme was changed to more accurately reflect the underlying fundamental data type.

Documentation

  • Added code examples to Density / MatchingData / Exhaustive Matching and Orientations

Bug Fixes

  • Fixed an issue where match_template.py would crash when specifying target_masks. This was caused by a specific interaction of the OS with the underlying memmap (Thanks to Xiaohan for reporting).
  • Fixed an issue where postprocess.py would crash when specifying a minimum score cutoff. To avoid this moving forward, match_template.py and postprocess.py are now tested together with the API.
  • Fixed an issue where tme.preprocessing._utils.fftfreqn would create grids of incorrect dimensions.
  • skimage.io.imread raises a ValueError or OSError depending on the underlying OS when encountering an incorrect input. This would prevent users from running postprocess.py on atomic structures.
  • Fixed an issue where bandpass filter creation would fail when only specifying lowpass or highpass cutoff.
  • Fixed a performance issue when peak calling on GPU

v0.2.0

25 Apr 21:05
Compare
Choose a tag to compare

Version 0.2.0 provides a new interface for dealing with orientations in 3D space, quality of life improvements to the GUI and fixes a critical performance issue introduced in a previous version.

Enhancements

  • New Orientations class provides a convenient interface for converting between different file formats, namely tsv, relion star and dynamo tbl.
  • Severe runtime decrease (2-3 times) for scoring methods affected by an issue in cupy.std, including scores computed using tme.matching_exhaustive.corr_scoring and tme.matching_exhaustive.flc_scoring.
  • Revised interface for various command line options. New sampling and filtering functionalities in match_template.py
  • The preprocessing GUI can now automatically import pickle files created by match_template.py, read all formats supported by tme.density.Density.from_file and provides additional functionalities for alignment.

API Changes

  • Moved Orientations class from postprocess.py to tme.orientations.Orientations.
  • tme.matching_optimization was refactored to allow individual scoring objects to be setup more easily and to facilitate the usage of different optimizers.
  • tme.preprocessing.Compose introduces composable filters that were made accessible via match_template.py.

Documentation

  • init methods of classes defined in tme.matching_optimization are correctly displayed.
  • Inheritance structure is made more obvious.
  • Attributes are now correctly documented for dataclasses.

v0.020b

23 Apr 08:58
Compare
Choose a tag to compare
v0.020b Pre-release
Pre-release
Updated tme.analyzer.MaxScoreOverRotations cases to support arbitrary…

v0.1.9

03 Mar 21:10
Compare
Choose a tag to compare

v0.1.9 fixes a bug introduced in v0.1.8 that impedes processing large non-floating point data MRC files.

v0.1.8

01 Mar 17:16
Compare
Choose a tag to compare

Version 0.1.8 provides a series of enhancements over the 0.1.7 release.

Enhancements:

  • tme.matching_data.subset_array makes use of file metadata for contrast inversion. Previously, the relevant statistics were computed on subtomograms directly, which resulted in patchy score spaces if the local intensities deviated strongly from the global intensities.

  • tme.matching_data.subset_array makes use of a different padding strategy that reduces the influence of boundary effects.

  • The scores "FLC" and "FLCSphericalMask" no longer internally convert template masks to binary, but rather use the floating point values when normalizing the template.

  • Tilt angle based wedge masks are computed more efficiently.

  • The preprocessor_gui now supports low/highpass filtering based on resolution.

  • A Dockerfile for containerized deployment on GPU hardware was added.

  • The integration chapter was moved from the postprocessing section to a new dedicated section.

Bugfixes:

  • Fixed and issue where the center of tube masks would not be propagated correctly

v0.1.7

07 Feb 10:09
Compare
Choose a tag to compare

Version 0.1.7 fixes bugs discovered in the 0.1.6 release.

Bugfixes:

  • tme.density.Density.from_file factors in extended headers in CCP4/MRC files when reading subsets from disk. This might have caused issues for tomograms reconstructed using AreTomo, if the tomogram was split into subsets during template matching.
  • match_template.py correctly reports target mask in the output logs.
  • tme.matching_exhaustive.scan_subsets produces warnings if the template is larger than the target and padding is deactivated, which can cause shifts in generated scores spaces.

API Changes:

  • tme.density.Density.centered now performs linear interpolation when moving the center of mass to the center of the data attribute, rather than relying on whole integer translations.
  • tme.preprocessor introduces a variety of new filtering methods.
  • Edge and fourier padding logic was moved from tme.maching_exhaustive to tme.matching_data
  • Introducing experimental MLX backend for apple silcone devices

Documentation:

  • Minor wording changes.