Skip to content

Instantly share code, notes, and snippets.

@aganders3
Created November 27, 2023 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save aganders3/9b35091a0dd8913289e5ce990bc681d7 to your computer and use it in GitHub Desktop.
Save aganders3/9b35091a0dd8913289e5ce990bc681d7 to your computer and use it in GitHub Desktop.
A script to open an MRC file (generally CryoET data) and host it for viewing with Neuroglancer
# open an MRC file (optionally using mmap) and host it using Neuroglancer as a LocalVolume
# usage: python -m mrc_neuroglancer.py --mrcfile <filename> [--mmap] [--bind-address ADDRESS]
#
# requirements may be installed from PyPI:
# neuroglancer
# mrcfile
import argparse
import signal
import neuroglancer
import neuroglancer.cli
import mrcfile
def add_mrc_layer(state, fname, *, mmap=False):
if mmap:
d = mrcfile.mmap(fname)
layer_name = "mrc_mmap"
else:
d = mrcfile.open(fname)
layer_name = "mrc"
state.layers[layer_name] = neuroglancer.ImageLayer(source=neuroglancer.LocalVolume(d.data))
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("--mrcfile", type=str, required=True)
ap.add_argument("--mmap", action="store_true")
neuroglancer.cli.add_server_arguments(ap)
args = ap.parse_args()
neuroglancer.cli.handle_server_arguments(args)
viewer = neuroglancer.Viewer()
print(viewer)
with viewer.txn() as s:
add_mrc_layer(s, args.mrcfile, mmap=args.mmap)
signal.pause()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment