aboutsummaryrefslogtreecommitdiff
path: root/utils/processTobiiRecords.sh
diff options
context:
space:
mode:
Diffstat (limited to 'utils/processTobiiRecords.sh')
-rw-r--r--utils/processTobiiRecords.sh146
1 files changed, 71 insertions, 75 deletions
diff --git a/utils/processTobiiRecords.sh b/utils/processTobiiRecords.sh
index 0cc3eb4..aca1543 100644
--- a/utils/processTobiiRecords.sh
+++ b/utils/processTobiiRecords.sh
@@ -1,31 +1,39 @@
#! /bin/bash
#
-# Load json ArGaze context file ($1) then, look for all Tobii record segments into input folder ($2).
+# Look for all Tobii record segments into input folder ($1) to execute an ArGaze context file ($2) on each.
#
-# For each Tobii record segment found:
-# - context "segment" field is modified to bind on it,
-# - context "pipeline" field is modified to bind on a temporary patched pipeline \
-# resulting from the merging of the given pipeline and an optionnal "patch.json" file in Tobii record segment,
-# - then, ArGaze executes the modified context from output folder ($3) to export all records into it,
-# - finally, context is resetted and temporary patched pipeline is removed.
+# For each Tobii record segment found a temporary context and pipeline files are created:
+# - temporary context "segment" field is modified to bind on it,
+# - temporary context "pipeline" field is modified to bind on a temporary pipeline file,
+# - temporary pipeline "projection_cache" field is added to create or bind a "layers_projection.csv" file in segment folder,
+# — if a "patch.json" file exist in the Tobii record segment, it merged to the temporary pipeline file,
+# - then, ArGaze executes the temporary context from output folder ($3) to export all records into it,
+# - finally, temporary context and pipeline files are deleted.
#
# Arguments:
-# $1: ArGaze context file
-# $2: folder from where to look for Tobii records
-# $3: folder where to export ArGaze processing outputs
+# $1: folder from where to look for Tobii records
+# $2: ArGaze context file
+# $3: folder where to export processing outputs
+# $4+: any other arguments are passed to "argaze load" command
#######################################
-# Check required arguments
-if [ "$#" -ne 3 ]; then
- echo "!!! Incorrect number of arguments"
- exit 1
-fi
+# Parse mandatory arguments
+input_folder="$(realpath "$1")"
+context_file="$(realpath "$2")"
+output_folder="$(realpath "$3")"
+
+# Parse any other arguments to pass them to "argaze load" command
+if [ $# -ge 4 ]; then
-context_file=$1
-input_folder=$2
-output_folder=$3
+ argaze_args=$4
-# Check requirements:
+ while shift && [ -n "$4" ]; do
+ argaze_args="${argaze_args},$4"
+ done
+
+fi
+
+# Check requirements
if brew ls --versions jq > /dev/null; then
: # jq installed
else
@@ -33,32 +41,7 @@ else
brew install jq
fi
-# Check context
ctx_folder="$(dirname "$context_file")"
-ctx_class=$(jq "keys[0]" $context_file)
-ctx_name=$(jq .$ctx_class.name $context_file)
-ctx_segment=$(jq .$ctx_class.segment $context_file)
-pipeline_file=$(jq -r .$ctx_class.pipeline $context_file)
-
-echo "*** Loading $ctx_class context:"
-echo "- Name: $ctx_name"
-
-# Move to context folder
-cd $ctx_folder
-
-# Check pipeline
-if [ -f "$pipeline_file" ]; then
-
- ppl_class=$(jq "keys[0]" $pipeline_file)
- ppl_name=$(jq .$ppl_class.name $pipeline_file)
- echo "- Pipeline: $ppl_name"
-
-else
-
- echo "!!! Missing $pipeline_file pipeline file"
- exit 1
-
-fi
#######################################
# Process Tobii segment folder
@@ -78,55 +61,68 @@ function process_segment() {
echo " - Lenght: $seg_length"
echo " - Calibration: $ca_state"
+ # Move to context folder
+ cd $ctx_folder
+
+ # Create temporary context file
+ temp_context_file=".$rec_id-$seg_id.context.json"
+ yes | cp -f $context_file $temp_context_file
+ ctx_class=$(jq "keys[0]" $temp_context_file)
+ ctx_name=$(jq .$ctx_class.name $temp_context_file)
+ ctx_pipeline=$(jq -r .$ctx_class.pipeline $temp_context_file)
+
+ echo "- Context $(basename $temp_context_file):"
+ echo " - Name: $ctx_name"
+
+ # Create temporary pipeline file
+ temp_pipeline_file=".$rec_id-$seg_id.pipeline.json"
+ yes | cp -f $ctx_pipeline $temp_pipeline_file
+ ppl_class=$(jq "keys[0]" $temp_pipeline_file)
+ ppl_name=$(jq .$ppl_class.name $temp_pipeline_file)
+
+ echo "- Pipeline: $(basename $temp_pipeline_file)"
+ echo " - Name: $ppl_name"
+
+ # Modify temporary context segment
+ echo "$(jq --tab ".$ctx_class.segment = \"$seg_folder\"" $temp_context_file)" > "$ctx_folder/$temp_context_file"
+
+ # Modify temporary context pipeline
+ echo "$(jq --tab ".$ctx_class.pipeline = \"$temp_pipeline_file\"" $temp_context_file)" > "$ctx_folder/$temp_context_file"
+
+ # Modify temporary pipeline projection_cache
+ echo "$(jq --tab ".$ppl_class.projection_cache = \"$seg_folder/layers_projection.csv\"" $temp_pipeline_file)" > "$ctx_folder/$temp_pipeline_file"
+
# Check patch
patch_file="$seg_folder/patch.json"
if [ -f "$patch_file" ]; then
- echo "+ Patch:"
+ echo " + Patch:"
echo "$(jq . $patch_file)"
- # Edit temporary patched pipeline
- temp_file=".$rec_id-$seg_id.patch.json"
- echo "$(jq --tab -s ".[0] * .[1]" $pipeline_file $patch_file)" > "$ctx_folder/$temp_file"
-
- # Modify context pipeline
- echo "$(jq --tab ".$ctx_class.pipeline = \"$temp_file\"" $context_file)" > $context_file
-
- echo "*** $ctx_folder/$temp_file file created"
+ # Merge patch with temporary pipeline
+ echo "$(jq --tab -s ".[0] * .[1]" $temp_pipeline_file $patch_file)" > "$ctx_folder/$temp_pipeline_file"
fi
- # Modify context segment
- echo "$(jq --tab ".$ctx_class.segment = \"$seg_folder\"" $context_file)" > $context_file
-
- # Create segment output folder then, move into
+ # Create segment output folder
seg_output=$output_folder/$rec_id/segments/$seg_id
mkdir -p $seg_output
cd $seg_output
- # Launch argaze with modified context
- echo "*** ArGaze processing starts"
+ # Launch modified context with argaze load command
+ echo "*** ArGaze starts context"
- python -m argaze load $context_file
+ python -m argaze load "$ctx_folder/$temp_context_file" $argaze_args
- echo "*** ArGaze processing ends"
+ echo "*** ArGaze ends context"
# Move back to context folder
cd $ctx_folder
- # Reset context segment
- echo "$(jq --tab ".$ctx_class.segment = $ctx_segment" $context_file)" > $context_file
+ # Delete temporary context file
+ rm "$ctx_folder/$temp_context_file"
- # Check temporary pipeline
- if [ -f "$temp_file" ]; then
-
- # Delete temporary patched pipeline
- rm "$ctx_folder/$temp_file"
-
- # Reset context pipeline
- echo "$(jq --tab ".$ctx_class.pipeline = \"$pipeline_file\"" $context_file)" > $context_file
-
- echo "*** $ctx_folder/$temp_file file removed"
- fi
+ # Delete temporary pipeline file
+ rm "$ctx_folder/$temp_pipeline_file"
}
#######################################
@@ -154,7 +150,7 @@ function process_record() {
done
}
-echo "*** Looking for Tobii records into $2 folder"
+echo "*** Looking for Tobii records into $1 folder"
# Check if the path is directly a path to a record segment
if [ -f "$input_folder/livedata.json.gz" ]; then