Distributed by Chr (sh)
Last updated
Was this helpful?
Was this helpful?
{
"runSpec": {
...
"systemRequirements": {
"main": {
"instanceType": "mem1_ssd1_x4"
},
"count_func": {
"instanceType": "mem1_ssd1_x2"
},
"sum_reads": {
"instanceType": "mem1_ssd1_x4"
}
},
...
}
}dx download "${mappings_sorted_bam}"
chromosomes=$( \
samtools view -H "${mappings_sorted_bam_name}" \
| grep "\@SQ" \
| awk -F '\t' '{print $2}' \
| awk -F ':' '{if ($2 ~ /^chr[0-9XYM]+$|^[0-9XYM]/) {print $2}}')if [ -z "${mappings_sorted_bai}" ]; then
samtools index "${mappings_sorted_bam_name}"
else
dx download "${mappings_sorted_bai}" -o "${mappings_sorted_bam_name}.bai"
fi
count_jobs=()
for chr in $chromosomes; do
seg_name="${mappings_sorted_bam_prefix}_${chr}.bam"
samtools view -b "${mappings_sorted_bam_name}" "${chr}" > "${seg_name}"
bam_seg_file=$(dx upload "${seg_name}" --brief)
count_jobs+=($(dx-jobutil-new-job \
-isegmentedbam_file="${bam_seg_file}" \
-ichr="${chr}" \
count_func))
donefor job in "${count_jobs[@]}"; do
readfiles+=("-ireadfiles=${job}:counts_txt")
done
sum_reads_job=$(
dx-jobutil-new-job \
"${readfiles[@]}" \
-ifilename="${mappings_sorted_bam_prefix}" \
sum_reads
)count_func () {
echo "Value of segmentedbam_file: '${segmentedbam_file}'"
echo "Chromosome being counted '${chr}'"
dx download "${segmentedbam_file}"
readcount=$(samtools view -c "${segmentedbam_file_name}")
printf "${chr}:\t%s\n" "${readcount}" > "${segmentedbam_file_prefix}.txt"
readcount_file=$(dx upload "${segmentedbam_file_prefix}.txt" --brief)
dx-jobutil-add-output counts_txt "${readcount_file}" --class=file
}sum_reads () {
set -e -x -o pipefail
printf "Value of read file array %s" "${readfiles[@]}"
echo "Filename: ${filename}"
echo "Summing values in files and creating output read file"
for read_f in "${readfiles[@]}"; do
echo "${read_f}"
dx download "${read_f}" -o - >> chromosome_result.txt
done
count_file="${filename}_chromosome_count.txt"
total=$(awk '{s+=$2} END {print s}' chromosome_result.txt)
echo "Total reads: ${total}" >> "${count_file}"
readfile_name=$(dx upload "${count_file}" --brief)
dx-jobutil-add-output read_sum_file "${readfile_name}" --class=file
}