From df13a0b4e4177a28945cbfd78cfc3d5c03ccf84e Mon Sep 17 00:00:00 2001 From: Rachel Lee <65371136+ScientistRachel@users.noreply.github.com> Date: Wed, 6 Nov 2024 15:03:59 -0500 Subject: [PATCH] Expand documentation --- docs/crop/crop.md | 47 ++++++++++++++++++- docs/decon/decon.md | 41 +++++++++++++++- docs/deskew/deskew.md | 39 ++++++++++++++- docs/index.md | 25 +++++++++- docs/mip/mip.md | 31 +++++++++++- docs/pipeline/bdv_save.md | 99 ++++++++++++++++++++++++++++++++++++++- docs/pipeline/config.md | 13 +++-- docs/pipeline/pipeline.md | 6 +-- 8 files changed, 286 insertions(+), 15 deletions(-) diff --git a/docs/crop/crop.md b/docs/crop/crop.md index d332244..6287439 100644 --- a/docs/crop/crop.md +++ b/docs/crop/crop.md @@ -6,4 +6,49 @@ nav_order: 3 # Cropping -Documentation on the cropping module \ No newline at end of file +The `crop` module removes pixels from the sides of an image. In most cases, this module is not necessary. However, in some experimental set ups, it maybe useful to remove some pixels before processing, so save on both processing time and final image storage. As an example, there may be a need to leave a large margin around the sample during imaging if sample migration is expected. After the time lapse is completed, if the sample only moved to the left, the empty margins on the right could be removed. + +When used though the pipeline command, the only parameters to be specified are the amount of pixels to crop from each side of the image. These should be the number of pixels to be removed, not the size of either the initial or final image. Thus, to remove the right 10 pixels from a 512 x 1500 x 201 pixel image stack, set `"cropLeft": 10`, which will lead to the output of a 502 x 1500 x 201 pixel image stack. `cropLeft` and `cropRight` remove pixels in the x-direction, `cropTop` and `cropBottom` remove pixels in the y-direction, and `cropFront` and `cropBack` remove pixels in z (i.e., remove z-slices). If an input stack is opened in ImageJ or FIJI, there will be a z-slider at the bottom of the image; `cropFront` removes slices starting from ImageJ's z = 1, while `cropBack` removes slices starting from the final z-slice. If any values are excluded, they are set to zero. + +If directly using the crop module on the command line, these cropping values are provided as one list in the input variables. You must manually specify the paths to the input and output files, as well as metadata such as the z-step size. + + +# Usage + +### Pipeline: Configuration File +The example below removes top 10 pixels in y, no and no pixels from the bottom in y. It removes 15 pixels from the left of the image in x. Because `cropRight` is excluded, no pixels are removed from the right. It also removes the first 100 z-slices and the last 50 z-slices. + +```json +"crop": { + "cropTop": 10, + "cropBottom": 0, + "cropLeft": 15, + "cropFront": 100, + "cropBack": 50 +} +``` + +### Command Line Example +The following command removes 40 pixels from the top and no other cropping is performed. The input file is `/path/to/experiment/scan_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0004732481msecAbs_000x_000y_000z_0000t.tif` and the output (`-o`) will be saved to `/path/to/experiment/crop/scan_Cam1_ch0_tile0_t0000_crop.tif`. The input image has a z-step size of 0.25 (`-s 0.25`) and any existing output will be overwritten (`-w`) +```c +crop -c 40,0,0,0,0,0 -w -s 0.25 -o /path/to/experiment/crop/scan_Cam1_ch0_tile0_t0000_crop.tif /path/to/experiment/scan_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0004732481msecAbs_000x_000y_000z_0000t.tif +``` + +### Crop Options + +``` +crop: cropping boundary pixels +usage: crop [options] path + +Allowed options: + -h [ --help ] display this help message + -c [ --crop ] arg (=0,0,0,0,0,0) boundary pixel numbers + (top,bottom,left,right,front,back) + -o [ --output ] arg output file path + -x [ --xy-rez ] arg (=-1) x/y resolution (um/px) + -s [ --step ] arg (=-1) step/interval (um) + -b [ --bit-depth ] arg (=16) bit depth (8, 16, or 32) of output image + -w [ --overwrite ] overwrite output if it exists + -v [ --verbose ] display progress and debug information + --version display the version number +``` \ No newline at end of file diff --git a/docs/decon/decon.md b/docs/decon/decon.md index c02ad7e..9be8833 100644 --- a/docs/decon/decon.md +++ b/docs/decon/decon.md @@ -6,6 +6,45 @@ nav_order: 5 # Deconvolution +The `decon` function performs a [Richardson-Lucy deconvolution](https://en.wikipedia.org/wiki/Richardson%E2%80%93Lucy_deconvolution) on the input image. The input image can be a deskewed image (in the case of stage scanning) or a raw input image (in the case of objective scanning). The function requires a centered PSF kernel, the PSF z-step, and the image z-step. + +The PSF is input to the pipeline by including it in the paths portion of the configuration file. The directory containing PSF files is is specified, and then specific file names inside that folder are linked to the laser lines. Any filename is appropriate as long as it is specified, but the laser values themselves must exactly match the `Settings.txt file` (e.g., don't use 561 when it should be 560). The input PSF must be centered, and ideally cropped to a square. We provide an [ImageJ macro](https://github.com/aicjanelia/LLSM/blob/master/src/imagej/center-psf.ijm) that will take an image stack and perform this cropping for you. There must be a matching settings file for each PSF and it must have a matching name. For example, a PSF file named `cropped_560_PSF.tif` must have a corresponding file `cropped_560_PSF_Settings.txt`. + +If using the pipeline, the image and PSF z-steps will be automatically parsed. If you using this module directly, those values can be determined from the image and PSF settings files (see [metadata](https://aicjanelia.github.io/LLSM/pipeline/bdv_save.html#metadata)). + + Other inputs are `n`, the number of Richardson-Lucy iterations, and `subtract`, which subtracts a uniform value from the deconvolved data. For the AIC LLSM and MOSAIC, this subtract value should be 100 (based on the properties of our cameras). + +# Usage + +### Pipeline: Configuration File +This is an example portion of a configuration file to use deconvolution. + +```json +"paths": { + "root": "/path/to/experiment/", + "psf": { + "dir": "calibration", + "laser": { + "560": "cropped_560_PSF.tif", + "488": "cropped_488_PSF.tif" + } + } +}, +"decon": { + "n": 5, + "bit-depth": 16, + "subtract": 100.0 +} +``` + +### Command Line Example +When directly using the decon module on the command line, you must specify the input and output files as well as the PSF. You should also input the number of iterations. Pixel size, etc. should be specified to avoid any conflicts with default values. The example below will deconvolve an input image stack that was previously deskewed. +```c +decon -n 5 -b 16 -s 100.0 -w -k /path/to/calibration/cropped_488_PSF.tif -p 0.1 -q 0.21462536238843902 -o /path/to/experiment/decon/scan_Cam1_ch0_tile0_t0000_decon.tif /path/to/experiment/deskew/scan_Cam1_ch0_tile0_t0000_deskew.tif +``` + +### Decon Options + ```text decon: deconvolves an image with a PSF or PSF parameters usage: decon [options] path @@ -25,5 +64,3 @@ Allowed options: -v [ --verbose ] display progress and debug information --version display the version number ``` - -The `decon` function performs a Richardson-Lucy deconvolution on a deskewed TIFF image. The function requires a centered PSF kernel, the PSF z-step, and the image z-step. \ No newline at end of file diff --git a/docs/deskew/deskew.md b/docs/deskew/deskew.md index 46df224..2dd4a15 100644 --- a/docs/deskew/deskew.md +++ b/docs/deskew/deskew.md @@ -6,6 +6,43 @@ nav_order: 4 # Deskewing +The `deskew` function performs an affine transformation on an image stack to correct the shearing of the data during acquisition. This step is only necessary if images were acquired in stage scanning mode (see [metadata](https://aicjanelia.github.io/LLSM/pipeline/bdv_save.html#metadata) to identify an experiment's scanning mode). + +Images on the LLSM and MOSAIC are acquired at an angle with respect to the coverslip because of the orientation of the objectives. To learn more about this, check out the AIC's blog post on [Understanding Objective Orientation in the LLSM](https://www.aicjanelia.org/post/understanding-objective-orientation-in-the-llsm). The deskew module takes as an input the objective angle and the stage step size. Note that the stage step size (the amount that the stage moves between slices) is not the same as the z-step size in the final stack. Step sizes are automatically calculated by the pipeline's setting parsers, and can also be determined manually from the `Settings.txt` file (see [metadata](https://aicjanelia.github.io/LLSM/pipeline/bdv_save.html#metadata)). You may also optionally specify the fill for empty regions in the skewed regions (default 0) and the bit-depth (default 16). + +If you need to calculate the z-step (for example, for downstream processing of the images), use the following equation: +``` +z-step = stage-step*sin(system-angle) +``` +Make sure that the calculator that you use to calculate sin knows that the angle is in degrees, or convert the angle to radians (`radians = degrees*pi/180`). The relevant values for each microscope are listed in the table below. + +| Microscope | Angle | μm/pixel | +| ----- | ----- | -----| +| LLSM | 31.8° | 0.104 | +| MOSAIC | -32.45° = 147.55° | 0.108 | + +# Usage + +### Pipeline: Configuration File +This is an example portion of a configuration file for a MOSAIC acquisition to be deskewed. + +```json +"deskew": { + "xy-res": 0.108, + "fill": 0.0, + "bit-depth": 16, + "angle": 147.55 +} +``` + +### Command Line Example +When directly using the deskew module on the command line, you must specify the input and output files. The best practice would be to also explicitly input values such as the angle, pixel size, etc. to avoid any conflicts with default values. The example below will deskew an input MOSAIC image stack. +```c +deskew -a 147.55 -x 0.108 -f 0.0 -b 16 -w -s 0.4 -o /path/to/experiment/deskew/scan_Cam1_ch0_tile0_t0000_deskew.tif /path/to/experiment/scan_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0004732481msecAbs_000x_000y_000z_0000t.tif +``` + +### Deskew Options + ```text deskew: removes skewing induced by sample scanning usage: deskew [options] path @@ -23,5 +60,3 @@ Allowed options: -v [ --verbose ] display progress and debug information --version display the version number ``` - -The `deskew` function performs an affine transformation on a LLSM TIFF image to correct the shearing of the data during acquisition. The step/interval parameter refers to the distance travelled by the stage for each slice. This is not the same as the z-step which is equal to `step * sin(31.8) * (PI/180.0)`. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 977bf06..6262b0f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,8 +3,9 @@ title: Home layout: home nav_order: 1 --- +# LLSM Processing Pipeline -The Advanced Imaging Center (AIC) uses this pipeline for pre-processing of images created on our LLSM or MOSAIC systems. The pipeline consists of multiple discrete modules that are accessed via the command line using either the `llsm-pipeline` or `mosaic-pipeline` commands. The main difference in the two pipelines is the parsing of filenames and acquisition settings metadata. +The Advanced Imaging Center (AIC) uses this pipeline for pre-processing of images created on our LLSM or MOSAIC systems. The pipeline consists of multiple discrete modules that are accessed via the command line using either the `llsm-pipeline` or `mosaic-pipeline` commands. Which modules to implement are controlled by a configuration JSON file. The main difference in the two pipelines is the parsing of filenames and acquisition settings metadata. Each of the modules compiles to a separate binary that can also be directly executed by calling it on the command line. These modules are: - Cropping @@ -12,4 +13,24 @@ Each of the modules compiles to a separate binary that can also be directly exec - Deconvolution - Maximum Intensity Projection -The main pipeline command and each individual module are further described in this documentation. With any command, you can also use the `-h` option to get a list of supported arguments. \ No newline at end of file +The main pipeline command and each individual module are further described in this documentation. With any command, you can also use the `-h` option to get a list of supported arguments. + + +## Cheatsheet + +### Command Line Examples +``` +llsm-pipeline /aic/instruments/llsm/experimentFolder/config.json + +mosaic-pipeline /aic/instruments/MOSAIC/experimentFolder/config.json +``` + +### Configuration File +See an [example configuration file here](https://aicjanelia.github.io/LLSM/pipeline/config.html#example-configjson). + +### Microscope Parameters +| Microscope | Angle | μm/pixel | +| ----- | ----- | -----| +| LLSM | 31.8° | 0.104 | +| MOSAIC | -32.45° = 147.55° | 0.108 | + diff --git a/docs/mip/mip.md b/docs/mip/mip.md index 1ad822c..3408a59 100644 --- a/docs/mip/mip.md +++ b/docs/mip/mip.md @@ -6,6 +6,36 @@ nav_order: 4 # Maximum Intensity Projection (MIP) +The `mip` module is run together with the other processing modules and will create MIPs for any modules that are run. For example, if running both `deskew` and `decon`, MIPs will be made for both. The subfolder created by `mip` will contain subfolders indicating which input images were used to create them (e.g., a `decon` subfolder). Inside this folder will be files that end with `mip_x`, `mip_y`, and `mip_z`. The dimension in the file name is the axes over which the images have been projected. + +## Viewing MIPs + +2D MIPs are very useful for screening data, but in general, should not be used for downstream analysis (use the appropriate processed image folder of 3D images). To quickly look at MIPs in ImageJ, use the option under `File > Import > Image Sequence...`. This will open a dialog box that allow for selecting the directory of images to load in. The directory will be something like `/path/to/experiment/mip/deskew/`. By default, the importer will attempt to open all images in the folder. This begins by opening the first image in the folder, and then excluding any subsequent files that are not the same size. In the case of `mip` folders, this will lead to importing only `_x` files. To get only the files of interest, the `Filter:` dialog can be used to select files. For example, to select the z projections, input `_z` in the filter dialog. + +More complex filtering of imported images is also possible using regular expressions. In ImageJ, `.*` is a wildcard, and the complete regular expression must be enclosed in parentheses. For example, to load in y projections of only channel zero, use `(ch0.*_y)` in the filter dialog. When the filter dialog box is changed, the number of images to be loaded automatically changes (shown in the `Count:` dialog). If the value is `---` or otherwise does not make sense, there is likely a typo in the regular expression. + + +# Usage + +### Pipeline: Configuration File +In the configuration file, simply specify which axes to create (`true`) or ignore (`false`). In general, set all values to `true`. + +```json +"mip": { + "x": true, + "y": true, + "z": true +} +``` + +### Command Line Example +When directly using the mip module on the command line, you must specify the input and output files. You should also input the axes to project over (`-x -y -z`). The following example makes MIPs in all three dimensions for a deskewed image. Specify the pixel sizes to output properly scaled projections. +```c +mip -x -y -z -x 0.104 -q 0.21462536238843902 -o /path/to/experiment/mip/deskew/scan_Cam1_ch0_tile0_t0000_deskew_mip.tif /path/to/experiment/deskew/scan_Cam1_ch0_tile0_t0000_deskew.tif +``` + +### MIP Options + ```text mip: generates a maximum intensity projection along the specified axes usage: mip [options] path @@ -24,4 +54,3 @@ Allowed options: --version display the version number ``` -The `mip` function performs a maximum intensity projection on any 3D TIFF image. The function creates mips along any specified axis (i.e., `-x`, `-y`, or `-z`), and the output filenames are appended with the corresponding axis name. The `x` and `y` dimensions are scaled to match the resolution of the `z` dimension. \ No newline at end of file diff --git a/docs/pipeline/bdv_save.md b/docs/pipeline/bdv_save.md index c5ac36f..0b1114a 100644 --- a/docs/pipeline/bdv_save.md +++ b/docs/pipeline/bdv_save.md @@ -5,4 +5,101 @@ parent: Pipeline Usage nav_order: 3 --- -This page will describe file naming conventions. \ No newline at end of file +# File Organization +{: .no_toc } + +## Table of Contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + +Users are encouraged to organize experiments by date and with informative folder structures before running the processing pipeline. All processed files are saved in subfolders of the original image folder. Processed files can be saved with the [original naming scheme](#raw-images) or a simplified [bdv naming scheme](#bdv-saving). + +A common mistake is to start an acquisition, immediately realize a mistake, end the first acquisition, and restart it in the same folder. This can lead to incorrect processing of the folder as it will have multiple files with the same time point naming, etc. If restarting an acquisition, always create a new folder! + +## Raw Images +After a LLSM or MOSAIC acquisition, the acquisition folder will contain individual tiff files for each time point and channel. The same folder that contains tiff files will also contain several metadata files. The structure of the metadata files will depend on the acquisition set up, but most importantly for the pipeline, the folder should contain at least one file ending with `Settings.txt`. + +Each raw tiff file name also contains relevant metadata for the experiment. Two example filenames from the LLSM are: +``` +scan_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0004732481msecAbs_000x_000y_000z_0000t.tif +scan_CamA_ch0_CAM1_stack0001_488nm_0002520msec_0004735001msecAbs_000x_000y_000z_0000t.tif +``` +In this example, the acquisition was named `scan`. This is the most common naming, but it is possible to have other names here. If changing the name from scan, make sure to not include any spaces in your filenames. + +The images were acquired on Camera A (`CamA`); the only other option is `CamB`. This file corresponds to channel 0 (`ch0`), which we can see later in the filename corresponds to the `488nm` laser. + +The first filename corresponds to the first time point, as indicated by `stack0000`, the second filename is the next time point as indicated by `stack0001`, and this pattern will continue across the time course. Relative (e.g., `0000000msec`) and absolute (e.g., `0004732481msecAbs`) times of acquisition are also recorded in the file name. These can be used to confirm the frame rate; in this example there were 2.52 s between stack 0 and stack 1. + +### _Multi-position Imaging_ +If multiple positions are acquired at once (whether for tiling or to acquire distinct regions of the coverslip), the file names will change slightly. Here are example file names from a multi-position imaging experiment on the MOSAIC: +``` +Scan_Iter_0000_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0005394318msecAbs_-01x_-01y_-01z_0000t +Scan_Iter_0001_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0005695970msecAbs_-01x_-01y_-01z_0001t +``` +In this case, the frame number is no longer recorded in the stack position of the file name. You can see in the example above that both names contain `stack0000`. The frame number now shows up in two other places in the filename: `Iter_####` and `####t`. + +In a multi-position experiment, the separate positions will be stored in their own individual sub-folders. In the case of a tiling experiment, the tile number and position will be encoded in the `*x_*y_*z_` portion of the file name. + +### _Metadata_ +The `Settings.txt` file is parsed by the subfunctions `settings2json` for the LLSM or `mosaicsettings2json` for the MOSAIC. It parses multiple parts of the settings file, but two key parts for processing are the z-stack and laser settings, which are both contained in the `***** Waveform *****` section of the file. + +Both systems can either be run in stage scanning or objective scanning mode. Stage scanning mode is most commonly used and requires deskewing. In objective scanning mode, no deskewing is required. To confirm which mode on the lattice, look for a section on `Z motion`, while on the MOSAIC, look for the name of the stage offset section. The text to search for in the settings file is summarized below. + +| System | Scan Type | Identifying Settings Text | +| ------ | ------ | ------ | +| LLSM | Objective Scanning | Z galvo & piezo | +| LLSM | Stage Scanning | Sample piezo | +| MOSAIC | Objective Scanning | XZ stage Offset | +| MOSAIC | Stage Scanning | X Stage Offset | + +This same section also contains information on the z-step interval. For objective scanning, the z-step is the second numerical value on the line that starts with `S Piezo Offset` (LLSM) or `XZ stage Offset` (MOSAIC). For stage scanning, look for the second number after `S Piezo Offset` (LLSM) or `X stage Offset` (MOSAIC), which is the step of the stage, but not the final z-step size. To determine the z-step size for stage scanning, use the equation `z-step = stage-step*sin(system-angle)`. The system-angle is 31.45° on the LLSM and -32.45° on the MOSAIC. + +```c +// Example MOSAIC Settings File +X Stage Offset, Interval (um), # of Pixels for Excitation (0) : 5 0.4 501 + +// Calculations +X Stage Offset = Stage Scanning +Stage step = 0.4 +Z-step = 0.4*sin(32.45 degrees) = 0.21462536238 +``` + +Laser information is encoded on sequential lines as seen in the examples from each system below. The order of the lasers in this section will be used to identify channels with the appropriate PSFs for deconvolution. +```c +// LLSM Example +Excitation Filter, Laser, Power (%), Exp(ms) (0) : N/A 560 10 10 +Excitation Filter, Laser, Power (%), Exp(ms) (1) : N/A 647 50 10 +Excitation Filter, Laser, Power (%), Exp(ms) (2) : N/A 488 10 10 + +// MOSAIC Example +Excitation Filter, Laser, Power (%), Exp(ms), Laser2, Power2 (%), Laser3, Power3 (%) (0) : N/A 560 10 20 OFF 0.1 OFF 0.1 +Excitation Filter, Laser, Power (%), Exp(ms), Laser2, Power2 (%), Laser3, Power3 (%) (1) : N/A 642 10 20 OFF 0.1 OFF 0.1 +``` + + +## Processed Files +Each module that is run will create its own subfolder of files. Subsequent modules will look in the relevant subfolder to continue the processing. For example, if running both cropping and deskewing, the deskewing will be run on the files in the `crop` folder, not on the original raw images. + +### _Maximum Intensity Projections (MIPs)_ +Maximum Intensity Projections take the maximum intensity across one axis of an image to turn a 3D image into a 2D image. This can be useful for quickly reviewing images without needing to load the full experiment into memory. See more about this in the [MIP documentation](https://aicjanelia.github.io/LLSM/mip/mip.html). In general, analysis should be done on the 3D images, and thus the `mip` folder should not be used for analysis. + +MIPs are created for each module that is used, so inside the `mip` folder will be additional subfolders corresponding to modules (e.g., `deskew` and `decon`). The folder name indicates which input image was used to create the MIP. MIPs can be created by taking the maximum along the x, y, or z axes, and file names will reflect this by ending with `_x`, `_y`, and `_z` respectively. + +## BDV Saving +The raw image file names contain informative metadata, but the long complex names can make converting to other file formats (e.g., Imaris) difficult. When bdv saving is enabled in the [configuration file](https://aicjanelia.github.io/LLSM/pipeline/config.html), the raw images will keep their informative names, but all processed files will have simplified names that are inspired by the [Automatic Loader in BigSticher](https://imagej.net/plugins/bigstitcher/autoloader), which runs on BigDataViewer (bdv). The simplified version keeps track of cameras, channels, tiles, and time points as simple numeric values (e.g., the specific laser line is removed). An example of the naming convention is shown below for a raw image that was run through the crop module. + +```c +// raw image +scan_CamA_ch0_CAM1_stack0000_488nm_0000000msec_0107885054msecAbs_-01x_-01y_-01z_0000t.tif +// cropped image +scan_Cam0_ch0_tile0_t0000_crop.tif +``` + +Enable bdv saving by including the following in the configuration file: +```json +"bdv": { + "bdv_save": true +} +``` \ No newline at end of file diff --git a/docs/pipeline/config.md b/docs/pipeline/config.md index 53e2aae..ec137c1 100644 --- a/docs/pipeline/config.md +++ b/docs/pipeline/config.md @@ -6,11 +6,18 @@ nav_order: 2 --- # Configuration File +{: .no_toc } The configuration file controls how the pipeline runs all requested modules. JSON formatting rules (e.g., using `{ }` and `,` appropriately) apply. If you work with an appropriate IDE (e.g., [Visual Studio Code](https://code.visualstudio.com/)), it can help highlight any errors you might have made in your JSON syntax. One configuration file can be used to process multiple experiments. For documentation purposes, it is often ideal to have one `config.json` file for a given project that is stored with the rest of the project's files. +## Table of Contents +{: .no_toc .text-delta } + +1. TOC +{:toc} + ## Paths ### _root_ @@ -42,7 +49,7 @@ The value of n in `decon` is not related to the bsub command, but rather is the The true/false values in `mip` determine if projections will be made along the x, y, and/or z axes. Setting all values to true is recommended. ## Bsub -The `bsub` section determines how jobs will be sent to the LSF cluster and is the section most specific to using the Janelia set up. A job is created for each individual tiff file, so thus there is one job for each timepoint and each channel. +The `bsub` section determines how jobs will be sent to the LSF cluster and is the section most specific to using the Janelia set up. A job is created for each individual tiff file, so thus there is one job for each time point and each channel. ### _job output_ If no output path, `o`, is specified, an email will be generated for every individual job, which corresponds to each individual tif, and can number in the thousands. This should be avoided! Setting `o` to `"/dev/null"` will result in no output being sent. If you are troubleshooting, you can specify a path to a file (e.g., `"/nrs/aic/instruments/llsm/pipeline-test/output.txt"`) that can be viewed as the processing progresses. @@ -60,9 +67,9 @@ Each slot has 15 GB of memory. The maximal memory is used by the deconvolution m ```json { "paths": { - "root": "/nrs/aic/instruments/llsm/pipeline-test/", + "root": "/aic/instruments/llsm/pipeline-test/", "psf": { - "dir": "20210222/Calibration", + "dir": "Calibration", "laser": { "560": "560_PSF.tif", "488": "488_PSF.tif" diff --git a/docs/pipeline/pipeline.md b/docs/pipeline/pipeline.md index 934bcb1..c2b2eb4 100644 --- a/docs/pipeline/pipeline.md +++ b/docs/pipeline/pipeline.md @@ -29,9 +29,9 @@ For most cases, the `llsm-pipeline` \ `mosaic-pipeline` command should be all th # Usage -### Example command +### Command Line Example ``` -llsm-pipeline -d /nrs/aic/instruments/llsm/pipeline-test/config.json +llsm-pipeline -d /aic/instruments/llsm/pipeline-test/config.json ``` ### LLSM Options @@ -64,4 +64,4 @@ optional arguments: -h, --help show this help message and exit --dry-run, -d execute without submitting any bsub jobs --verbose, -v print details (including commands to bsub) -``` \ No newline at end of file +```