Scripts to correct shifts in bidirectional scanning
Using a bidirectional microscope can cause shifts in every second x-axis, resulting in extremely bad segmentation and tracking performance. These scripts correct this.
Work-flow
Run this before dataprep but after creating a structure out of microscopy file.
If you have multiple positions
activate the
acdc
environmentNavigate to
cd \Cell_ACDC\cellacdc\scripts
(if you have installed Cell_ACDC in a different directory navigate to that directory first)Use
python correct_shift_X_multi.py [path to folder] [initial shift]
to run the script. Path to folder would be for exampleC:\Users\SchmollerLab\Documents\MyData\TimelapseExp\2022-08-04
when one of the .tif files is inC:\Users\SchmollerLab\Documents\MyData\TimelapseExp\2022-08-04\Position_8\Images
The program will run, pay attention to the console for user input requests!
Note
After the program is finished, you can run the data prep module. Check before running it that all frames are fine now, as sometimes the sign of the shift changes for a few frames. In this case, you can use the correct_shift_X_single.py
script. Sometimes you need to use a negative shift! Most of the times (but not always) the shift is the same for all positions.
The expected structure of the folder is as the “Create data structure” module from Cell_ACDC creates.
If you have a single position
As above, except in step 3. You need to run python correct_shift_X.py [path to tif file] [initial shift]
Note
Notes As above
If you need to change single frames
As above, except in step 3. You need to run python correct_shift_X_single.py [path to tif file] [initial shift] [start frame] [end frame]
Note
Notes As above
Usually, the sign of the shift changes in these frames. Since you usually should have run a shift on the TIF file before, now you need to shift it with twice the amount back. If the original shift was 3, now you need to apply a shift of -6!
The numbers for the frames match exactly with the numbers shown in the data prep module, so the first frame is the first and not the zeroth.
Possible problems with solutions
I get errors from ‘imshow’: Change
PREVIEW_Z_STACK
andPREVIEW_Z
(see Configs) in the script to values that make sense for you. Worst case try 0 for both.TIF files are not found: Change
INCLUDE_PATTERN_TIF_SEARCH
for additional TIF files andINCLUDE_PATTERN_TIF_BASESEARCH
if_multi
does not find any paths accordingly.Wrong TIF files found: Refer to TIF files are not found.
The shift is different depending on where on one picture I’m currently at: No fix, usually this effect is low enough to not cause problems with segmentation and tracking. pew
Configs
There are quite a few things you can change in scripts. To change them, change them in configs.json in the scripts
folder. For the regex expression please find regex.txt
Same in all scripts
NEW_PATH_SUF
: Changes the suffix of the new files. Leaving it empty
causes old files to be overwritten, which is recommended, as otherwise
the data prep process will also align the old files.
PREVIEW_Z_STACK
: Changes the frame which is used in the preview.
PREVIEW_Z
: Changes the z-slice which is used in preview.
INCLUDE_PATTERN_TIF_SEARCH
: Regex expression which is used to filter the .tif files if you choose to search for other TIF files. If you don’t know regex, ask Chat_GPT to generate one for you by giving it examples of file names and then asking it to generate a regex code which excludes the files you want to exclude. In the code it is used in a re.match
function which iterates over all TIF files in the folder.
_multi
PRESET_SHIFT
: Allows you to set a standard shift.
INCLUDE_PATTERN_TIF_BASESEARCH
: Same as in INCLUDE_PATTERN_TIF_SEARCH
, but this regex expression is used to match TIF files which are used to determine the shift.
FOLDER_FILTER
: Filter which is applied in order to make sure only folders which contain tif files (and not for example the original microscopy file) are considered. The first function finding_base_tif_files_path()
is used to find the base TIF files. If your basic directory structure is different, change this function accordingly. root_path
is simply the argument parsed from user input. base_tif_files_paths
is the path directly to your main TIF file which should be used to determine the shift.
tif_files_paths
is the path to the folder in which they are contained.