Skip to content

Instantly share code, notes, and snippets.

@wjiang
wjiang / nanodisc.py
Last active December 2, 2021 20:29
simulate a nanodisc
import numpy as np
import matplotlib.pyplot as plt
import mrcfile
import random
#################################################################################################
nanodisc_diameter = 170 # Angstrom, change this value for nanodisc of different sizes
#################################################################################################
@wjiang
wjiang / torus.py
Created January 24, 2019 02:30
simulate a torus in 3D
import numpy as np
import matplotlib.pyplot as plt
import mrcfile
n = 64 # 3D map size in pixels
distance_ringcenter_to_boxcenter = n/2.0 * 0.5
radius_ring = distance_ringcenter_to_boxcenter * 0.1
def buildTorus(n, distance_ringcenter_to_boxcenter, radius_ring):
# http://mathworld.wolfram.com/Torus.html
#!/usr/bin/env python
# by Wen Jiang @ Purdue University
import sys, argparse
import pandas as pd
import numpy as np
def main():
args = parse_command_line()
@wjiang
wjiang / simulateHelicalSegments.py
Last active March 1, 2020 03:32
simulate helical filament/tube segments with random number of segments in each helical filament/tube, rotation around helical axis, inplane direction and polarity, out-of-plane tilt, and center shift
import os, sys, random, math
import pandas as pd
import EMAN2
try:
mapFile, lstFile, nHelices, twist, maxTilt, maxShift = sys.argv[1:]
projFile = os.path.splitext(lstFile)[0]+".mrcs"
nHelices = int(nHelices)
twist = float(twist)
maxTilt = float(maxTilt)
@wjiang
wjiang / slurm_nodefile.py
Created May 26, 2019 23:14
save a Slurm job allocation (nodes and cpus) into a text file
#!/usr/bin/env python
import os, sys, argparse
def main():
args = parse_command_line()
try:
nodesCompressed = os.environ.get("SLURM_JOB_NODELIST").split(",")
except:
print("ERROR: environment variable SLURM_JOB_NODELIST does not exist")
#!/usr/bin/env python
# by Wen Jiang @ Purdue University
import sys, argparse
try:
import pandas as pd
import numpy as np
import scipy
except:
@wjiang
wjiang / sym_matrices.py
Created September 9, 2020 23:20
print out the transform matrices for a symmetry defined in EMAN2 convention
from EMAN2 import *
sym = "icos"
xf = Transform()
xf.to_identity()
nsym=xf.get_nsym(sym)
for i in range(nsym):
e = xf.get_sym(sym, i)
m = e.get_params("matrix")
@wjiang
wjiang / y-projection.py
Last active October 4, 2020 14:07
generate Y-direction projection of 2D images
import os, sys
import numpy as np
import mrcfile
if len(sys.argv)!=2:
print(f"Usage: {sys.argv[0]} <mrc file>")
sys.exit(-1)
imageFile = sys.argv[1]
prefix = os.path.splitext(imageFile)[0]
@wjiang
wjiang / mrc2png
Created January 23, 2023 15:19
Convert MRC/MRCS images to png format files
#!/usr/bin/env python
import sys, mrcfile
import numpy as np
from skimage.io import imsave
if len(sys.argv)!=3:
print(f"Usage: {sys.argv[0]} <input.mrc> <outputPrefix>")
sys.exit(-1)