changeset 16:b8e3e97e9658 draft

Uploaded
author nikos
date Fri, 01 Aug 2014 08:10:27 -0400
parents 52e9cfd72b21
children 7e547e104886
files bigwig_to_wig.sh bigwig_to_wig.xml test-data/1.bigwig tool_dependencies.xml
diffstat 4 files changed, 154 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bigwig_to_wig.sh	Fri Aug 01 08:10:27 2014 -0400
@@ -0,0 +1,77 @@
+#!/bin/bash
+#$Id: bigwig2wig 23 2014-01-28 12:09:22Z jens $
+
+#SCRIPT CONVERTS BIGWIG FILE TO FIXED-STEP WIGGLE FORMAT FILE
+#RESOLUTION IS CONTROLLED THROUGH THE BIN SIZE
+
+#default bin_size
+bin_size=500
+mylab="wiggle file"
+
+#parse input
+while getopts hf:b:l: myarg
+do	case "$myarg" in
+	h)	echo "Usage: bigwig_correlation -f <bigwig_file> -b <bin_size>"
+	        echo "Ex: bigwig_correlation -f <MYFILE.bw> -b 600"
+		exit ;;
+	f)	bigwig_file="$OPTARG" ;; #required
+	l)	mylab="$OPTARG" ;; #optional 
+	b)	bin_size="$OPTARG" ;; #optional
+	[?])	echo "Usage: bigwig_correlation -f <MYFILE.bw> -b <bin_size>"
+		exit 1 ;;
+	esac
+done
+
+###################################################
+###VALIDATE INPUT
+###################################################
+
+#make tmp-filename to hold chromosome info
+org_assembly_file=`mktemp -u`
+bigWigInfo -chroms $bigwig_file | perl -ne "/^\tchr/ && print" | perl -pe "s/ +/\t/g" | cut -f2,4 > $org_assembly_file
+
+#check bin_size & define step_size
+bin_size_mod=`expr $bin_size % 2`  #determine modulus
+if [ $bin_size_mod -ne 0 ]; then
+  echo "Chosen bin_size must be an even positive number, added +1 to bin_size"
+  bin_size=$(($bin_size + 1))
+fi
+
+if [ $bin_size -lt 100 ]; then
+  echo "ERROR: Chosen bin_size must be a positive number >=100"
+  exit 1
+fi
+#set stetp size equal to bin size i.e. non-overlapping intervals
+step_size=$bin_size
+
+###################################################
+###EXTRACT DENSITIES FROM NORMALIZED BIGWIG FILES
+###################################################
+
+
+#make track definition line
+echo "track type=wiggle_0 name=$mylab description=\"fixedStep format\"" 
+
+#for each chromsome
+cat $org_assembly_file | while read line; do
+ 
+  cur_chr=`echo $line | cut --delimiter=" " -f1`
+  cur_length=`echo $line | cut --delimiter=" " -f2`
+  
+  n_bins=`echo "scale=0; (${cur_length}-${step_size})/${bin_size}" | bc`
+ 
+  start=1
+  stop=`echo "$n_bins * $bin_size" | bc`
+
+  #write header line for each chromosome
+  echo "fixedStep chrom=$cur_chr start=$start step=$step_size span=$step_size"
+  
+  #get densities along chr in n_bins with chosen bin_size and step_size (giving overlap in bins)
+  nice bigWigSummary $bigwig_file $cur_chr $start $stop $n_bins | perl -pe 's/\t/\n/g' | perl -pe "s/n\/a/0/" 
+  #gives warning if no data in/for current chromosome
+  
+done
+
+#rm tmp
+rm $org_assembly_file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bigwig_to_wig.xml	Fri Aug 01 08:10:27 2014 -0400
@@ -0,0 +1,34 @@
+<tool id="bigwig_to_wig" name="BigWig to Wig" version="1.0.0">
+    <description>converter</description>
+    <command>bigwig_to_wig.sh -f $input -b $bin_size -l $mylab > $output </command>
+  <requirements>
+      <requirement type="package">bigWigSummary</requirement>
+      <requirement type="package">bigWigInfo</requirement>
+  </requirements>
+  <inputs>
+      <param format="bigwig" name="input" type="data" label="BigWig file to convert" />
+      <param name="bin_size" size="4" type="integer" value="500" label="Bin size" help="Must be an even integer > 100." />
+      <param name="mylab" type="text" value="wiggle_file" label="Output file prefix" help="" />
+  </inputs>
+  <outputs>
+      <data format="wig" name="output" label="${mylab}_density_bin${bin_size}.wig" />
+  </outputs>
+  <tests>
+      <test>
+	  <param name="input" value="1.bigwig" />
+	  <param name="bin_size" value="500" />
+	  <output name="output" file="1.wig" />	  
+      <test>
+  </tests>
+  <help>
+
+This tool converts a **BigWig** file to fixed step **Wiggle** format. 
+Resolution is controlled through the bin size (the higher the size, the lower the resolution).
+
+The script this tool is based on is written by Jens Vilstrup Johansen and uses bigWigInfo_ and bigWigSummary_.
+
+.. _bigWigInfo: https://github.com/adamlabadorf/ucsc_tools/blob/master/executables/bigWigInfo
+.. _bigWigSummary: https://github.com/adamlabadorf/ucsc_tools/blob/master/executables/bigWigSummary
+
+</help>
+</tool>
Binary file test-data/1.bigwig has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Fri Aug 01 08:10:27 2014 -0400
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<tool_dependency>
+    <package name="bigWigSummary">
+        <install version="1.0">
+	    <actions_group>
+                <actions os="linux" architecture="x86_64">
+                    <action type="download_binary"><url_template>http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/bigWigSummary</url_template></action>
+	            <action type="move_directory_files">
+            		<source_directory>.</source_directory>
+            		<destination_directory>$INSTALL_DIR</destination_directory>
+        	    </action>
+		</actions>
+
+
+		<action type="set_environment">
+                    <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR</environment_variable>
+                </action>
+            </actions_group>
+        </install>
+        <readme>
+        </readme>
+    </package>
+    <package name="bigWigInfo">
+        <install version="1.0">
+            <actions_group>
+                <actions os="linux" architecture="x86_64">
+                    <action type="download_binary"><url_template>http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/bigWigInfo</url_template></action>
+                    <action type="move_directory_files">
+                        <source_directory>.</source_directory>
+                        <destination_directory>$INSTALL_DIR</destination_directory>
+                    </action>
+                </actions>
+
+
+                <action type="set_environment">
+                    <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR</environment_variable>
+                </action>
+            </actions_group>
+        </install>
+        <readme>
+        </readme>
+    </package>
+</tool_dependency>