diff --git a/pyem/cli/csparc2star.py b/pyem/cli/csparc2star.py index dc99a18..a76ff9a 100755 --- a/pyem/cli/csparc2star.py +++ b/pyem/cli/csparc2star.py @@ -42,6 +42,7 @@ def main(args): if args.input[0].endswith(".cs"): log.info("Detected CryoSPARC 2+ .cs file") cs = np.load(args.input[0]) + if args.first10k: cs = cs[:10000] diff --git a/pyem/metadata/cryosparc2.py b/pyem/metadata/cryosparc2.py index 500389f..c601192 100644 --- a/pyem/metadata/cryosparc2.py +++ b/pyem/metadata/cryosparc2.py @@ -145,6 +145,13 @@ def cryosparc_2_cs_model_parameters(cs, df=None, minphic=0): if df is None: df = pd.DataFrame() phic_names = [n for n in cs.dtype.names if "class_posterior" in n] + # convert shifts from alignment psize to blob psize + for dimension in ["alignments2D", "alignments3D"]: + try: + cs[f"{dimension}/shift"] = cs[f"{dimension}/shift"] * cs[f"{dimension}/psize_A"].reshape(-1, 1) / cs["blob/psize_A"].reshape(-1, 1) + cs[f"{dimension}/psize_A"] = cs["blob/psize_A"] + except ValueError: + pass if u'alignments3D/class_posterior' in cs.dtype.names: log.info("Assigning pose from single 3D refinement") for k in model: