MotionCor3 is an improved implementation of MotionCor2 with addition of CTF estimation, Multi-GPU accelerated software package that enables single-pixel level correction of anisotropic beam induced sample motion for cryoEM and cryET images.
[user@cn4172 ~]$ module load motioncor3
[+] Loading motioncor3 1.0.1 on cn4172
[user@cn4172 ~]$ MotionCor3 --help
Usage: MotionCor3 Tags
-InMrc
1. Input MRC file that stores dose fractionated stacks.
2. It can be a MRC file containing a single stack collected
in Leginon or multiple stacks collected in UcsfTomo.
3. It can also be the path of a folder containing multiple
MRC files when -Serial option is turned on.
-InTiff
1. Input TIFF file that stores a dose fractionated stack.
-InEer
1. Input EER file that stores a dose fractionated stack.
-InSkips
1. Used in combination with -Serial, skip the input files whose
names contain the strings specied here.
-OutMrc
1. Output MRC file that stores the frame sum.
2. It can be either a MRC file name or the prefix of a series
MRC files when -Serial option is turned on.
-ArcDir
1. Path of the archive folder that holds the archived raw
stacks with each pixel packed into 4 bits.
2. The archived stacks are saved in MRC file with the gain
reference saved in the extended header.
3. The rotated and/or flipped gain reference will be saved
if -RotGain and or -FlipGain are enabled.
...
Allocate a gpu interactive session and run the program. Sample session:
[user@biowulf]$ sinteractive --gres=lscratch:100,gpu:1 --mem=100g salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job [user@cn3144 ~]$ module load motioncor3 [user@cn3144 ~]$ motioncor3 -InMrc mymovie.mrcs -OutMrc mymicrograph.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0 [user@cn3144 ~]$ exit salloc.exe: Relinquishing job allocation 46116226 [user@biowulf ~]$
Create a batch input file (e.g. motioncor3.sh). For example:
#!/bin/bash module load motioncor3 MotionCor3 -InMrc /path/to/raw/data/12345.mrcs -OutMrc Micrographs/12345.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0
Submit this job using the Slurm sbatch command.
sbatch [--cpus-per-task=#] [--mem=#] --partition=gpu --gres=gpu:p100:1 motioncor3.sh
Create a swarmfile (e.g. motioncor3.swarm). For example:
MotionCor3 -InMrc /path/to/raw/data/0001.mrcs -OutMrc Micrographs/0001.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0 MotionCor3 -InMrc /path/to/raw/data/0002.mrcs -OutMrc Micrographs/0002.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0 MotionCor3 -InMrc /path/to/raw/data/0003.mrcs -OutMrc Micrographs/0003.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0 MotionCor3 -InMrc /path/to/raw/data/0004.mrcs -OutMrc Micrographs/0004.mrc -LogFile output.log -Bft 150 -PixSize 3.49 -OutStack 1 -Patch 1 1 -Trunc 1 -Gpu 0
Submit this job using the swarm command.
swarm -f motioncor3.swarm [-g #] [-t #] --partition=gpu --gres=gpu:p100:1 --module motioncor3where
| -g # | Number of Gigabytes of memory required for each process (1 line in the swarm command file) |
| -t # | Number of threads/CPUs required for each process (1 line in the swarm command file). |
| --module motioncor3 | Loads the motioncor3 module for each subjob in the swarm |