framewatcher(1)             General Commands Manual            framewatcher(1)



NAME
       framewatcher - watch for command files or stacks to run with align-
       frames

SYNOPSIS
       framewatcher  [options]

DESCRIPTION
       Framewatcher is a Python program that can watch for either command
       files or frame stacks appearing in a directory.  The command files are
       expected to run the program Alignframes and to have extension .pcm,
       the extension on files produced by the SerialEMCCD plugin to DigitalMi-
       crograph.  The program can modify a few of the parameters in such a
       file with the options below.  The frame stacks must have extension .mrc
       or .tif.  Output files with aligned sums can be placed in a different
       directory.  Stacks and command files can be moved to another directory
       when they are finished.  Whole tilt series can be processed when a com-
       mand file specifies the metadata (.mdoc) file for the tilt series
       stack.

       To process frame stacks, either a master command file for alignment
       must be supplied or the -nocom option must be entered; in either case,
       the program will watch only for stacks, not for command files.  It will
       avoid moving an image file that has no images in it yet and a tilt
       series file that is not yet finished.  The master command file can run
       Alignframes, in which case the same parameters can be modified
       before running on each stack as when watching for command files.
       Alternatively, the command file can run other software, in which case
       it should contain the text "INPUTFILE" and "OUTPUTFILE" wherever the
       input and output filenames are needed, respectively.  The name of the
       stack will be substituted for "INPUTFILE", and the name of the output
       file for the aligned sum, including the optional output directory, will
       be substituted for "OUTPUTFILE".  A command file will be written with
       the root name of the stack plus the extension ".pcm".

       In either case, the command file is run with Vmstopy in the direc-
       tory where it is located and produces a log file there.  If files are
       not being moved elsewhere when done, the command file is renamed with
       ".done" added at the end, which is how the program keeps from rerunning
       stacks or command files even if restarted.  If no command file at all
       is run, ".done" will be added to the stack name itself unless it is
       moved elsewhere.

       An arbitrary command can be run before or after the command file is run
       (or a stack is moved or renamed, when there is no command file).  Items
       such as the root name of the data can be substituted into the command,
       as described below.  This may provide a more flexible way to run other
       alignment software than the master command file.

       The program works by looking in the directory for eligible files and
       running all of the ones that it sees.  When it sees no files, it waits
       5 seconds before scanning the directory again.  When it see stacks, it
       runs all but the last one immediately, then waits until the last one
       (which typically would be the only one seen) has not changed for at
       least 15 seconds.

       Entrl Ctrl C to terminate the program.  This will kill any running
       alignment operation.

