3 # Extract v,f,k data. Ignore index, temperature, etc.
5 set -e # exit immediately on failed command
6 set -o pipefail # pipes fail if any stage fails
8 BASE_DATA_DIR="$HOME/rsrch/data"
9 SCALED_DATA_DIR="scaled_unfold"
10 CALIBRATION_DATA_DIR="calibration"
12 EXTRACT_UNFOLDS="$HOME/src/lab/analysis/sawmodel/extract_unfolds.py"
13 SCALE_UNFOLD="$HOME/src/lab/analysis/sawtooth_worming-0.1/scale_unfold.py"
16 #DATA_DAYS[9]=20090128 # No good sawteeth
17 DATA_DAYS[10]=20090203
18 #DATA_DAYS[11]=20090211 # No good sawteeth
19 DATA_DAYS[12]=20090212
20 DATA_DAYS[13]=20090214
21 DATA_DAYS[14]=20090219
22 DATA_DAYS[15]=20090222
24 echo -e "#Unfolding force (pN)\tUnfolding rate (nm/s)\tSpring constant (pN/nm)\tLoading rate (pN/s)\tDatafile"
30 if [ -z "$VALUE" ]; then
33 echo "$NAME not defined. File format must have changed."
39 function FieldIndex ()
43 FIELD_INDEX=`echo "$LINE" | sed 's/\t/\n/g' | grep -n "$TITLE_REGEXP" | cut -d: -f1`
46 for DAY in ${DATA_DAYS[*]}
48 echo "---Processing day $DAY---" >&2
51 LAST_DATAFILE="" # Caching for efficiency
52 while read UNFOLD_LINE
54 echo "Parsing '$UNFOLD_LINE'" >&2
55 if [ "${UNFOLD_LINE:0:1}" == "#" ] ; then
56 # reading the header line
57 FieldIndex "$UNFOLD_LINE" "Datafile"
58 DATAFILE_FIELD="$FIELD_INDEX"
59 FieldIndex "$UNFOLD_LINE" "Force (pN)"
60 FORCE_FIELD="$FIELD_INDEX"
61 FieldIndex "$UNFOLD_LINE" "Stiffness (pN/nm)"
62 STIFFNESS_FIELD="$FIELD_INDEX"
63 NotEmpty 'Datafile field' "$DATAFILE_FIELD"
64 NotEmpty 'Force field' "$FORCE_FIELD"
65 NotEmpty 'Stiffness field' "$STIFFNESS_FIELD"
68 NotEmpty "$DAY extraction header" "$DATAFILE_FIELD"
69 DATAFILE=`echo "$UNFOLD_LINE" | cut -f $DATAFILE_FIELD`
70 NotEmpty 'Datafile' "$DATAFILE"
71 DATAFILE="$BASE_DATA_DIR/$SCALED_DATA_DIR/$DATAFILE"
72 UNFOLDING_FORCE=`echo "$UNFOLD_LINE" | cut -f $FORCE_FIELD`
73 NotEmpty 'Unfolding force' "$UNFOLDING_FORCE"
74 STIFFNESS=`echo "$UNFOLD_LINE" | cut -f $STIFFNESS_FIELD`
75 NotEmpty 'Stiffness' "$STIFFNESS"
76 if [ "$DATAFILE" != "$LAST_DATAFILE" ]; then
77 UNFOLDING_RATE=`sed -n 's/^Unfold rate (nm\/s):\t//p' "${DATAFILE}_param"`
78 NotEmpty 'Unfolding rate' "$UNFOLDING_RATE"
79 SPRING_CONSTANT_STRING=`$SCALE_UNFOLD --print-k "$DATAFILE"`
80 NotEmpty 'Spring constant string' "$SPRING_CONSTANT_STRING"
81 SPRING_CONSTANT_N_PER_M=`echo "$SPRING_CONSTANT_STRING" | sed -n 's/ N\/m$//p'`
82 NotEmpty 'Spring constant (N/m)' "$SPRING_CONSTANT_N_PER_M"
83 SPRING_CONSTANT=`echo "print ($SPRING_CONSTANT_N_PER_M * 1e3)" | python`
84 NotEmpty 'Spring constant (pN/nm)' "$SPRING_CONSTANT"
86 LOADING_RATE=`python -c "print $STIFFNESS * $UNFOLDING_RATE"` # pN/s
87 echo -e "$UNFOLDING_FORCE\t$UNFOLDING_RATE\t$SPRING_CONSTANT\t$LOADING_RATE\t$DATAFILE"
88 LAST_DATAFILE="$DATAFILE"
89 done < <(cd $BASE_DATA_DIR/$SCALED_DATA_DIR/ && $EXTRACT_UNFOLDS ${DAY}_select_fit.xml)