Mercurial > repos > lldelisle > revertr2orientationinbam
changeset 0:05aa21d39189 draft
planemo upload for repository https://github.com/lldelisle/tools-lldelisle/tree/master/tools/revertR2orientationInBam commit fe9813fe41ba241b47f7b2b4e4c9672ef35c0b35-dirty
author | lldelisle |
---|---|
date | Wed, 19 Oct 2022 08:50:18 +0000 |
parents | |
children | 21ddefab2e4f |
files | revertR2orientationInBam.sh revertR2orientationInBam.xml test-data/input.sam test-data/output.bam |
diffstat | 4 files changed, 75 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/revertR2orientationInBam.sh Wed Oct 19 08:50:18 2022 +0000 @@ -0,0 +1,28 @@ +#!/bin/bash + +inputBam=$1 +outputBam=$2 + +samtools view -h "$inputBam" | awk -v OFS="\t" '{ + # Process only non header lines + if(!($1~/^@/)){ + # SAM flag is field 2 + n=$2 + # Change only the second in pair flag is 128 + d=128 + q=(n-n%d)/d+(n<0) + if(q%2==1){ + # Evaluate the strand reverse strand flag is 16 + d=16 + q=(n-n%d)/d+(n<0) + if(q%2==1){ + # It is reverse it is now forward + $2-=16 + }else{ + # It is forward it is now reverse + $2+=16 + } + } + } + print +}' | samtools view -b - > "$outputBam" \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/revertR2orientationInBam.xml Wed Oct 19 08:50:18 2022 +0000 @@ -0,0 +1,40 @@ +<tool id="revertR2orientationInBam" name="revertR2orientationInBam" version="0.0.1" profile="16.04"> + <description> Revert the mapped orientation of R2 mates in a bam.</description> + <requirements> + <requirement type="package" version="1.9">samtools</requirement> + </requirements> + <stdio> + <!-- Anything other than zero is an error --> + <exit_code range="1:" /> + <exit_code range=":-1" /> + <!-- In case the return code has not been set propery check stderr too --> + <regex match="Error:" /> + <regex match="Exception:" /> + </stdio> + <command> +<![CDATA[ + bash $__tool_directory__/revertR2orientationInBam.sh $input $output +]]> + </command> + <inputs> + <!-- note unsorted bam includes all derived bam types (inlcuding bam which is sorted) --> + <param name="input" type="data" format="sam,bam" label="Select a sam or bam file."/> + </inputs> + <outputs> + <data format="bam" name="output" label="$input.name with R2 orientation reversed"/> + </outputs> + + <tests> + <test> + <param name="input" value="input.sam"/> + <output name="output" file="output.bam" ftype="bam"/> + </test> + </tests> + <help> +<![CDATA[ + This tool is very useful when you have paired-end stranded RNA-seq. + Using this tool prior to a bedtools genome coverage allow to have strand specific coverage using both mates. + It uses samtools to convert input to sam format and then awk to modify the flag "reverse strand" for the second mate of pairs. +]]> + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/input.sam Wed Oct 19 08:50:18 2022 +0000 @@ -0,0 +1,7 @@ +@HD VN:1.4 SO:coordinate +@SQ SN:chr1 LN:195471971 +1 163 chr1 3151308 255 43M = 3151560 295 GTCCCAAAAAGCAGAGAGAAATATCTCTCTGGGCCTTATAGCA AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE NH:i:1 HI:i:1 AS:i:82 nM:i:1 +1 83 chr1 3151560 255 43M = 3151308 -295 CTGCTGGAAAAACTGTTCGTTTTAGGAAATAAGGGCGAGTGCG EEEEEEAEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEAAAAA NH:i:1 HI:i:1 AS:i:82 nM:i:1 +2 137 chr1 3155261 255 9S20M * 0 0 TGTGGGTTTTACACACGGGAGGAATCGGG AAAAA/EEE/EE6EAEE6EAE6/EEEAEE NH:i:1 HI:i:1 AS:i:19 nM:i:0 +3 99 chr1 3195817 255 43M = 3195911 137 ATCTTACTCTGTTTCACAGATAGGTGCTGAGGTTAAATTTTGC AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE NH:i:1 HI:i:1 AS:i:84 nM:i:0 +3 147 chr1 3195911 255 43M = 3195817 -137 GGTGTAGGTTCTTAGACGCAAGAAATCTCAGGTAGAGTTTGGC EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAAAA NH:i:1 HI:i:1 AS:i:84 nM:i:0