bm_experiments.bm_ANTs module¶
Benchmark for ANTs see: * http://stnava.github.io/ANTs * https://sourceforge.net/projects/advants/ * https://github.com/stnava/ANTsDoc/issues/1
INSTALLATION: See: https://brianavants.wordpress.com/2012/04/13/updated-ants-compile-instructions-april-12-2012/
Do NOT download the binary code, there is an issue:
Compile from source:
git clone git://github.com/stnava/ANTs.git mkdir antsbin cd antsbin ccmake ../ANTs make -j$(nproc)
Discussion¶
I. believes he found the “problem” and indeed it has to do with the file format we use (JPEG). I. converts the kidney images to 8-bit and then .NII.GZ and the whole pipeline works fine.
Note
For showing parameter/options setting run antsRegistration –help
Convert images to 8-bit using Fiji (this is only because I didn’t see any ITK format to store RGB images).
Convert the 8-bit images to .nii.gz (using ANTs script ConvertImagePixelType):
ConvertImagePixelType Rat_Kidney_PanCytokeratin-8bit.png Rat_Kidney_PanCytokeratin.nii.gz 1
Register images using antsRegistrationSyN.sh:
antsRegistrationSyN.sh -d 2 -m Rat_Kidney_PanCytokeratin.nii.gz -f Rat_Kidney_HE.nii.gz -j 1 -t s -o output > stdout-reg.txt 2> stderr-reg.txt
Apply transform to points:
antsApplyTransformsToPoints -d 2 -i Rat_Kidney_PanCytokeratin.csv -o testPointsHE.csv -t [ output0GenericAffine.mat, 1 ] -t output1InverseWarp.nii.gz
Usage¶
Run the basic ANT registration with original parameters:
python bm_experiments/bm_ANTs.py -t ./data_images/pairs-imgs-lnds_anhir.csv -d ./data_images -o ./results --path_ANTs ~/Applications/antsbin/bin --path_config ./configs/ANTs_SyN.txt
Note
it was needed to use own compiled version
Copyright (C) 2017-2019 Jiri Borovec <jiri.borovec@fel.cvut.cz>
-
class
bm_experiments.bm_ANTs.
BmANTs
(params)[source]¶ Bases:
birl.benchmark.ImRegBenchmark
Benchmark for ANTs no run test while this method requires manual compilation of ANTs
Example
>>> from birl.utilities.data_io import create_folder, update_path >>> path_out = create_folder('temp_results') >>> fn_path_conf = lambda n: os.path.join(update_path('configs'), n) >>> path_csv = os.path.join(update_path('data_images'), 'pairs-imgs-lnds_mix.csv') >>> params = {'path_table': path_csv, ... 'path_out': path_out, ... 'nb_workers': 2, ... 'unique': False, ... 'path_ANTs': '.', ... 'path_config': '.'} >>> benchmark = BmANTs(params) >>> benchmark.EXECUTE_TIMEOUT 10800 >>> benchmark.run() # doctest: +SKIP >>> del benchmark >>> shutil.rmtree(path_out, ignore_errors=True)
initialise benchmark
Parameters: params (dict) – parameters -
_clear_after_registration
(item)[source]¶ clean unnecessarily files after the registration
Parameters: item (dict) – dictionary with regist. information Return dict: the same or updated registration info
-
_extract_warped_image_landmarks
(item)[source]¶ get registration results - warped registered images and landmarks
Parameters: item (dict) – dictionary {str: value} with registration params Return dict: paths to results
-
_generate_regist_command
(item)[source]¶ generate the registration command(s)
Parameters: item (dict) – dictionary {str: str|float} with registration params Return str|list(str): the execution commands
-
_prepare_img_registration
(item)[source]¶ prepare the experiment folder if it is required, eq. copy some extra files
Parameters: item (dict) – dictionary with regist. params Return dict: the same or updated registration info
-
static
extend_parse
(arg_parser)[source]¶ extent the basic arg parses by some extra required parameters
Return object:
-
COMMAND_REGISTER
= '%(antsRegistration)s --dimensionality 2 %(config)s --output [%(output)s/trans]'[source]¶ command for executing the image registration
-
COMMAND_WARP_IMAGE
= '%(antsApplyTransforms)s --dimensionality 2 --input %(img_source)s --output %(output)s/%(img_name)s.nii --reference-image %(img_target)s --transform %(transfs)s --interpolation Linear'[source]¶ command for executing the warping image
-
COMMAND_WARP_POINTS
= '%(antsApplyTransformsToPoints)s --dimensionality 2 --input %(path_points)s --output %(output)s/%(pts_name)s.csv --transform %(transfs)s'[source]¶ command for executing the warping landmarks
-
EXEC_TRANSFORM_IMAGE
= 'antsApplyTransforms'[source]¶ executable for performing image transformation
-