Skip to content

Commit

Permalink
Merge branch 'master' of github.com:saalfeldlab/hot-knife
Browse files Browse the repository at this point in the history
  • Loading branch information
StephanPreibisch committed Apr 11, 2024
2 parents 5997e3f + 95e4094 commit 7e3504a
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ source "${SCRIPT_DIR}/00_config.sh" "tab_not_applicable"

# This runs quickly! A 1 node job for 10 slabs in wafer 53 took 4 minutes to finish.
# One slab per slot
N_NODES=1

N_NODES=2
SLAB_LIST="
s070_m104 s071_m331 s072_m150 s073_m079 s074_m265 s075_m119 s076_m033 s077_m286 s078_m279 s079_m214
s080_m174 s081_m049 s082_m190 s083_m029 s084_m069 s085_m031 s086_m181 s087_m155 s088_m291 s089_m045
"
N5_GROUP_OUTPUT="${N5_SURFACE_ROOT}/pass00"

# Face dataset order is important.
unset FACE_DATASET_ARGS
for SLAB in s070_m104 s071_m331 s072_m150 s073_m079 s074_m265 s075_m119 s076_m033 s077_m286 s078_m279 s079_m214; do
for SLAB in ${SLAB_LIST}; do
FACE_DATASET_ARGS="${FACE_DATASET_ARGS} -d /flat/${SLAB}/top22_icn3/face -d /flat/${SLAB}/bot22_icn3/face"
done

Expand Down
26 changes: 19 additions & 7 deletions run_scripts/multi-sem/wafer-53/74_spark_surface_align_pass_n.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,22 @@

set -e

# Run times for wafer 53 slabs:
# TBD
# Run times for ten wafer 53 slabs (s070 - s079):
# 1|2|3) N_NODES=60
# pass01: 7 minutes, pass02: 6 minutes, pass03: 12 minutes
# 4|5|6|7) N_NODES=150
# pass04: 20 minutes, pass05: 49 minutes, pass06: 42 minutes, pass07: 45 minutes
# 8|9|10) N_NODES=150
# pass08: 36 minutes, pass09: 42 minutes, pass10: 48 minutes
# 11|12) N_NODES=210
# pass11: 47 minutes (many h6 nodes), pass12: 83 minutes (many h6 nodes)

# Run times for twenty wafer 53 slabs (s070 - s089):
# 1|2|3) N_NODES=60
# pass01: 12 minutes, pass02: 10 minutes, pass03: 19 minutes
# 4|5|6) N_NODES=150
# pass04: 38 minutes, pass05: 59 minutes, pass06: 58 minutes

# NOTE: key is to get pass12 run under 4 hours

