Repository 'compstrains'
hg clone https://toolshed.g2.bx.psu.edu/repos/antmarge/compstrains

Changeset 11:a4c9073c9b9a (2017-03-29)
Previous changeset 10:311fe0ebf120 (2017-03-29) Next changeset 12:e627f5820272 (2017-03-29)
Commit message:
Deleted selected files
removed:
compStrains.pl
compStrains.xml
b
diff -r 311fe0ebf120 -r a4c9073c9b9a compStrains.pl
--- a/compStrains.pl Wed Mar 29 14:05:13 2017 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,251 +0,0 @@\n-#!/usr/bin/perl -w\n-\n-#Margaret Antonio 16.01.13\n-\n-#DESCRIPTION: Takes two aggregate.pl outputs and compares them using mean difference, pval for each\n-#gene. Can compare, for example, 19F in glucose and TIGR4 in glucose.\n-#DIFFERENT GENOMES (ie. diff. strains).\n-#Requires CONVERSION FILE\n-\n-#USAGE: perl compStrains.pl -c <conversion.csv> <options>\n-    #[<aggregateFile1.csv aggregateFile2.csv> OR -indir <indir/>]\n-\n-use Data::Dumper;\n-use strict;\n-use Getopt::Long;\n-use warnings;\n-use File::Path;\n-use File::Basename;\n-use Statistics::Distributions;\n-\n-#ASSIGN INPUTS TO VARIABLES USING FLAGS\n-our ($indir,$h,$out,$sortkey,$round,$l1,$l2,$cfile);\n-GetOptions(\n-\'d:s\' => \\$indir,\n-\'h\' => \\$h,\n-\'o:s\' =>\\$out,\n-\'s:i\' => \\$sortkey,\n-\'r:i\'=> \\$round,\n-\'l1:s\'=> \\$l1,\n-\'l2:s\'=> \\$l2,\n-\'c:s\'=> \\$cfile,\n-);\n-\n-sub print_usage() {\n-    print "\\n";\n-    print "\\n##################################################################\\n";\n-    print "compStrains.pl: compare genes from a tn-seq experiment\\n";\n-    print "\\tfor two DIFFERENT strains/genomes using aggregate files\\n";\n-    \n-    print "\\nDESCRIPTION: Takes two aggregate.pl outputs and compares them by\\n";\n-    print "calculating the difference in mean fitness.\\n";\n-    \n-    print "Example: two strains tested under same condition.\\n";\n-    print "Note: For same strains (genomes), use compGenes.pl\\n";\n-    \n-    print "\\nUSAGE:\\n";\n-    print "perl compStrains.pl -c conversion.csv -d inputs/\\n";\n-    \n-    print "\\nREQUIRED:\\n";\n-    print " -d\\tDirectory containing all input files (files from\\n";\n-    print "   \\taggregate fitness script)\\n";\n-    print "   \\tOR\\n";\n-    print "   \\tIn the command line (without a flag), input the name(s) of\\n";\n-    print "   \\ttwo files containing aggregate gene fitness values. \\n\\n";\n-    print " -c\\tConversion file: two columns with homologs for both organisms\\n";\n-\n-    print "\\nOPTIONAL:\\n";\n-    print " -h\\tPrints usage and exits program\\n";\n-    print " -o\\tOutput file for comparison data. Default: label1label2.csv\\n";\n-    print " -s\\tSort output by this index of the file (indices begin at 0).\\n";\n-    print "   \\tDefault: by mean\\n";\n-    print " -r\\tRound final output numbers to this number of decimals\\n";\n-    print " -l\\tLabels for input files. Default: filenames\\n";\n-    print "   \\tTwo strings, comma separated (i.e. -l expt1,expt2).\\n";\n-    print "   \\tOrder should match file order.\\n";\n-\tprint " \\n~~~~Always check that file paths are correctly specified~~~~\\n";\n-    print "\\n##################################################################\\n";\n-}\n-if ($h){\n-    print_usage();\n-    exit;\n-}\n-if (!$indir and (scalar @ARGV==0)){\n-\tprint "\\nERROR: Please correctly specify input files or directory\\n";\n-    print_usage();\n-\tprint "\\n";\n-\texit;\n-}\n-if (!$cfile){\n-\tprint "\\nERROR: Please correctly specify the required conversion file\\n";\n-    print_usage();\n-\tprint "\\n";\n-\texit;\n-}\n-\n-#THE @files ARRAY WILL CONTAIN INPUT FILE NAMES, EXTRACTED FROM A DIRECTORY (-indir) OR ARGV\n-my @files;\n-if ($indir){\n-    my $directory="$indir";\n-    opendir(DIR, $directory) or (print "Couldn\'t open $directory: $!\\n" and print_usage() and exit);\n-    my @direct= readdir DIR;\n-    my $tail=".csv";\n-    foreach (@direct){\n-        if (index($_, $tail) != -1){\n-            $_=$indir.$_;\n-            push (@files,$_);\n-        }\n-    }\n-    closedir DIR;\n-}\n-else{\n-    @files=@ARGV;\n-}\n-\n-#GET LABELS: USE (-l) OR USE FILNEAMES AS LABELS FOR COLUMNS IN OUTPUT FILE\n-\n-\n-my @labels = ($l1,$l2);\n-#if ($l){\n-#    @labels=split(\',\',$l);\n-#}\n-#else{\n-#    foreach (@files){\n-#        my $filename=basename($_);\n-#        my @temp=split(\'\\\\.\',$filename);\n-#        my $colName=$temp[0];\n-#        push (@labels,$colName);\n-  #  }\n-#}\n-\n-#CHECK IF REQ. VARIABLES WERE DEFINED USING FLAGS. IF NOT THEN USE DEFAULT VALUES\n-\n-if (!$out) {$out="comp.".$labels[0].$labels[1].".csv"}\n-if (!$round){$round=\'%.4f\'}\n-\n-#OPEN INPUTTED AGGREGATE GENE FILES AND STORE TH'..b'SH %ONE AND FILE2 GOES INTO HASH %TWO.\n-\n-#FILE1 OPENING ---> %one WHERE KEY:VALUE IS GENE_ID:(GENE_ID,INSERTIONS,MEAN,ETC.)\n-my @header;\n-my %one;\n-\n-open (F1,\'<\',$files[0]);\n-\n-#STORE COLUMN NAMES (FIRST LINE OF FILE1) FOR HEADER AND APPEND LABELS\n-my $head=<F1>; #the header in the file\n-my @cols=split(\',\',$head);\n-@cols=@cols[0,1,2,3,4,5,6]; #get rid of blank columns\n-for (my $j=0;$j<scalar @cols;$j++){\n-    $cols[$j]=$cols[$j].\'-\'.$labels[0];   #mark each column name with file it comes from\n-}\n-push (@header,@cols);\n-\n-while (my $line=<F1>){\n-    chomp $line;\n-    my @info=split(",",$line);\n-    #Only keep the first 7 columns (Ones about blanks aren\'t needed for comparisons)\n-    @info=@info[0,1,2,3,4,5,6];\n-    #Sometimes genes that don\'t have a gene name can\'t be blank, so fill with NA\n-    if (!$info[5]){\n-        $info[5]="NA";\n-    }\n-    #If there are no insertions in the column "total", then make it =0 rather than blank\n-    if (!$info[6]){\n-        $info[6]=0;\n-    }\n-    $one{$info[0]}=\\@info;\n-}\n-close F1;\n-\n-#FILE2 OPENING ---> %two WHERE KEY:VALUE IS GENE_ID:(GENE_ID,INSERTIONS,MEAN,ETC.)\n-\n-my %two;\n-open (F2,\'<\',$files[1]);\n-\n-#STORE COLUMN NAMES (FIRST LINE OF FILE2) FOR HEADER AND APPEND LABELS\n-$head=<F2>; #the header in the file\n-@cols=split(\',\',$head);\n-@cols=@cols[0,1,2,3,4,5,6]; #get rid of blank columns\n-for (my $j=0;$j<scalar @cols;$j++){\n-    $cols[$j]=$cols[$j].\'-\'.$labels[1];   #mark each column name with file it comes from\n-}\n-push (@header,@cols);\n-\n-while (my $line=<F2>){\n-    chomp $line;\n-    my @info=split(",",$line);\n-    @info=@info[0,1,2,3,4,5,6];\n-    if (!$info[5]){\n-        $info[5]="NA";\n-    }\n-    if (!$info[6]){\n-        $info[6]=0;\n-    }\n-    $two{$info[0]}=\\@info;\n-}\n-close F2;\n-\n-\n-#READ CONVERSION FILE INTO ARRAY.\n-#Conversion file must have strain 1 for file 1 in column 1 (index 0) and\n-    #strain 2 for file 2 in column 2 (index 1)\n-    #conversion file must be tab delimited with no NA fields\n-#If homologs (exist then take info from hashes (%one and %two) by referring to gene_id in KEY\n-\n-my @all; #store all homologs in this hash\n-open (CONV,\'<\',$cfile);\n-while (my $line=<CONV>){\n-    chomp $line;\n-    my @genes=split("\\t",$line);   #Array @genes will contain two genes (SP_0000,SPT_0000)\n-    if (scalar @genes==2 and $genes[0] ne "" and $genes[1] ne ""){\n-        my @info;\n-        my @oneArray=@{$one{$genes[0]}};\n-        my @twoArray=@{$two{$genes[1]}};\n-        push (@info,@oneArray,@twoArray);\n-        my $diff=sprintf("$round",($info[1]-$info[8]));\n-        my $total1=$info[6];\n-        my $total2=$info[13];\n-        my $sd1=$info[3];\n-        my $se1=$info[4];\n-        my $sd2=$info[10];\n-        my $se2=$info[11];\n-        my $df=$total1+$total2-2;\n-        my $tdist;\n-        my $pval;\n-        #TDIST, PVAL calculations with fail if standard dev, error, or counts are not real numbers\n-        #or if 0 ends up in denominator\n-        if ($se1 eq "X" or $se2 eq "X" or $sd1 eq "X" or $sd2 eq "X" or $total1==0 or $total2==0 or $sd1==0 or $sd2==0){\n-            ($tdist,$pval)=("NA","NA");\n-        }\n-        else{\n-            $tdist=sqrt((($diff)/(sqrt((($sd1**2)/$total1)+(($sd2**2)/$total2))))**2);\n-            $pval=Statistics::Distributions::tprob($df,$tdist);\n-        }\n-        push (@info,$diff,$df,$tdist,$pval);\n-        push (@all,\\@info);\n-    }\n-}\n-close CONV;\n-\n-#SORT THE HOMOLOGS BY THE SORTKEY OR BY DEFAULT DIFFERENCE IN MEAN FITNESSES\n-if (!$sortkey){\n-    $sortkey=14; #for mean difference\n-}\n-my @sorted = sort { $b->[$sortkey] <=> $a->[$sortkey] } @all;\n-\n-#FINISH THE HEADER BY ADDING COLUMN NAMES FOR MEAN-DIFF, DOF, TDIST, AND PVALUE\n-my $field="MeanDiff(".$labels[0].\'.\'.$labels[1].")";\n-push (@header,$field,"DOF","TDIST","PVALUE");\n-\n-#PRINT MATCHED HOMOLOG INFORMATION INTO A SINGLE OUTPUT FILE\n-open OUT, \'>\',"$out";\n-print OUT (join(\',\',@header),"\\n");\n-foreach (@sorted){\n-    my @woo=@{$_};\n-    print OUT join(\',\',@woo),"\\n";\n-    }\n-\n-close OUT;\n-\n-\n'
b
diff -r 311fe0ebf120 -r a4c9073c9b9a compStrains.xml
--- a/compStrains.xml Wed Mar 29 14:05:13 2017 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,58 +0,0 @@
-<tool id="compStrains" name="Compare Strains" version="0.1.0">
-    
-    <!-- Margaret Antonio  17.01.08 -->
-
-    <description> compare gene aggregate fitness from two different experiments for two different strains (genomes)</description>
-    
-    <requirements>
-        <requirement type="package" version="5.18.1">perl</requirement>
-        <requirement type="package" version="2.45">perl_getopt_long</requirement>
-        <requirement type="package" version="1.02">perl_statistics_distributions</requirement>
-        <requirement type="package" version="2.121">perl_data_dumper</requirement>
-        <requirement type="package" version="2.12">perl_file_path</requirement>
-        <requirement type="package" version="5.24.1">perl_file_basename</requirement>
-    </requirements>
-    
-    <command interpreter="perl">
-        compStrains.pl
-        -input1 $input1
-        -input2 $input2
-        -c $cfile
-        -l1 $l1
-        -l2 $l2
-        -o $outfile
-    </command>
-   
-    <inputs>
-        <param name="input1" type="data" label="csv gene aggregate fitness file #1"/>
-        <param name="input2" type="data" label="csv gene aggregate fitness file #2"/>
-        <param name="l1" type="text" value ="input1" label="Label for input #1"/>
-        <param name="l2" type="text" value ="input2" label="Label for input #2"/>
-        <param name="cfile" type="data" label="Conversion file for homologous genes"/>
-
-
-    </inputs>
-   
-    <outputs>
-        <data format="csv" name="outfile"  />
-    </outputs>
-    
-    <help>
-        **What it does**
-        
-        This tool compares genes for different strains under a single condition. It takes two geneAgregate outputs and compares them calculating the difference in mean fitness for each gene. A tab-delimited conversion file, with one set of gene homologs per line is required Example usage: compare two strains of  in presence of an antibiotic. For the same strain/genome, where gene ids are the same, use compGenes.pl;
-
-        
-        **The options explained**
-        
-        Input 1 and 2: These are the csv (comma separated values) files containing the gene fitness values. Since they should have been produced by the "Aggregate Fitness" tool, each line besides the header should represent the following information for a gene: Locus, Fitness, NumberofInsertions, StandardDev of insertion fitness, Standard Error of insertion fitness, and Marking
-        
-        Label 1 and 2: Labels for the column headers for files in the comparison
-        
-        Conversion File: Tab-delimited file of homologous genes for the two strains. One set of homologs per line, with each gene id separated by a tab.
-        
-        
-        
-    </help>
-    
-</tool>