-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsplitcode_irCLIP.sh
More file actions
77 lines (63 loc) · 2.43 KB
/
Copy pathsplitcode_irCLIP.sh
File metadata and controls
77 lines (63 loc) · 2.43 KB
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
#!/usr/bin/env bash
#SBATCH -p cpu
#SBATCH -t 1-00:00:00
#SBATCH --mem=32G
#SBATCH --cpus-per-task=24
#SBATCH -o logs/cutadapt_%A_%a.out
#SBATCH -e logs/cutadapt_%A_%a.err
set -euo pipefail
# --- paths ---
CFG="../config.txt" # splitcode config (has @extract for RX etc.)
IN_DIR="./" # directory containing SRR*.trimmed.fq.gz
OUT_DIR="../cleaned" # final FASTQs after trimming last 3 nt
LOG_DIR="../logs"
TMP_DIR="../tmp_splitcode"
mkdir -p "$OUT_DIR" "$LOG_DIR" "$TMP_DIR"
ASSIGN_LOG="$LOG_DIR/splitcode_assigned.csv"
: > "$ASSIGN_LOG"
echo "sample,outfile,assigned_percent" >> "$ASSIGN_LOG"
prepend_outfile_to_mapping() {
local outfile="$1" mapping_in="$2" mapping_out="$3"
{ printf "outfile: %s\n" "$outfile"; cat "$mapping_in"; } > "$mapping_out"
}
# NOTE: match ONLY adapter-trimmed inputs; avoid any *untrimmed*.fq.gz files.
for gz in "$IN_DIR"/SRR*.trimmed.fq.gz; do
[[ -e "$gz" ]] || { echo "No SRR*.trimmed.fq.gz files found in $IN_DIR"; break; }
base="$(basename "$gz" .trimmed.fq.gz)" # e.g., SRR29661270
tmp_fastq="$TMP_DIR/${base}.splitcode.fastq" # pass 1 output (plain FASTQ)
out_fastq="$OUT_DIR/${base}_cleaned.fastq" # pass 2 output (plain; gzip after)
out_fastq_gz="${out_fastq}.gz"
tmp_stderr="$(mktemp)"
tmp_map="$(mktemp)"
per_file_map="${OUT_DIR}/${base}_mapping.txt"
echo "[INFO] Processing $gz → $out_fastq_gz (splitcode extract, then trim last 3 nt)"
# PASS 1: splitcode extraction only (no trimming).
splitcode \
-c "$CFG" \
-N 1 \
--x-names \
--assign \
--mapping="$tmp_map" \
--no-outb \
-o "$tmp_fastq" \
"$gz" \
2> "$tmp_stderr"
# PASS 2: trim last 3 nt with splitcode CLI (equivalent to header '@trim-3 3')
splitcode \
--trim-3 3 \
-N 1 \
-o "$out_fastq" \
--keep-com \
"$tmp_fastq" \
1> /dev/null
# Append Assigned% from PASS 1
assigned=$(grep -i -E 'assigned' "$tmp_stderr" | grep -Eo '[0-9]+(\.[0-9]+)?%' || true)
[[ -n "${assigned:-}" ]] || assigned="NA"
echo "${base},${base}_cleaned.fastq.gz,${assigned}" >> "$ASSIGN_LOG"
# Save annotated mapping with final outfile name
prepend_outfile_to_mapping "${base}_cleaned.fastq.gz" "$tmp_map" "$per_file_map"
# Compress final FASTQ; use Slurm CPU allocation if present
pigz -p "${SLURM_CPUS_PER_TASK:-4}" -f "$out_fastq"
rm -f "$tmp_stderr" "$tmp_map" "$tmp_fastq"
done
echo "[INFO] Done. Assigned% summary at: $ASSIGN_LOG"