Skip to content

Commit

Permalink
Merge pull request #129 from sameeul/ver_0_7_0
Browse files Browse the repository at this point in the history
Preparing 0.7.0 release
  • Loading branch information
sameeul authored Aug 9, 2023
2 parents 9d7e11f + 42f060b commit a5bba48
Show file tree
Hide file tree
Showing 15 changed files with 121 additions and 869 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
matrix:
os: [ubuntu-20.04, macos-11, windows-latest]
cibw_archs: ["auto64"]
cibw_build: ["cp37-*", "cp38-*", "cp39-*", "cp310-*"]
cibw_build: ["cp37-*", "cp38-*", "cp39-*", "cp310-*", "cp311-*"]

steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- name: Copy 3rd-party libraries to staging directory
working-directory: ${{github.workspace}}
run: |
bash ci-utils/docker_copy_3rd_party_libs.sh ${{github.workspace}}/miniconda-for-nyxus/envs/nyxus-3.7
bash ci-utils/docker_copy_3rd_party_libs.sh ${{github.workspace}}/miniconda-for-nyxus/envs/nyxus-3.8
- name: Create Version File
run: python setup.py --version| grep -v init > VERSION
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
matrix:
os: [ubuntu-20.04, macos-11, windows-latest]
cibw_archs: ["auto64"]
cibw_build: ["cp37-*", "cp38-*", "cp39-*", "cp310-*"]
cibw_build: ["cp37-*", "cp38-*", "cp39-*", "cp310-*", "cp311-*"]

