Skip to content

Instantly share code, notes, and snippets.

@alisterburt
alisterburt / sympy_matrix_decomp.ipynb
Last active April 17, 2023 13:20
Decomposing a RELION projection matrix for James Hooker
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@alisterburt
alisterburt / raps_3d.py
Last active March 28, 2023 19:32
Rotational average 3D for Pranav
from pathlib import Path
from typing import List, Sequence, Tuple
import einops
import mrcfile
import numpy as np
import torch
import typer
cli = typer.Typer(name='raps_3d', no_args_is_help=True, add_completion=False)
@alisterburt
alisterburt / motioncor_fourier_space.py
Created March 24, 2023 20:59
motioncor implementation in libtilt - fourier space
import torch
import numpy as np
import mrcfile
import einops
import torch.nn.functional as F
from torch_cubic_spline_grids import CubicBSplineGrid3d
from libtilt.rotational_average import rotational_average_2d
from libtilt.utils.coordinates import array_to_grid_sample
@alisterburt
alisterburt / motioncor_real_space.py
Last active March 24, 2023 20:58
libtilt motion estimation first pass
import torch
import numpy as np
import mrcfile
import einops
import torch.nn.functional as F
from torch_cubic_spline_grids import CubicBSplineGrid3d
from libtilt.utils.coordinates import array_to_grid_sample
from libtilt.shift.phase_shift_2d import phase_shift_images_2d, phase_shift_dfts_2d
@alisterburt
alisterburt / point_oversample_in_mask.py
Created February 22, 2023 19:43
For Matteo picking crystals
import einops
import numpy as np
import napari
import imageio
# variables to be set by user
SPACING = 28
# load data
labels = imageio.imread('matteo_labels_example.tif')
@alisterburt
alisterburt / proj_bproj_cycle_libtilt.py
Created February 22, 2023 15:28
projection backprojection cycle in torch
import sys
import mrcfile
import napari
import torch
import torch.nn.functional as F
import numpy as np
from scipy.stats import special_ortho_group
from libtilt.utils.coordinates import generate_rotated_slice_coordinates
@alisterburt
alisterburt / relion31_particle_pose.py
Created February 11, 2023 14:24
Extract particles poses from a RELION 3.1 STAR file
import starfile
from scipy.spatial.transform import Rotation as R
particle_star_file = 'hiv/01_10.00Apx_particles.star'
star = starfile.read(particle_star_file)
df = df = star['particles'].merge(star['optics'], on='rlnOpticsGroup')
# get necessary info from dataframes
@alisterburt
alisterburt / relion30_particle_pose.py
Last active February 11, 2023 14:16
RELION 3.0 particle pose from STAR file
import starfile
from scipy.spatial.transform import Rotation as R
particle_star_file = 'hiv/01_10.00Apx_particles.star'
df = starfile.read(particle_star_file)
# get necessary info from dataframe
xyz = df[['rlnCoordinateX', 'rlnCoordinateY', 'rlnCoordinateZ']].to_numpy() # (n, 3)
shifts = df[['rlnOriginX', 'rlnOriginY', 'rlnOriginZ']].to_numpy() # (n, 3)
@alisterburt
alisterburt / point_in_masked_region.py
Created January 10, 2023 11:46
point in masked region (for Shen Han)
import numpy as np
import napari
from skimage import data
# fake tomogram
tomogram = np.random.random((300, 300, 300))
# fake mask
mask = data.binary_blobs(
length=300, n_dim=3, blob_size_fraction=0.3, volume_fraction=0.1
@alisterburt
alisterburt / projection_geometry_example_for_tf.py
Created December 15, 2022 18:35
projection geometry example for thomas frosio
import os
from dataclasses import dataclass
from pathlib import Path
from typing import Tuple, Optional
import einops
import fast_histogram
import mmdf
import mrcfile
import napari