From 7ad7b742738269c9523f695e4ecdaaa7dbfea1ed Mon Sep 17 00:00:00 2001 From: Barry Moore Date: Thu, 18 Jun 2015 14:00:40 +0000 Subject: [PATCH] Adding merge_data -uniq along with some test files Former-commit-id: 42b4295e640332ce925d706df3f8d8007d08ac75 --- Build.PL | 1 + bin/fastqc_reporter | 2 + bin/gff_tool | 4 +- bin/merge_data | 68 ++++++++++++++++++--------- bin/random_list | 14 ++++++ bin/t/merge_data.t | 76 +++++++++++++++++++++++++++++++ dev/GAL_Indexing_Benchmarks.xlsx | Bin 0 -> 41918 bytes t/data/file1.txt | 11 +++++ t/data/file2.txt | 8 ++++ t/data/test_blend1.gvf | 4 ++ t/data/test_blend2.gvf | 4 ++ t/data/test_blend3.gvf | 1 + 12 files changed, 170 insertions(+), 23 deletions(-) create mode 100755 bin/t/merge_data.t create mode 100644 dev/GAL_Indexing_Benchmarks.xlsx create mode 100644 t/data/file1.txt create mode 100644 t/data/file2.txt create mode 100644 t/data/test_blend1.gvf create mode 100644 t/data/test_blend2.gvf create mode 100644 t/data/test_blend3.gvf diff --git a/Build.PL b/Build.PL index a6fd506..5915ca8 100644 --- a/Build.PL +++ b/Build.PL @@ -166,6 +166,7 @@ my $builder = $class->new( bin/t/gtf2gff3.t bin/t/gvf_validator.t bin/t/map_seqids.t + bin/t/merge_data.t bin/t/sam_inspector.t bin/t/script_test_template.t bin/t/ucsc2gff.t diff --git a/bin/fastqc_reporter b/bin/fastqc_reporter index fbd6519..6d3e531 100755 --- a/bin/fastqc_reporter +++ b/bin/fastqc_reporter @@ -96,6 +96,7 @@ sub build_basic_report { my @parts = split m|/|, $file; pop @parts if scalar @parts > 1; my $path = join '/', @parts; + $path =~ s/\.zip$//; my $name = $parts[-1]; $data{files}{$file}{path} = $path; $data{files}{$file}{name} = $name; @@ -160,6 +161,7 @@ sub build_summary_report { my @parts = split m|/|, $file; pop @parts if scalar @parts > 1; my $path = join '/', @parts; + $path =~ s/\.zip$//; my $name = $parts[-1]; $data{files}{$file}{path} = $path; $data{files}{$file}{name} = $name; diff --git a/bin/gff_tool b/bin/gff_tool index 57cc48a..ba2b703 100755 --- a/bin/gff_tool +++ b/bin/gff_tool @@ -838,7 +838,7 @@ sub blend_gff { 'blend_gff_not_thouroughly_tested', 'blend has not been thouroughly tested. Please help', 'us improve gff_tool by carefully evaluating your', - 'output and contacting us if you find errors. Thanks', + 'output and contacting us if you find errors.', ); my %features; @@ -3821,6 +3821,8 @@ sub send_message { my $comment = join ' ', @comments; my $message = join ' : ', ($class, $code, $comment); + $message .= "\n"; + $message =~ s/\n+$/\n/; print STDERR $message; diff --git a/bin/merge_data b/bin/merge_data index 78c2cae..1b190ad 100755 --- a/bin/merge_data +++ b/bin/merge_data @@ -24,35 +24,55 @@ Merge together the data from two files based on a shared ID columns; Options: - col1: The ID column(s) in the 1st data file (use comma separated - list for multiple column keys). + --col1 - col2: The ID column in the 2nd data file (use comma separated - list for multiple column keys). + The ID column(s) in the 1st data file (use comma separated list + for multiple column keys). - split: The charachter to split columns on. + --col2 - pcol1: The columns to print from file 1 (defaults to all). + The ID column in the 2nd data file (use comma separated list for + multiple column keys). - pcol1: The columns to print from file 2 (defaults to all). + --split, -s + + The charachter to split columns on. + + --pcol1 + + The columns to print from file 1 (defaults to all). + + --pcol2 + + The columns to print from file 2 (defaults to all). + + --uniq, -u + + Ensure that output lines are unique. "; -my ($help, $col1, $col2, $split, $pcol1, $pcol2); -my $opt_success = GetOptions('help' => \$help, - 'col1=s' => \$col1, - 'col2=s' => \$col2, - 'split=s' => \$split, - 'pcol1=s' => \$pcol1, - 'pcol2=s' => \$pcol2, +my ($help, $col1, $col2, $split, $pcol1, $pcol2, $print_uniq); +my $opt_success = GetOptions('help' => \$help, + 'col1=s' => \$col1, + 'col2=s' => \$col2, + 'split|s=s' => \$split, + 'pcol1=s' => \$pcol1, + 'pcol2=s' => \$pcol2, + 'uniq|u' => \$print_uniq, ); +die $usage if ! $opt_success; + +if ($help) { + print $usage; + exit(0); +} + $split ||= "\t"; $split = qr|$split|; -die $usage if $help || ! $opt_success; - my ($file1, $file2) = @ARGV; die $usage unless $file1 && $file2; @@ -62,30 +82,34 @@ $col2 ||= 0; my @cols1 = split /,/, $col1; my @cols2 = split /,/, $col2; my @pcols1; -@pcols1 = split /,/, $pcol1 if $pcol1; +@pcols1 = split /,/, $pcol1 if defined $pcol1; my @pcols2; -@pcols2 = split /,/, $pcol2 if $pcol2; +@pcols2 = split /,/, $pcol2 if defined $pcol2; my $index = parse_file(\@cols1, $file1); open (my $IN, '<', $file2) or die "Can't open $file2 for reading\n$!\n"; +my %uniq; while (<$IN>) { chomp; my @columns2 = split /$split/, $_; my $key = join ':', @columns2[@cols2]; next unless $index->{$key}; + my @print_columns2 = @pcols2 ? @columns2[@pcols2] : @columns2; my $column1_set = $index->{$key}; + SET: for my $columns1 (@{$column1_set}) { my @print_columns1 = @pcols1 ? @{$columns1}[@pcols1] : @{$columns1}; - my @print_columns2 = @pcols2 ? @columns2[@pcols2] : @columns2; - print join "\t", (@print_columns1, @print_columns2); - print "\n"; + my $output = join "\t", (@print_columns1, @print_columns2); + next SET if $print_uniq && $uniq{$output}++; + print "$output\n"; } - } +exit(0); + #----------------------------------------------------------------------------- #-------------------------------- SUBROUTINES -------------------------------- #----------------------------------------------------------------------------- diff --git a/bin/random_list b/bin/random_list index bb354dc..ec754d4 100755 --- a/bin/random_list +++ b/bin/random_list @@ -23,6 +23,20 @@ With the options described below you can pick a given number of values from the list and print just those, and you can permute the shuffle pick sequence a given number of times. +Options: + + --permute, -m 1 + + Lists are randomized by a Fisher-Yates shuffle. The permute + option describes how many rounds of shuffling are done. The + default is 1 which is sufficient for most purposes. + + --pick, -p 100 + + Provide an integer value to --print and the script will print only + that given number of values from the top of the shuffled list. + Default is to print the entire shuffled list. + "; my ($help, $permute, $pick); diff --git a/bin/t/merge_data.t b/bin/t/merge_data.t new file mode 100755 index 0000000..caf29ca --- /dev/null +++ b/bin/t/merge_data.t @@ -0,0 +1,76 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +use FindBin; +use lib "$FindBin::RealBin/../../lib"; +use lib "$FindBin::RealBin/../../lib/cpan"; +use GAL::Run; + +chdir $FindBin::Bin; +my $path = "$FindBin::Bin/.."; + +my $tool = GAL::Run->new(path => $path, + command => 'merge_data'); + +################################################################################ +# Testing that merge_data compiles and returns usage statement +################################################################################ + +ok(! $tool->run(cl_args => ['--help']), 'merge_data complies'); +like($tool->get_stdout, qr/Synopsis/, 'merge_data prints usage statement'); + +################################################################################ +# Testing that merge_data does something else +################################################################################ + +my $file1 = "$FindBin::Bin/data/file1.txt"; +my $file2 = "$FindBin::Bin/data/file2.txt"; + +my @cl_args = ('--pcol1 0', + '--pcol2 1', + '--uniq', + $file1, + $file2, + ); + +ok(! $tool->run(cl_args => \@cl_args), 'merge_data does something'); +my @lines = split /\n/, $tool->get_stdout; +my $lc = scalar @lines; +ok($lc == 8, + 'merge_data has the correct line count'); + +$tool->clean_up; +done_testing(); + +################################################################################ +################################# Ways to Test ################################# +################################################################################ + +__END__ + +# Various other ways to say "ok" +ok($this eq $that, $test_name); + +is ($this, $that, $test_name); +isnt($this, $that, $test_name); + +# Rather than print STDERR "# here's what went wrong\n" +diag("here's what went wrong"); + +like ($this, qr/that/, $test_name); +unlike($this, qr/that/, $test_name); + +cmp_ok($this, '==', $that, $test_name); + +is_deeply($complex_structure1, $complex_structure2, $test_name); + +can_ok($module, @methods); +isa_ok($object, $class); + +pass($test_name); +fail($test_name); + +BAIL_OUT($why); diff --git a/dev/GAL_Indexing_Benchmarks.xlsx b/dev/GAL_Indexing_Benchmarks.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..56aac0bc2cea101daf8c0d7aec84e34276a4ebb8 GIT binary patch literal 41918 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