Skip to content

Instantly share code, notes, and snippets.

@alisterburt
alisterburt / imod_model_to_rln3_star_file.py
Created May 18, 2022 05:08
convert a set of IMOD models to a RELION 3 star file for warp (for matteo)
from pathlib import Path
from typing import Tuple
import eulerangles
import imodmodel
import numpy as np
import pandas as pd
import starfile as starfile
from pydantic import BaseModel
@alisterburt
alisterburt / visualise_projected_points.py
Created April 28, 2022 09:31
visualise projected positions from RELION tilt-series alignments
import mrcfile
import numpy as np
import starfile
import napari
positions_xyz = np.loadtxt('picking/test_recon_noflipyz_noflipz.csv', delimiter=',') * 8
positions_xyz = np.c_[positions_xyz, np.ones(positions_xyz.shape[0])] # add column of ones
positions_xyz = positions_xyz.reshape((-1, 1, 4, 1))
star = starfile.read('ImportTomo/job001/tomograms.star')
df = star['TS_01']
@alisterburt
alisterburt / add_optics_block.py
Last active March 22, 2022 16:29
simple RELION 3.0 to RELION 3.1 data.star conversion
import pandas as pd
import starfile
STAR_FILE = '/path/to/rln30_file.star'
# starfile returns a pandas dataframe for a 'one-block' file
# if you have multiple blocks then
# you get a dictionary of {'block_name': pd.DataFrame)
df = starfile.read(STAR_FILE)
@alisterburt
alisterburt / viewer.py
Created March 15, 2022 19:19
particle viewer/selector for Euan/Giulia
from pathlib import Path
from typing import Dict
from enum import Enum
import napari
import numpy as np
import mrcfile
import pandas as pd
import starfile
import eulerangles
@alisterburt
alisterburt / filament_picker.py
Created March 7, 2022 17:39
basic_filament_picker
from pathlib import Path
import mrcfile
import pandas as pd
import napari
import numpy as np
from magicgui import magicgui
OUTPUT_DIRECTORY = 'picking'
Path(OUTPUT_DIRECTORY).mkdir(exist_ok=True, parents=True)
@alisterburt
alisterburt / basic_3d_point_picker.py
Last active May 12, 2022 18:13
basic 3D picker
from pathlib import Path
import mrcfile
import napari
import numpy as np
from magicgui import magicgui
OUTPUT_DIRECTORY = 'picking'
Path(OUTPUT_DIRECTORY).mkdir(exist_ok=True, parents=True)
@alisterburt
alisterburt / batch_reconstruct.py
Created February 16, 2022 10:43
batch reconstruction of tomograms in RELION 4
import subprocess
from pathlib import Path
import starfile
import typer
from rich.console import Console
from rich.progress import track
prompt_kwargs = {'prompt': True, 'prompt_required': True}
@alisterburt
alisterburt / fig_w_particles.m
Created January 18, 2022 20:27
dynamo slice figure
m = dread('mdipoleSet_rawVesicle_1.omd');
sz = dpktomo.volume.slices.Slice();
sz.source = 'hiv.mrc';
sz.center=m.center;
sz.thickness=10;
sz.l = [200, 200];
sz.eulers = 'z';
sz.fetchData();
@alisterburt
alisterburt / iou_einops.py
Created January 11, 2022 10:07
iou einops
def area(a, num_classes):
class_idx = einops.rearrange(torch.arange(num_classes), 'i -> i 1 1 1')
a = a == class_idx
area = einops.reduce(a, 'c ... -> c', reduction='sum')
return area
def intersection(a, b, num_classes) -> float:
class_idx = einops.rearrange(torch.arange(num_classes), 'i -> i 1 1 1')
a = a == class_idx
@alisterburt
alisterburt / transforms.py
Created December 9, 2021 17:05
transform poses
import numpy as np
import einops
from pydantic import BaseModel
class Array(np.ndarray):
def __class_getitem__(cls, t):
return type('Array', (Array,), {'__dtype__': t})
@classmethod