if (( $# < 1 )); then
echo "USAGE $0 <pass (1-12)> [number of nodes (overrides default)]"
Expand Down Expand Up @@ -47,10 +59,10 @@ fi

# setup pass specific run class
case "${PASS}" in
1|2|3) N_NODES=${4:-60}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignSIFTAverage" ;; # wafer 52: 20 node default
4|5|6|7) N_NODES=${4:-150}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignSIFTAverage" ;; # wafer 52: 50 node default
8|9|10) N_NODES=${4:-150}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignFlow" ;; # wafer 52: 50 node default
11|12) N_NODES=${4:-210}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignFlow" ;; # wafer 52: 70 node default
1|2|3) N_NODES=${2:-60}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignSIFTAverage" ;; # wafer 52: 20 node default
4|5|6|7) N_NODES=${2:-150}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignSIFTAverage" ;; # wafer 52: 50 node default
8|9|10) N_NODES=${2:-150}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignFlow" ;; # wafer 52: 50 node default
11|12) N_NODES=${2:-210}; CLASS="org.janelia.saalfeldlab.hotknife.SparkPairAlignFlow" ;; # wafer 52: 70 node default
*)
echo "ERROR: 'pass parameter ${PASS} must be between 1 and 12'"
exit 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ if (( $# < 2 )); then
USAGE $0 <zBatch> <number of nodes> [hard runtime minutes]
Example:
$0 1:40 120
$0 1:1 272
Notes:
wafer 53 rate is roughly ? blocks per node per hour
1:40 w/140 nodes takes ? hours
export of 10 wafer 53 slabs using max 272 11-slot worker nodes took 26 minutes
export of 20 wafer 53 slabs using max 272 11-slot worker nodes took 46 minutes
hard runtime of < 60 minutes allows use of as many slots as are available,
otherwise there is a 3000-slot limit
"""
Expand All @@ -25,14 +26,21 @@ fi

Z_BATCH="${1}"
N_NODES="${2}"
export RUNTIME=${3:-4320} # default is minutes in 3 days
export RUNTIME=${3:-240:59} # default is 10+ days

# --------------------------------------------------------------------
# setup export parameters

N5_PATH="/nrs/hess/data/hess_wafer_53/export/hess_wafer_53d.n5"
TRANSFORM_GROUP="/surface-align/run_20240409_135204/pass12"
DATA_SET_OUTPUT="/wafer-53-align/run_20240409_135204/pass12/s0"

#TRANSFORM_GROUP="/surface-align/run_20240409_135204/pass05"
#DATA_SET_OUTPUT="/wafer-53-align/run_20240409_135204/pass05/s0"

#TRANSFORM_GROUP="/surface-align/run_20240409_135204/pass12"
#DATA_SET_OUTPUT="/wafer-53-align/run_20240409_135204/pass12/s0"

TRANSFORM_GROUP="/surface-align/run_20240410_173647/pass06"
DATA_SET_OUTPUT="/wafer-53-align/run_20240410_173647/pass06/s0"

ARGV="\
--n5PathInput ${N5_PATH} \
Expand All @@ -46,6 +54,16 @@ ARGV="\
-i /flat/s077_m286/raw -t 20 -b -21 \
-i /flat/s078_m279/raw -t 20 -b -21 \
-i /flat/s079_m214/raw -t 20 -b -21 \
-i /flat/s080_m174/raw -t 20 -b -21 \
-i /flat/s081_m049/raw -t 20 -b -21 \
-i /flat/s082_m190/raw -t 20 -b -21 \
-i /flat/s083_m029/raw -t 20 -b -21 \
-i /flat/s084_m069/raw -t 20 -b -21 \
-i /flat/s085_m031/raw -t 20 -b -21 \
-i /flat/s086_m181/raw -t 20 -b -21 \
-i /flat/s087_m155/raw -t 20 -b -21 \
-i /flat/s088_m291/raw -t 20 -b -21 \
-i /flat/s089_m045/raw -t 20 -b -21 \
--n5TransformGroup ${TRANSFORM_GROUP} \
--n5PathOutput ${N5_PATH} \
--n5DatasetOutput ${DATA_SET_OUTPUT} \
Expand Down Expand Up @@ -84,4 +102,4 @@ ${ARGV}
# shellcheck disable=SC2086
${FLINTSTONE} ${N_NODES} "${HOT_KNIFE_JAR}" ${CLASS} ${ARGV}

} 2>&1 | tee -a "${LOG_FILE}"
} 2>&1 | tee -a "${LOG_FILE}"
97 changes: 97 additions & 0 deletions run_scripts/multi-sem/wafer-53/92_adjust_layer_intensity.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#!/bin/bash

set -e

ABSOLUTE_SCRIPT=`readlink -m $0`
SCRIPT_DIR=`dirname ${ABSOLUTE_SCRIPT}`
source ${SCRIPT_DIR}/00_config.sh

umask 0002

if (( $# < 1 )); then
echo """
USAGE: $0 <number of nodes>
"""
exit 1
fi

N_NODES="${1}" # normalizing a 10-slab volume with 180 11-slot workers took 2 hours and 15 minutes
NORMALIZE_METHOD="LOCAL_CONTRAST"

SOURCE_DATASET="/wafer-53-align/run_20240410_173647/pass06"

#-----------------------------------------------------------
NORMALIZED_LAYER_SUFFIX="_norm-layer"
NORMALIZED_LOCAL_SUFFIX="_norm-local"
if [[ "${NORMALIZE_METHOD}" == "LAYER_INTENSITY" ]]; then
NORMALIZED_SUFFIX="${NORMALIZED_LAYER_SUFFIX}"
elif [[ "${NORMALIZE_METHOD}" == "LOCAL_CONTRAST" ]]; then
NORMALIZED_SUFFIX="${NORMALIZED_LOCAL_SUFFIX}"
else
echo "ERROR: unknown NORMALIZE_METHOD of ${NORMALIZE_METHOD}"
exit 1
fi

NORMALIZED_SUFFIX="${NORMALIZED_SUFFIX}_inverted"

SOURCE_PATH="${N5_SAMPLE_PATH}${SOURCE_DATASET}"

if [[ ! -d ${SOURCE_PATH} ]]; then
echo "ERROR: ${SOURCE_PATH} not found"
exit 1
fi

#-----------------------------------------------------------
# Spark executor setup with 11 cores per worker ...

export N_EXECUTORS_PER_NODE=2 # 6
export N_CORES_PER_EXECUTOR=5 # 5
# To distribute work evenly, recommended number of tasks/partitions is 3 times the number of cores.
#N_TASKS_PER_EXECUTOR_CORE=3
export N_OVERHEAD_CORES_PER_WORKER=1
#N_CORES_PER_WORKER=$(( (N_EXECUTORS_PER_NODE * N_CORES_PER_EXECUTOR) + N_OVERHEAD_CORES_PER_WORKER ))
export N_CORES_DRIVER=1

#-----------------------------------------------------------
RUN_TIME=`date +"%Y%m%d_%H%M%S"`
JAR="/groups/flyem/data/render/lib/hot-knife-0.0.5-SNAPSHOT.jar"
CLASS="org.janelia.saalfeldlab.hotknife.SparkNormalizeN5"

# /nrs/hess/render/export/hess.n5/render/wafer_52_cut_00030_to_00039/slab_045_all_align_t2_ic___20230123_162917

ARGV="\
--n5PathInput=${N5_SAMPLE_PATH} \
--n5DatasetInput=${SOURCE_DATASET} \
--normalizeMethod=${NORMALIZE_METHOD} \
--factors=2,2,1 \
--invert"

NORMALIZED_DATASET="${SOURCE_DATASET}${NORMALIZED_SUFFIX}"
NORMALIZED_DATASET_DIR="${N5_SAMPLE_PATH}${NORMALIZED_DATASET}"

if [[ ! -d ${NORMALIZED_DATASET_DIR} ]]; then
mkdir -p "${NORMALIZED_DATASET_DIR}"
if [[ -f ${SOURCE_PATH}/attributes.json ]]; then
cp "${SOURCE_PATH}"/attributes.json "${NORMALIZED_DATASET_DIR}"
echo "copied ${SOURCE_PATH}/attributes.json to ${N5_SAMPLE_PATH}${NORMALIZED_DATASET}"
fi
fi

LOG_DIR="logs"
LOG_FILE="${LOG_DIR}/norm.${RUN_TIME}.out"

mkdir -p ${LOG_DIR}

# use shell group to tee all output to log file
{

echo "Running with arguments:
${ARGV}
"
/groups/flyTEM/flyTEM/render/spark/spark-janelia/flintstone.sh $N_NODES $JAR $CLASS $ARGV

echo "normalized n5 volume is:
-i ${N5_SAMPLE_PATH} -d ${NORMALIZED_DATASET}
"
} 2>&1 | tee -a ${LOG_FILE}

6 changes: 3 additions & 3 deletions run_scripts/multi-sem/wafer-53/99_spark_downsample_final.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ ABSOLUTE_SCRIPT=$(readlink -m "${0}")
SCRIPT_DIR=$(dirname "${ABSOLUTE_SCRIPT}")
source "${SCRIPT_DIR}/00_config.sh" "ALL"

#export RUNTIME="3:59"

INPUT_DATASET_ROOT="/wafer-52-align/run_20230404_105038/pass12"
#INPUT_DATASET_ROOT="/wafer-53-align/run_20240409_135204/pass05"
#INPUT_DATASET_ROOT="/wafer-53-align/run_20240409_135204/pass12"
INPUT_DATASET_ROOT="/wafer-53-align/run_20240410_173647/pass06"

OUTPUT_DATASET_PATHS="${INPUT_DATASET_ROOT}/s1"
FACTORS="2,2,1"
Expand Down

0 comments on commit 7e3504a

Please sign in to comment.