OPTIONS
       Framewatcher uses the PIP package for input (see the manual page for
       pip).  Options can be specified either as command line arguments
       (with the -) or one per line in a command file (without the -).
       Options can be abbreviated to unique letters; the currently valid
       abbreviations for short names are shown in parentheses.

       -watch (-w) OR -WatchDirectory      Text string
              Directory to watch for Alignframes command files, whose
              extension should be .pcm, or stacks, whose extension should be
              .mrc or .tif.

       -output (-o) OR -OutputDirectory    Text string
              Directory in which to write aligned sums and other output.  This
              directory must already exist.  By default, files are written to
              the command file directory.

       -processed (-pr) OR -ProcessedDirectory       Text string
              One or more directories into which frame stacks will be moved
              when they are finished being processed.  If a relative path is
              entered, it will be treated as relative to the watched direc-
              tory, not the current directory.  The directory will be created
              if it does not exist.  If multiple directories are entered, the
              program will cycle through them.  When a command file to process
              a single frame file is done, the program will move the stack,
              command file, and log file into the directory.  If this direc-
              tory is on another filesystem, the files will be copied there
              and deleted from their current location.  If the command file
              has options to use a gain reference file or a defect correction
              file, copies of these files will also be maintained in the pro-
              cessed directory.  Alternatively, when moving files without a
              command file, the program will look for the names of the gain
              and defect files in the stack header and make sure there are
              copies of those.  When a command file to process a whole tilt
              series is done, nothing is moved unless the last component of
              the path to the frame files is the same as the tilt series root
              name.  SerialEM will write files in this way if the option to
              use the file name of the current open file in the name of the
              frame stack folder is selected in the Frame File Options dialog.
              In that case, the directory itself is moved to the processed
              directory, since it can be assumed not to contain other frame
              stacks to be processed.  If this -processed option is not
              entered, the program will just rename each ".pcm" file used to
              align the frames to "...pcm.done".  (Successive entries accumu-
              late)

       -master (-ma) OR -MasterCommandFile      File name
              Name of a command file to use if watching for frame stacks
              instead ".pcm" files.  For each stack, the entries will be modi-
              fied appropriately, a file will be written with the root name of
              the stack plus ".pcm", and that file will be run.  This master
              file should have either commands to run Alignframes (includ-
              ing lines with the options "InputFile" and "OutputImageFile") or
              entries INPUTFILE and OUTPUTFILE that will be substituted with
              the names of the frame stack and aligned sum file, respectively.
              If a file contains Alignframes options to apply a gain refer-
              ence or defect file, the specified files will be used without
              any checking for whether there is a newer file that applies to
              the current frames.  Thus, be sure these entries are correct for
              the current session before using a command file with such
              entries.

       -nocom (-noc) OR -NoCommandFile
              Just watch for frame stacks without running a command file.
              This option cannot be entered with -master and must be accompa-
              nied by either -processed, -before, or -after; i.e., there must
              be something for the program to do with each stack.  If a com-
              mand file does exist with the same root name as the stack, it
              will be copied also.

       -exclude (-e) OR -ExcludeFilesMatching   Text string
              When watching for stacks, exclude file names containing the
              given string.  This option can be used to exclude the frame
              stacks when processing whole tilt series with an .mdoc file con-
              taining frame file names.

       -lacks (-l) OR -MdocLacksImageExt
              When watching for stacks, .mdoc file names will be derived from
              the root name of the stack instead of the full name with exten-
              sion (e.g., setname.mdoc instead of setname.mrc.mdoc).

       -fmdoc (-f) OR -FrameFilesInMdoc
              Use names of frame stacks from an .mdoc file.  This option is
              useful when watching for tilt series stacks and not doing dose
              weighting.

       -ddrop (-dd) OR -DropAndReplacementDoses      Two floats
              Threshold dose for excluding frame set and dose to accumulate
              instead.  This option is appropriate if Alignframes is being
              run and causes the corresponding option to be inserted into the
              command file.

       -mdrop (-md) OR -DropSetIfMeanBelow      Floating point
              Exclude frame sets with a mean in an .mdoc file below the given
              value.  This option is appropriate if Alignframes is being
              run and causes the corresponding option to be inserted into the
              command file.

       -age (-ag) OR -MinimumAgeOfStacks   Floating point
              When watching for frame stacks, use this option to set the mini-
              mum time interval between the last detected change in the modi-
              fication time of the stack and starting to process the stack.
              The default is 15 seconds.

       -gpu (-g) OR -UseGPU      Integer
              Use the GPU (graphical processing unit) for computations; enter
              0 to use the best GPU on the system, or the number of a specific
              GPU (numbered from 1).  This entry overrides whatever was origi-
              nally written into the command file.

       -binning (-bi) OR -BinningOfSum     Integer
              Image reduction to apply to summed frames; this will override
              the value in the command files, which was set from the binning
              of the image returned to SerialEM.

       -sumscale (-su) OR -ScalingOfSum    Floating point
              Amount to scale summed values before output; this will override
              the value in the command files, which was set to match the scal-
              ing of images returned to SerialEM.  If dose-weighting is being
              used without the -dnorm option, additional scaling may be needed
              to preserve intensity resolution in highly filtered images.

       -dmdoc (-dm) OR -DosesInMetadataFile
              Do dose weighting with dose values in metadata file, if it is
              present.  This entry will lead to an entry "TypeOfDoseFile 4" in
              the ".pcm" file and remove entries for FixedTotalDose or Fixed-
              FrameDoses.  When frames sets are being aligned for a whole tilt
              series, the metadata file entry is already present in the ".pcm"
              file.  In other cases, the program will look for a frame stack
              .mdoc file, i.e., a file with ".mdoc" appended to the name of
              the input stack.  If this file is present, the MetadataFile
              option will be added to the ".pcm" file; otherwise nothing will
              be added.  This option cannot be entered with -dframe or -dto-
              tal.

       -dtotal (-dt) OR -FixedTotalDose    Floating point
              Total dose for each set of frames (not for entire tilt series),
              in electrons/square Angstrom. This entry will lead to a corre-
              sponding entry in the ".pcm" file, replacing an existing one if
              any, and remove entries for TypeOfDoseFile or FixedFrameDoses.
              This option cannot be entered with -dmdoc or -dframe.

       -dframe (-df) OR -FixedFrameDoses   Floating point
              List of frame doses and numbers that applies to all sets of
              frames.  The list is a set of paired numbers: a dose in elec-
              trons/square Angstrom and the number of frames taken at that
              dose (e.g., enter "2,10,4,5" for 10 frames of 2 e/A^2 and 5
              frames of 4 e/A^2).  This entry will lead to a corresponding
              entry in the ".pcm" file, replacing an existing one if any, and
              remove entries for TypeOfDoseFile or FixedTotalDose.  This
              option cannot be entered with -dmdoc or -dtotal.

       -dprior (-dp) OR -InitialPriorDose       Floating point
              Dose applied before any of the images in each frame set were
              taken; this value will lead to a corresponding entry in the
              ".pcm" file, replacing an existing one if any.

       -dnorm (-dn) OR -NormalizeDoseWeighting
              Normalize the dose weight filters so that they add up to to 1.0
              within each set of frames.  This entry will lead to a corre-
              sponding entry in the ".pcm" file.  It is useful for tilt series
              where dose weighting of the tilt images is to be done in a later
              step.

       -unweight (-un) OR -UnweightedFileSuffix      Text string
              Suffix for name of output file of summed images that have not
              been dose weighted, created in addition to the dose-weighted
              images placed in the main output file.  The file will be named
              with _suffix.mrc after the stack root name.

       -volt (-v) OR -Voltage    Integer
              Microscope voltage in kV; this value must be either 200 or 300.
              This entry will lead to a corresponding entry in the ".pcm"
              file, replacing an existing one if any; if none is entered, the
              default in Alignframes is 300 kV.

       -drift (-dr) OR -DriftLimitDistAndNumber      Two floats
              Maximum shift between frames above which to drop initial frames
              of the set (in unbinned pixels), and either the maximum fraction
              or the maximum number of frames to drop.  This entry will lead
              to a corresponding entry in the ".pcm" file. It is particularly
              useful for single-exposure (frame) tilt series.

       -reduce (-r) OR -ReducedSum    Integer
              Amount to reduce image by, or target size, to get a reduced copy
              of the summed image.  A value of 32 or less will be taken as the
              shrinkage factor, and a value greater than 32 will be taken as
              the target size to shrink too.  In the latter case, the geomet-
              ric mean of the X and Y size will be divided by the target size
              and rounded to an integer.  The output file will be named as the
              stack root name followed by "_redN.mrc", where N is the reduc-
              tion factor.  The file will be placed in the same directory as
              the aligned sum unless a different destination  is specified
              with the -thumb option.  If the summed file is a tilt series,
              only the middle image will be used.

       -power (-po) OR -PowerSpectrum      Integer
              Height for a JPEG file with a side-by-side reduced sum and
              reduced power spectrum.  The summed image will be reduced by
              exactly the amount to give the specified height.  The power
              spectrum will be computed on the full-sized summed image and
              reduced to the given height, so it shows all the frequencies in
              the summed image.  The output file will be named as the stack
              root name followed by "_power.jpg".  The file will be placed in
              the same directory as the aligned sum unless a different desti-
              nation is specified with the -thumb option.  If the summed file
              is a tilt series, only the middle image will be used.

       -scale (-sc) OR -ScaleSpectrum      Two floats
              Background gray level near the edge of the power spectrum, and
              the relative diameter of the annulus around the center whose
              mean will be scaled to be white.  The default gray level is 48,
              and the default diameter is 0.02.  Making the diameter smaller
              will saturate less area at the center of the power spectrum;
              making it bigger may give more dynamic range to show Thon rings
              away from the center.

       -thumb (-thu) OR -ThumbnailDirectory     Text string
              Directory into which the reduced sums or power spectra will be
              written.  If this option is not entered, they will be placed in
              the same directory as the aligned sums.  The directory will be
              created if it does not exist.

       -before (-be) OR -RunCommandBefore       Text string
              Command to run before running a command file, if any.  The com-
              mand can include items enclosed in %{...} to be substituted with
              the actual values for the current frame stack.  These items
              include:
                %{frameFile} - Frame stack, including original path when
              watching for ".pcm" files
                %{outputFile} - Aligned sum output file, including path
                %{gainReference} - Gain reference file, including path
                %{defectFile} -  Defect file, including path
                %{rootName} - Root name of command file/stack
                %{outputDir} - Directory entered with -output, if any
                %{processedDir} - Directory entered with -processed, if any
                %{reducedDir} - Directory entered with -thumb, if any
               The substituted text will be enclosed in double quotes, unless
              it is a root name with no spaces included.  Despite the quotes,
              it may be possible to concatenate these items with other text
              (it works in Linux).  The output file will not exist when a com-
              mand is run before a command file.

       -after (-af) OR -RunCommandAfter    Text string
              Command to run after running a command file, if any.  The com-
              mand can include the items enclosed in %{...} just described.
              This command will be run after any moving or renaming of pro-
              cessed files, so the input stack may no longer exist by the same
              name.

       -none (-non) OR -TextForNone   Text string
              Text to substitute in a command entered with -before or -after
              if the file or directory is not available for a particular item.
              The default is simply to remove the %{...} item if it has no
              value.  Using a defined text such as "NONE" can make it easier
              for a script to parse the command, for example, because then
              each option entered to the script would always be followed by
              another token instead of a blank.

       -keep (-k) OR -KeepCommandLogs
              Keep log files with output from running commands before or after
              a command file.  The default is to write a log then delete it if
              there is no error.

       -avoid (-av) OR -AvoidWindowsCopy   Integer
              1 to use Xcopy in Windows instead of Robocopy, or 2 to use nei-
              ther Xcopy nor Robocopy.  In the latter case, Cygwin commands
              will be used when running through Cygwin or Python commands when
              running a Windows Python.  This option exists because Robocopy
              can give obscure failures in some cases.   Xcopy can do the same
              operations but is "deprecated".  Copies with Cygwin commands may
              be significantly slower in some cases (e.g., with a 10G net-
              work); copies of whole directories through Python may be incred-
              ibly slow.

       -nice (-ni) OR -NicenessSetting     Integer
              Priority at which to run jobs, a number between 1 and 19, where
              a higher value has lower priority.  All values in this range are
              meaningfully different on Linux or Mac OS X, but they will be
              translated into a smaller selection of priority levels on Linux.
              The default is 15.

       -thread (-thr) OR -ThreadLimit      Integer
              Limit on number of threads used for processing. This value will
              be used to set OMP_NUM_THREADS, which sets an upper limit to the
              number of threads used for operations that are multi-threaded
              with OpenMP (image reductions, FFTs).  This thread number is
              already limited to the number of real cores when hyperthreading
              is enabled, but allowing that many threads may be counterproduc-
              tive when other multi-threaded operations are running.  You can
              determine the number of physical and logical cores by entering
              "imodqtassist -t" in a terminal.

       -help (-h) OR -usage
              Print help output

       -StandardInput
              Read parameter entries from standard input


EXAMPLES
       To run command files that appear in the current directory with no
       optional modifications, enter

          framewatcher

       To watch for files in a directory "X:\MyFrames" and move them to a sub-
       directory "Processed" when done, enter (in a DOS terminal on Windows)

          framewatcher -watch X:\MyFrames -proc Processed

       where the directory would be entered as "X:/MyFrames" in a Cygwin win-
       dow.

       To make sums with image reduction by 2 and run on a specific GPU, say #
       2, enter

          framewatcher -bin 2 -gpu 2

       where you could enter "-gpu 0" to run on the best available GPU even if
       the command file does not specify using a GPU.

AUTHOR
       David Mastronarde

SEE ALSO
       alignframes

       Email bug reports to mast at colorado dot edu.



IMOD                                 5.2.0                     framewatcher(1)