Skip to main content

Write Chimera Map (CMAP) files

Project description

Cmapfile is a Python library and console script to write Chimera Map (CMAP) files, HDF5 files containing series of 3D XYZ datasets.

CMAP files can be created from numpy arrays and various file formats containing volume data, for example, BIN, TIFF, LSM, OIF, and OIB.

CMAP files can be visualized using UCSF Chimera [2], a program for interactive visualization and analysis of molecular structures and related data.

Author:

Christoph Gohlke

License:

BSD 3-Clause

Version:

2025.1.1

Quickstart

Install the cmapfile package and all dependencies from the Python Package Index:

python -m pip install -U cmapfile[all]

Print the command line usage:

python -m cmapfile --help

See Examples for usage cases.

Source code and support are available on GitHub.

Requirements

This revision was tested with the following requirements and dependencies (other versions may work):

Revisions

2025.1.1

  • Improve type hints.

  • Support Python 3.13.

2024.8.28

  • Fix lsm2cmap with tifffile > 2024.8.24.

  • Drop support for Python 3.9 and numpy < 1.24 (NEP29).

2023.8.30

  • Drop support for Python 3.8 and numpy < 1.22 (NEP29).

2022.9.29

  • Make subsampling compatible with ChimeraX (breaking).

  • Fix deprecated import of scipy.ndimage.interpolation.zoom.

  • Switch to Google style docstrings.

2022.2.2

  • Add type hints.

  • Drop support for Python 3.7 and numpy < 1.19 (NEP29).

2021.2.26

  • Fix LSM conversion with tifffile >= 2021.2.26.

  • Drop support for Python 3.6 (NEP 29).

2020.1.1

  • Do not write name attribute.

  • Drop support for Python 2.7 and 3.5.

  • Update copyright.

2018.8.30

  • Move cmapfile.py into cmapfile package.

2014.10.10

  • Initial release.

Notes

The CMAP file format according to [1]:

Example of HDF format written by Chimera (Chimera map format) follows.
The Chimera map file reader will allow all fields to be missing (except
the 3D data).

/image (group, any name allowed)
 name "centriole" (attribute)
 step (1.2, 1.2, 1.2) (attribute)
 origin (-123.4, -522, 34.5) (attribute)
 cell_angles (90.0, 90.0, 90.0) (attribute)
 rotation_axis (0.0, 0.0, 1.0) (attribute)
 rotation_angle 45.0 (attribute, degrees)
 color (1.0, 1.0, 0, 1.0) (attribute, rgba 0-1 float)
 time 5 (attribute, time series frame number)
 channel 0 (attribute, integer for multichannel data)
 /data (3d array of uint8 (123,542,82)) (dataset, any name allowed)
 /data_x (3d array of uint8 (123,542,82), alternate chunk shape) (dataset)
 /data_2 (3d array of uint8 (61,271,41)) (dataset, any name allowed)
    subsample_spacing (2, 2, 2) (attribute)
 (more subsampled or alternate chunkshape versions of same data)

References

  1. Thomas Goddard. [Chimera-users] reading in hdf5 files in chimera. https://www.cgl.ucsf.edu/pipermail/chimera-users/2008-September/003052.html

  2. UCSF Chimera, an extensible molecular modeling system. https://www.cgl.ucsf.edu/chimera/

  3. Globals for Images - SimFCS. https://www.lfd.uci.edu/globals/

Examples

Convert a 5D LSM file to CMAP file:

$ python -m cmapfile "/my data directory/large.lsm"

Convert all BIN files in the current directory to test.cmap. The BIN files are known to contain 128x128x64 samples of 16-bit integers. The CMAP file will store float32 maps using subsampling up to 16:

$ python -m cmapfile --shape 128,128,64 --step 1,1,2 --dtype i2 \
                     --cmap test.cmap --subsample 16 --astype float32 *.bin

Change the step size in the CMAP file:

$ python -m cmapfile --step 1,1,1.5 test.cmap

Print the cmapfile script usage:

$ python -m cmapfile --help

Usage: cmapfile [options] files

Convert volume data files to Chimera MAP files.

Options:
--version             show program's version number and exit
-h, --help            show this help message and exit
-q, --quiet
--filetype=FILETYPE   type of input file(s).
                      For example, BIN, LSM, OIF, TIF
--dtype=DTYPE         type of data in BIN files. For example, uint16
--shape=SHAPE         shape of data in BIN files in F order.
                      For example, 256,256,32
--offset=OFFSET       number of bytes to skip at beginning of BIN files
--step=STEP           stepsize of data in files in F order.
                      For example, 1.0,1.0,8.0
--cmap=CMAP           name of output CMAP file
--astype=ASTYPE       type of data in CMAP file. For example, float32
--subsample=SUBSAMPLE
                      write subsampled datasets to CMAP file

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cmapfile-2025.1.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

cmapfile-2025.1.1-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file cmapfile-2025.1.1.tar.gz.

File metadata

  • Download URL: cmapfile-2025.1.1.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for cmapfile-2025.1.1.tar.gz
Algorithm Hash digest
SHA256 1d13a5e873421f92c0ff031d0a3d0b00259335a86736a2c11973131155197af9
MD5 dada7d6e292df59210bee4a4820ce76a
BLAKE2b-256 a02ed9d26c5c886a73fd481b5570c8a9331d7a95ab09634e4038affb292cdd66

See more details on using hashes here.

File details

Details for the file cmapfile-2025.1.1-py3-none-any.whl.

File metadata

  • Download URL: cmapfile-2025.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for cmapfile-2025.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f9c89f1cb4e199b783659fe7f50fac6ebbb5df2c3301a6d4a0732736c0a0e22f
MD5 83ffaf7f25f110c7143c7641c7a0af0d
BLAKE2b-256 4b0799b0e77bf9dc0638e5446c4da9c01c5a29306db226ab48a85ebd64281de5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page