steps:
- uses: actions/checkout@v3
Expand Down
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ if(CUDA_FOUND AND USEGPU)
else () # for now, we assume CUDA 11.2+ supports all these archs.
set(CUDA_ARCH_LIST "35;37;50;72;75;80;86")
endif()
else()
elseif (CUDA_VERSION_MAJOR STREQUAL "12")
set(CUDA_ARCH_LIST "52;60;72;75;80;86;89;90")
else() # some old CUDA version (<10)
set(CUDA_ARCH_LIST "50")
endif()
elseif((NOT CUDA_FOUND) AND USEGPU)
Expand Down
2 changes: 0 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,8 @@ COPY ${LIB_LOCATION}/*.so* ${LIB_DIR}/

#Copy executable
COPY nyxus ${EXEC_DIR}/
COPY nyxushie ${EXEC_DIR}/

RUN chmod +x ${EXEC_DIR}/nyxus
RUN chmod +x ${EXEC_DIR}/nyxushie

WORKDIR ${EXEC_DIR}

Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ Assuming you [built the Nyxus binary](#building-from-source) as outlined below,

| <div style="width:150px">Parameter</div> | Description | Type |
|------|-------------|------|
--csvFile | Save csv file as one csv file for all the images or separate csv file for each image. Acceptable values: 'separatecsv' and 'singlecsv'. Default value: '--csvFile=separatecsv' | string constant
--outputType | Output type for feature values (speratecsv, singlecsv, arrow, parquet). Default value: '--outputType=separatecsv' | string constant
--features | String constant or comma-seperated list of constants requesting a group of features or particular feature. Default value: '--features=\*ALL\*' | string
--filePattern | Regular expression to match image files in directories specified by parameters '--intDir' and '--segDir'. To match all the files, use '--filePattern=.\*' | string
--intDir | Directory of intensity image collection | path
Expand Down Expand Up @@ -393,26 +393,26 @@ Assuming you [built the Nyxus binary](#building-from-source) as outlined below,

Suppose we need to process intensity/mask images of channel 1 :
```
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.*_c1\.ome\.tif --csvFile=singlecsv
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.*_c1\.ome\.tif --outputType=singlecsv
```
<span style="color:blue">Example 2:</span> __Running Nyxus to process specific image__

Suppose we need to process intensity/mask file p1_y2_r68_c1.ome.tif :
```
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=p1_y2_r68_c1\.ome\.tif --csvFile=singlecsv
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=p1_y2_r68_c1\.ome\.tif --outputType=singlecsv
```

<span style="color:blue">Example 3:</span> __Running Nyxus to extract only intensity and basic morphology features__

```
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --csvFile=singlecsv
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --outputType=singlecsv
```

<span style="color:blue">Example 4:</span> __Skipping specified ROIs while extracting features__

Suppose we need to blacklist ROI labels 2 and 3 from the kurtosis feature extraction globally, in each image. The command line way to do that is using option __--skiproi__ :
```shell
./nyxus --skiproi=2,3 --features=KURTOSIS --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --csvFile=singlecsv
./nyxus --skiproi=2,3 --features=KURTOSIS --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --outputType=singlecsv
```

As a result, the default feature extraction result produced without option --skiproi looking like
Expand Down Expand Up @@ -444,7 +444,7 @@ Note the comma character separator <span style="background-color:lightgrey">&nbs

If we need to blacklist ROI labels 15 and 16 only in image image421.tif ROI label 17 in image image422.tif, we can do it via a per-file blacklist :
```
./nyxus --skiproi=image421.tif:15,16;image421.tif:17 --features=KURTOSIS --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --csvFile=singlecsv
./nyxus --skiproi=image421.tif:15,16;image421.tif:17 --features=KURTOSIS --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output --filePattern=.* --outputType=singlecsv
```
Note the colon character <span style="background-color:lightgrey">&nbsp;&nbsp;<b>:</b>&nbsp;&nbsp;</span> between the file name and backlisted labels within this file and semicolon character separator <span style="background-color:lightgrey">&nbsp;&nbsp;<b>;</b>&nbsp;&nbsp;</span> of file blacklists.

Expand Down Expand Up @@ -477,7 +477,7 @@ Valid aggregation options are SUM, MEAN, MIN, MAX, WMA (weighted mean average),
<span style="color:blue">Example 6:</span> __Processing an image set with nested ROI postprocessing__

```
nyxus --features=*ALL_intensity* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output/directory --filePattern=.* --csvFile=separatecsv --reduceThreads=4 --hsig=_c --hpar=1 --hchi=0 --hag=WMA
nyxus --features=*ALL_intensity* --intDir=/path/to/intensity/images --segDir=/path/to/mask/images --outDir=/path/to/output/directory --filePattern=.* --outputType=separatecsv --reduceThreads=4 --hsig=_c --hpar=1 --hchi=0 --hag=WMA
```

As a result, 2 additional CSV files will be produced for each mask image whose channel number matches the value of option '--hpar': file
Expand Down Expand Up @@ -653,7 +653,7 @@ docker pull polusai/nyxus

The following command line is an example of running the dockerized feature extractor (image hash 87f3b560bbf2) with only intensity features selected:
```
docker run -it [--gpus all] --mount type=bind,source=/images/collections,target=/data 87f3b560bbf2 --intDir=/data/c1/int --segDir=/data/c1/seg --outDir=/data/output --filePattern=.* --csvFile=separatecsv --features=entropy,kurtosis,skewness,max_intensity,mean_intensity,min_intensity,median,mode,standard_deviation
docker run -it [--gpus all] --mount type=bind,source=/images/collections,target=/data 87f3b560bbf2 --intDir=/data/c1/int --segDir=/data/c1/seg --outDir=/data/output --filePattern=.* --outputType=separatecsv --features=entropy,kurtosis,skewness,max_intensity,mean_intensity,min_intensity,median,mode,standard_deviation
```

### Install from sources and package into a Docker image
Expand Down Expand Up @@ -693,8 +693,8 @@ Enter value for this parameter if neighbors touching cells needs to be calculate
__Features:__
Comma separated list of features to be extracted. If all the features are required, then choose option __*all*__.

__Csvfile:__
There are 2 options available under this category. __*Separatecsv*__ - to save all the features extracted for each image in separate csv file. __*Singlecsv*__ - to save all the features extracted from all the images in the same csv file.
__Outputtype:__
There are 4 options available under this category. __*Separatecsv*__ - to save all the features extracted for each image in separate csv file. __*Singlecsv*__ - to save all the features extracted from all the images in the same csv file. __*Arrow*__ - to save all the features extracted from all the images in Apache Arrow format. __*Parquet*__ - to save all the features extracted from all the images in Apache Parquet format

__Embedded pixel size:__
This is an optional parameter. Use this parameter only if units are present in the metadata and want to use those embedded units for the features extraction. If this option is selected, value for the length of unit and pixels per unit parameters are not required.
Expand Down
5 changes: 2 additions & 3 deletions ci-utils/build_conda.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ MINICONDA=$PWD/miniconda-for-nyxus # Modify this to your preferred location for
CPP_BUILD_DIR=$PWD
SRC_ROOT=$1 #source dir location
NYXUS_ROOT=$SRC_ROOT
PYTHON=3.7
PYTHON=3.8

git config --global --add safe.directory $NYXUS_ROOT

Expand Down Expand Up @@ -62,14 +62,13 @@ setup_miniconda
conda activate nyxus-$PYTHON
export NYXUS_HOME=$CONDA_PREFIX
#Build CLI
export CMAKE_ARGS="-DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DBUILD_CLI=ON -DUSEGPU=ON"
echo $CMAKE_ARGS
mkdir -p $CPP_BUILD_DIR
pushd $CPP_BUILD_DIR
cmake -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
-DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-DBUILD_CLI=ON \
-DUSEGPU=ON \
-DUSEARROW=ON \
$NYXUS_ROOT

cmake --build . --parallel 4
83 changes: 80 additions & 3 deletions ci-utils/docker_copy_3rd_party_libs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,92 @@ fi

mkdir -p 3rd_party_libs
cp $1/lib/libblosc*.so* ./3rd_party_libs/
cp $1/lib/libstdc++*.so* 3rd_party_libs/
cp $1/lib/libtiff*.so* ./3rd_party_libs/
cp $1/lib/libofstd*.so* ./3rd_party_libs/
cp $1/lib/libdcmdata*.so* ./3rd_party_libs/
cp $1/lib/libdcmjpeg*.so* ./3rd_party_libs/
cp $1/lib/libdcmjpls*.so* ./3rd_party_libs/
cp $1/lib/libdcmseg*.so* ./3rd_party_libs/
cp $1/lib/libfmjpeg2k*.so* ./3rd_party_libs/
cp $1/lib/libparquet*.so* ./3rd_party_libs/
cp $1/lib/libarrow*.so* ./3rd_party_libs/
cp $1/lib/./liblz4*.so* ./3rd_party_libs/
cp $1/lib/./libsnappy*.so* ./3rd_party_libs/
cp $1/lib/./libz*.so* ./3rd_party_libs/
cp $1/lib/./libzstd*.so* ./3rd_party_libs/
cp $1/lib/libtiff*.so* ./3rd_party_libs/
cp $1/lib/./libwebp*.so* ./3rd_party_libs/
cp $1/lib/./liblzma*.so* ./3rd_party_libs/
cp $1/lib/./libLerc*.so* ./3rd_party_libs/
cp $1/lib/./libjpeg*.so* ./3rd_party_libs/
cp $1/lib/./libdeflate*.so* ./3rd_party_libs/
cp $1/lib/./libdcm*.so* ./3rd_party_libs/
cp $1/lib/./libfmjpeg2k*.so* ./3rd_party_libs/
cp $1/lib/./liboflog*.so* ./3rd_party_libs/
cp $1/lib/./libxml2*.so* ./3rd_party_libs/
cp $1/lib/./libijg8*.so* ./3rd_party_libs/
cp $1/lib/./libijg12*.so* ./3rd_party_libs/
cp $1/lib/./libijg16*.so* ./3rd_party_libs/
cp $1/lib/./libdcmimgle*.so* ./3rd_party_libs/
cp $1/lib/./libdcmtkcharls*.so* ./3rd_party_libs/
cp $1/lib/./libdcmfg*.so* ./3rd_party_libs/
cp $1/lib/./libdcmiod*.so* ./3rd_party_libs/
cp $1/lib/./libopenjp2*.so* ./3rd_party_libs/
cp $1/lib/./libthrift*.so* ./3rd_party_libs/
cp $1/lib/./libcrypto*.so* ./3rd_party_libs/
cp $1/lib/./libbrotlienc*.so* ./3rd_party_libs/
cp $1/lib/./libbrotlidec*.so* ./3rd_party_libs/
cp $1/lib/./liborc*.so* ./3rd_party_libs/
cp $1/lib/./libglog*.so* ./3rd_party_libs/
cp $1/lib/./libutf8proc*.so* ./3rd_party_libs/
cp $1/lib/./libbz2*.so* ./3rd_party_libs/
cp $1/lib/./libgoogle_cloud_cpp_storage*.so* ./3rd_party_libs/
cp $1/lib/./libaws-cpp-sdk-identity-management*.so* ./3rd_party_libs/
cp $1/lib/./libaws-cpp-sdk-s3*.so* ./3rd_party_libs/
cp $1/lib/./libaws-cpp-sdk-core*.so* ./3rd_party_libs/
cp $1/lib/./libre2*.so* ./3rd_party_libs/
cp $1/lib/./libgoogle_cloud_cpp_common*.so* ./3rd_party_libs/
cp $1/lib/./libabsl_time*.so* ./3rd_party_libs/
cp $1/lib/./libabsl_time_zone*.so* ./3rd_party_libs/
cp $1/lib/./libaws-crt-cpp*.so* ./3rd_party_libs/
cp $1/lib/././libsharpyuv*.so* ./3rd_party_libs/
cp $1/lib/././libiconv*.so* ./3rd_party_libs/
cp $1/lib/././libicui18n*.so* ./3rd_party_libs/
cp $1/lib/././libicuuc*.so* ./3rd_party_libs/
cp $1/lib/././libicudata*.so* ./3rd_party_libs/
cp $1/lib/././libssl*.so* ./3rd_party_libs/
cp $1/lib/././libbrotlicommon*.so* ./3rd_party_libs/
cp $1/lib/././libprotobuf*.so* ./3rd_party_libs/
cp $1/lib/././libgflags*.so* ./3rd_party_libs/
cp $1/lib/././libgoogle_cloud_cpp_rest_internal*.so* ./3rd_party_libs/
cp $1/lib/././libcrc32c*.so* ./3rd_party_libs/
cp $1/lib/././libcurl*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_crc32c*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_str_format_internal*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_strings*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_strings_internal*.so* ./3rd_party_libs/
cp $1/lib/././libaws-cpp-sdk-cognito-identity*.so* ./3rd_party_libs/
cp $1/lib/././libaws-cpp-sdk-sts*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-event-stream*.so* ./3rd_party_libs/
cp $1/lib/././libaws-checksums*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-common*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_int128*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_base*.so* ./3rd_party_libs/
cp $1/lib/././libabsl_raw_logging_internal*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-mqtt*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-s3*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-auth*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-http*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-io*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-cal*.so* ./3rd_party_libs/
cp $1/lib/././libaws-c-sdkutils*.so* ./3rd_party_libs/
cp $1/lib/./././libnghttp2*.so* ./3rd_party_libs/
cp $1/lib/./././libssh2*.so* ./3rd_party_libs/
cp $1/lib/./././libgssapi_krb5*.so* ./3rd_party_libs/
cp $1/lib/./././libabsl_crc_internal*.so* ./3rd_party_libs/
cp $1/lib/./././libabsl_spinlock_wait*.so* ./3rd_party_libs/
cp $1/lib/./././libaws-c-compression*.so* ./3rd_party_libs/
cp $1/lib/./././libs2n*.so* ./3rd_party_libs/
cp $1/lib/././././libkrb5*.so* ./3rd_party_libs/
cp $1/lib/././././libk5crypto*.so* ./3rd_party_libs/
cp $1/lib/././././libcom_err*.so* ./3rd_party_libs/
cp $1/lib/././././libkrb5support*.so* ./3rd_party_libs/
cp $1/lib/././././libkeyutils*.so* ./3rd_party_libs/
14 changes: 7 additions & 7 deletions docs/source/cmdline_and_examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ should adhere to columns "WIPP I/O role" and "WIPP type".
- Type
- WIPP I/O role
- WIPP type
* - --csvFile
- Save csv file as one csv file for all the images or separate csv file for each image. Acceptable values: 'separatecsv' and 'singlecsv'. Default value: '--csvFile=separatecsv'
* - --outputType
- Output type for feature values. Acceptable value: speratecsv, singlecsv, arrow, parquet. Default value: '--outputType=separatecsv'
- string constant
- input
- enum
Expand Down Expand Up @@ -151,7 +151,7 @@ Suppose we need to extract only Zernike features and first 3 Hu's moments:

.. code-block:: bash
./nyxus --features=ZERNIKE2D,HU_M1,HU_M2,HU_M3 --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --csvFile=singlecsv
./nyxus --features=ZERNIKE2D,HU_M1,HU_M2,HU_M3 --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --outputType=singlecsv
2. Requesting specific feature groups
-------------------------------------
Expand All @@ -160,7 +160,7 @@ Suppose we need to extract only intensity features basic morphology features:

.. code-block:: bash
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --csvFile=singlecsv
./nyxus --features=*all_intensity*,*basic_morphology* --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --outputType=singlecsv
3. Mixing specific feature groups and individual features
---------------------------------------------------------
Expand All @@ -169,7 +169,7 @@ Suppose we need to extract intensity features, basic morphology features, and Ze

.. code-block:: bash
./nyxus --features=*all_intensity*,*basic_morphology*,zernike2d --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --csvFile=singlecsv
./nyxus --features=*all_intensity*,*basic_morphology*,zernike2d --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --outputType=singlecsv
4. Specifying a feature list from with a file instead of command line
---------------------------------------------------------------------
Expand All @@ -185,7 +185,7 @@ Then the command line will be:

.. code-block:: bash
./nyxus --features=feature_list.txt --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --csvFile=singlecsv
./nyxus --features=feature_list.txt --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/seg --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --outputType=singlecsv
5. Whole-image feature extraction
---------------------------------
Expand All @@ -194,7 +194,7 @@ The regular operation mode of Nyxus is processing pairs of intensity and mask im

.. code-block:: bash
./nyxus --features=*basic_morphology* --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/int --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --csvFile=singlecsv
./nyxus --features=*basic_morphology* --intDir=/home/ec2-user/data-ratbrain/int --segDir=/home/ec2-user/data-ratbrain/int --outDir=/home/ec2-user/work/OUTPUT-ratbrain --filePattern=.* --outputType=singlecsv
6. Regular and ad-hoc mapping between intensity and mask image files
--------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions docs/source/devguide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -222,14 +222,14 @@ Often multiple features need to be calculated together and the user faces the ne

.. code-block:: bash
nyxus --features=AREA_PIXELS_COUNT,AREA_UM2,CENTROID_X,CENTROID_Y,BBOX_YMIN,BBOX_XMIN,BBOX_HEIGHT,BBOX_WIDTH --intDir=/home/ec2-user/work/datasetXYZ/int --segDir=/home/ec2-user/work/dataXYZ/seg --outDir=/home/ec2-user/work/datasetXYZ --filePattern=.* --csvFile=separatecsv
nyxus --features=AREA_PIXELS_COUNT,AREA_UM2,CENTROID_X,CENTROID_Y,BBOX_YMIN,BBOX_XMIN,BBOX_HEIGHT,BBOX_WIDTH --intDir=/home/ec2-user/work/datasetXYZ/int --segDir=/home/ec2-user/work/dataXYZ/seg --outDir=/home/ec2-user/work/datasetXYZ --filePattern=.* --outputType=separatecsv
Features can be grouped toegther and gived convenient aliases, for example the above features AREA_PIXELS_COUNT, AREA_UM2, CENTROID_X, CENTROID_Y, BBOX_YMIN, BBOX_XMIN, BBOX_HEIGHT, and BBOX_WIDTH can be refered to as \*BASIC_MORPHOLOGY\* . (Asterisks are a part of the alias and aren't special symbols.) The command line then becomes simpler

.. code-block:: bash
nyxus --features=\ *BASIC_MORPHOLOGY* AREA_PIXELS_COUNT,AREA_UM2,CENTROID_X,CENTROID_Y,BBOX_YMIN,BBOX_XMIN,BBOX_HEIGHT,BBOX_WIDTH*\ * --intDir=/home/ec2-user/work/datasetXYZ/int --segDir=/home/ec2-user/work/dataXYZ/seg --outDir=/home/ec2-user/work/datasetXYZ --filePattern=.* --csvFile=separatecsv
nyxus --features=\ *BASIC_MORPHOLOGY* AREA_PIXELS_COUNT,AREA_UM2,CENTROID_X,CENTROID_Y,BBOX_YMIN,BBOX_XMIN,BBOX_HEIGHT,BBOX_WIDTH*\ * --intDir=/home/ec2-user/work/datasetXYZ/int --segDir=/home/ec2-user/work/dataXYZ/seg --outDir=/home/ec2-user/work/datasetXYZ --filePattern=.* --outputType=separatecsv
Step 1 - giving an alias to a multiple features
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Loading

0 comments on commit a5bba48

Please sign in to comment.