Mercurial > repos > nikos > bigwig_to_wig
comparison bigwig_to_wig.sh @ 16:b8e3e97e9658 draft
Uploaded
| author | nikos |
|---|---|
| date | Fri, 01 Aug 2014 08:10:27 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 15:52e9cfd72b21 | 16:b8e3e97e9658 |
|---|---|
| 1 #!/bin/bash | |
| 2 #$Id: bigwig2wig 23 2014-01-28 12:09:22Z jens $ | |
| 3 | |
| 4 #SCRIPT CONVERTS BIGWIG FILE TO FIXED-STEP WIGGLE FORMAT FILE | |
| 5 #RESOLUTION IS CONTROLLED THROUGH THE BIN SIZE | |
| 6 | |
| 7 #default bin_size | |
| 8 bin_size=500 | |
| 9 mylab="wiggle file" | |
| 10 | |
| 11 #parse input | |
| 12 while getopts hf:b:l: myarg | |
| 13 do case "$myarg" in | |
| 14 h) echo "Usage: bigwig_correlation -f <bigwig_file> -b <bin_size>" | |
| 15 echo "Ex: bigwig_correlation -f <MYFILE.bw> -b 600" | |
| 16 exit ;; | |
| 17 f) bigwig_file="$OPTARG" ;; #required | |
| 18 l) mylab="$OPTARG" ;; #optional | |
| 19 b) bin_size="$OPTARG" ;; #optional | |
| 20 [?]) echo "Usage: bigwig_correlation -f <MYFILE.bw> -b <bin_size>" | |
| 21 exit 1 ;; | |
| 22 esac | |
| 23 done | |
| 24 | |
| 25 ################################################### | |
| 26 ###VALIDATE INPUT | |
| 27 ################################################### | |
| 28 | |
| 29 #make tmp-filename to hold chromosome info | |
| 30 org_assembly_file=`mktemp -u` | |
| 31 bigWigInfo -chroms $bigwig_file | perl -ne "/^\tchr/ && print" | perl -pe "s/ +/\t/g" | cut -f2,4 > $org_assembly_file | |
| 32 | |
| 33 #check bin_size & define step_size | |
| 34 bin_size_mod=`expr $bin_size % 2` #determine modulus | |
| 35 if [ $bin_size_mod -ne 0 ]; then | |
| 36 echo "Chosen bin_size must be an even positive number, added +1 to bin_size" | |
| 37 bin_size=$(($bin_size + 1)) | |
| 38 fi | |
| 39 | |
| 40 if [ $bin_size -lt 100 ]; then | |
| 41 echo "ERROR: Chosen bin_size must be a positive number >=100" | |
| 42 exit 1 | |
| 43 fi | |
| 44 #set stetp size equal to bin size i.e. non-overlapping intervals | |
| 45 step_size=$bin_size | |
| 46 | |
| 47 ################################################### | |
| 48 ###EXTRACT DENSITIES FROM NORMALIZED BIGWIG FILES | |
| 49 ################################################### | |
| 50 | |
| 51 | |
| 52 #make track definition line | |
| 53 echo "track type=wiggle_0 name=$mylab description=\"fixedStep format\"" | |
| 54 | |
| 55 #for each chromsome | |
| 56 cat $org_assembly_file | while read line; do | |
| 57 | |
| 58 cur_chr=`echo $line | cut --delimiter=" " -f1` | |
| 59 cur_length=`echo $line | cut --delimiter=" " -f2` | |
| 60 | |
| 61 n_bins=`echo "scale=0; (${cur_length}-${step_size})/${bin_size}" | bc` | |
| 62 | |
| 63 start=1 | |
| 64 stop=`echo "$n_bins * $bin_size" | bc` | |
| 65 | |
| 66 #write header line for each chromosome | |
| 67 echo "fixedStep chrom=$cur_chr start=$start step=$step_size span=$step_size" | |
| 68 | |
| 69 #get densities along chr in n_bins with chosen bin_size and step_size (giving overlap in bins) | |
| 70 nice bigWigSummary $bigwig_file $cur_chr $start $stop $n_bins | perl -pe 's/\t/\n/g' | perl -pe "s/n\/a/0/" | |
| 71 #gives warning if no data in/for current chromosome | |
| 72 | |
| 73 done | |
| 74 | |
| 75 #rm tmp | |
| 76 rm $org_assembly_file | |
| 77 |
