-
Notifications
You must be signed in to change notification settings - Fork 3
/
sort_h2030
executable file
·89 lines (74 loc) · 2.26 KB
/
sort_h2030
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/bash
configfile=server.conf
usage() { echo "Usage: $0 [-c <configfile>] <directories [...]>" 1>&2; exit $1; }
while getopts "c:h" o; do
case "${o}" in
c) configfile=${OPTARG}
if [[ ! -r ${configfile} ]]; then
echo "Cannot read ${configfile}" 1>&2
usage 2
fi
;;
h) usage 0 ;;
*) usage 2 ;;
esac
done
shift $((OPTIND-1))
duplicates=1
. ${configfile}
: ${basedir:=$(pwd)}
: ${download:?}
: ${sampleset:?}
if (( ${#@} < 1)); then
usage 2
fi
rx_runfold='^([[:digit:]]{2}[01][[:digit:]][0-3][[:digit:]])_([[:alnum:]]+)_([[:digit:]]+)_(0+-|[AB])([[:alnum:]]+)' # e.g.: 200430_M01761_0414_000000000-J3JCT or 201023_A00730_0259_BHTVCCDRXX
# ^-[1]: date ^-[2]: instr ^-[3]: run num ^-(prefix)^-[5]: flowcell
success=1
for d in "${@}"; do
if [[ ! -d "${basedir}/${download}/${d}" ]]; then
echo "No ${d}" 1>&2
success=0
continue
fi
csum=( "${basedir}/${download}/${d}/"*.check )
if [[ "${csum[*]}" =~ [\*\[] ]]; then
echo "No successful check sum in ${d}" 1>&2
success=0
continue
fi
# 552 2021-01-25 23:30:27 ./sort_samples_dumb -f sftp-health2030/210122_A00485_0093_BH2FM5DRXY/ -s '_H2FM5DRXY' -b 20210121_fused -o sample-test/
# 613 2021-01-29 16:42:24 ./sort_samples_dumb -f sftp-health2030/210128_A00485_0096_AH27VTDRXY/ -b 20210128_H27VTDRXY -o sample-test/
if [[ ${d} =~ ${rx_runfold} ]]; then
flowcell="${BASH_REMATCH[5]}"
batch="20${BASH_REMATCH[1]}_${flowcell}"
quiet=''
dupes=''
if [[ -r "${sampleset}/samples.${batch}.tsv" ]]; then
quiet='-q'
echo "${batch} : ${d}"
fi
if (( duplicates )); then
dupes='-D'
fi
./sort_samples_dumb ${quiet} ${dupes} -f ${basedir}/${download}/${d} -b "${batch}" -g -o "${sampleset}" ${mode:+-m ${mode}}|| success=0
echo "type: h2030
lab: h2030
libkit: Illumina_COVIDSeq
fused: false
runfolder: ${d%%/}" > ${sampleset}/batch.${batch}.yaml
echo -ne "\e[35;1m"
(gawk '$3!=""{print;l=$3};$3==""{print $0 l;print "Sample "$1"-"$2" is empty">"/dev/stderr"}' ${sampleset}/samples.${batch}.tsv > ${sampleset}/samples.${batch}.tsv.patched) 2>&1
echo -ne "\e[0m"
mv ${sampleset}/samples.${batch}.tsv{.patched,}
else
echo "Can't parse ${d}"
fi
done
if (( success )); then
echo "All ok"
exit 0
else
echo "Some problems"
exit 1
fi