From c4ded6a55733590f3ead5baf03ed4943b4c21db5 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Wed, 3 Sep 2008 07:43:45 +0000 Subject: [PATCH] removed wiggle options from upload_to_ucsc git-svn-id: http://biopieces.googlecode.com/svn/trunk@243 74ccb610-7750-0410-82ae-013aeee3265d --- code_perl/Maasha/Biopieces.pm | 270 ++++++++++++---------------------- 1 file changed, 91 insertions(+), 179 deletions(-) diff --git a/code_perl/Maasha/Biopieces.pm b/code_perl/Maasha/Biopieces.pm index b50b3fc..044d851 100644 --- a/code_perl/Maasha/Biopieces.pm +++ b/code_perl/Maasha/Biopieces.pm @@ -947,9 +947,6 @@ sub get_options priority|p=f use_score|u visibility|v=s - wiggle|w - score|S - log10|L color|c=s chunk_size|C=s ); @@ -1456,7 +1453,7 @@ sub script_read_fixedstep $record->{ "CHR" } = $1; $record->{ "CHR_BEG" } = $2; $record->{ "STEP" } = $3; - $record->{ "VALS" } = join ",", @{ $entry }; + $record->{ "VALS" } = join ";", @{ $entry }; } put_record( $record, $out ); @@ -2556,10 +2553,11 @@ sub script_calc_fixedstep { map { $_ = sprintf( "%.4f", Maasha::Calc::log10( $_ ) ) } @{ $block } if $options->{ "log10" }; - $record->{ "CHR" } = $chr; - $record->{ "CHR_BEG" } = $beg_block; - $record->{ "STEP" } = 1; - $record->{ "VALS" } = join ";", @{ $block }; + $record->{ "CHR" } = $chr; + $record->{ "CHR_BEG" } = $beg_block; + $record->{ "STEP" } = 1; + $record->{ "VALS" } = join ";", @{ $block }; + $record->{ "REC_TYPE" } = "fixed_step"; put_record( $record, $out ); @@ -2590,10 +2588,11 @@ sub script_calc_fixedstep map { $_ = sprintf( "%.4f", Maasha::Calc::log10( $_ ) ) } @{ $block } if $options->{ "log10" }; - $record->{ "CHR" } = $chr; - $record->{ "CHR_BEG" } = $beg_block; - $record->{ "STEP" } = 1; - $record->{ "VALS" } = join ";", @{ $block }; + $record->{ "CHR" } = $chr; + $record->{ "CHR_BEG" } = $beg_block; + $record->{ "STEP" } = 1; + $record->{ "VALS" } = join ";", @{ $block }; + $record->{ "REC_TYPE" } = "fixed_step"; put_record( $record, $out ); @@ -4331,7 +4330,7 @@ sub script_write_fixedstep $vals = $record->{ 'VALS' }; - $vals =~ tr/,/\n/; + $vals =~ tr/;/\n/; print $fh "$vals\n"; } @@ -6037,8 +6036,7 @@ sub script_upload_to_ucsc # Returns nothing. - my ( $record, $file, $wib_file, $wig_file, $wib_dir, $fh_in, $fh_out, $i, $first, $format, $args, $type, $columns, $append, %fh_hash, - $chr, $beg, $end, $block, $line, $max, $beg_block, $entry, $q_id, $clones, $vals ); + my ( $record, $file, $wib_file, $wig_file, $wib_dir, $fh_out, $i, $first, $format, $type, $columns, $append, $vals ); $options->{ "short_label" } ||= $options->{ 'table' }; $options->{ "long_label" } ||= $options->{ 'table' }; @@ -6056,195 +6054,109 @@ sub script_upload_to_ucsc $i = 0; - if ( $options->{ 'wiggle' } ) + $fh_out = Maasha::Common::write_open( $file ); + + while ( $record = get_record( $in ) ) { - while ( $record = get_record( $in ) ) - { - put_record( $record, $out ) if not $options->{ "no_stream" }; + put_record( $record, $out ) if not $options->{ "no_stream" }; - $record->{ "CHR" } = $record->{ "S_ID" } if not defined $record->{ "CHR" }; - $record->{ "CHR_BEG" } = $record->{ "S_BEG" } if not defined $record->{ "CHR_BEG" }; - $record->{ "CHR_END" } = $record->{ "S_END" } if not defined $record->{ "CHR_END" }; + if ( $record->{ "REC_TYPE" } eq "fixed_step" ) + { + $vals = $record->{ "VALS" }; + $vals =~ tr/;/\n/; - $fh_hash{ $record->{ "CHR" } } = Maasha::Common::write_open( "$BP_TMP/$record->{ 'CHR' }" ) if not exists $fh_hash{ $record->{ "CHR" } }; + print $fh_out "fixedStep chrom=$record->{ 'CHR' } start=$record->{ 'CHR_BEG' } step=$record->{ 'STEP' }\n"; + print $fh_out "$vals\n"; - $fh_out = $fh_hash{ $record->{ "CHR" } }; - - Maasha::UCSC::bed_put_entry( $record, $fh_out, 5 ); + $format = "WIGGLE" if not $format; } - - map { close $_ } keys %fh_hash; - - $fh_out = Maasha::Common::write_open( $file ); - - foreach $chr ( sort keys %fh_hash ) + elsif ( $record->{ "REC_TYPE" } eq "PSL" ) { - Maasha::Common::run( "bedSort", "$BP_TMP/$chr $BP_TMP/$chr" ); - - $fh_in = Maasha::Common::read_open( "$BP_TMP/$chr" ); - - undef $block; - - while ( $entry = Maasha::UCSC::bed_get_entry( $fh_in, 5 ) ) - { - $chr = $entry->{ 'CHR' }; - $beg = $entry->{ 'CHR_BEG' }; - $end = $entry->{ 'CHR_END' }; - $q_id = $entry->{ 'Q_ID' }; - - if ( $options->{ "score" } ) { - $clones = $entry->{ 'SCORE' }; - } elsif ( $q_id =~ /_(\d+)$/ ) { - $clones = $1; - } else { - $clones = 1; - } - - if ( $block ) - { - if ( $beg > $max ) - { - Maasha::UCSC::fixedstep_put_entry( $chr, $beg_block, $block, $fh_out, $options->{ "log10" } ); - undef $block; - } - else - { - for ( $i = $beg - $beg_block; $i < ( $beg - $beg_block ) + ( $end - $beg ); $i++ ) { - $block->[ $i ] += $clones; - } - - $max = Maasha::Calc::max( $max, $end ); - } - } - - if ( not $block ) - { - $beg_block = $beg; - $max = $end; - - for ( $i = 0; $i < ( $end - $beg ); $i++ ) { - $block->[ $i ] += $clones; - } - } - } - - close $fh_in; - - Maasha::UCSC::fixedstep_put_entry( $chr, $beg_block, $block, $fh_out, $options->{ "log10" } ); + Maasha::UCSC::psl_put_header( $fh_out ) if $first; + Maasha::UCSC::psl_put_entry( $record, $fh_out ); + + $first = 0; - unlink "$BP_TMP/$chr"; + $format = "PSL" if not $format; } - - close $fh_out; - - $format = "WIGGLE"; - } - else - { - $fh_out = Maasha::Common::write_open( $file ); - - while ( $record = get_record( $in ) ) + elsif ( $record->{ "REC_TYPE" } eq "BED" and $record->{ "SEC_STRUCT" } ) { - put_record( $record, $out ) if not $options->{ "no_stream" }; + # chrom chromStart chromEnd name score strand size secStr conf - if ( $record->{ "REC_TYPE" } eq "fixed_step" ) - { - $vals = $record->{ "VALS" }; - $vals =~ tr/,/\n/; + print $fh_out join ( "\t", + $record->{ "CHR" }, + $record->{ "CHR_BEG" }, + $record->{ "CHR_END" } + 1, + $record->{ "Q_ID" }, + $record->{ "SCORE" }, + $record->{ "STRAND" }, + $record->{ "SIZE" }, + $record->{ "SEC_STRUCT" }, + $record->{ "CONF" }, + ), "\n"; - print $fh_out "fixedStep chrom=$record->{ 'CHR' } start=$record->{ 'CHR_BEG' } step=$record->{ 'STEP' }\n"; - print $fh_out "$vals\n"; + $format = "BED_SS" if not $format; + } + elsif ( $record->{ "REC_TYPE" } eq "BED" ) + { + Maasha::UCSC::bed_put_entry( $record, $fh_out, $record->{ "BED_COLS" } ); - $format = "WIGGLE" if not $format; - } - elsif ( $record->{ "REC_TYPE" } eq "PSL" ) - { - Maasha::UCSC::psl_put_header( $fh_out ) if $first; - Maasha::UCSC::psl_put_entry( $record, $fh_out ); - - $first = 0; + $format = "BED" if not $format; + $columns = $record->{ "BED_COLS" } if not $columns; + } + elsif ( $record->{ "REC_TYPE" } eq "PATSCAN" and $record->{ "CHR" } ) + { + Maasha::UCSC::bed_put_entry( $record, $fh_out, 6 ); - $format = "PSL" if not $format; - } - elsif ( $record->{ "REC_TYPE" } eq "BED" and $record->{ "SEC_STRUCT" } ) - { - # chrom chromStart chromEnd name score strand size secStr conf - - print $fh_out join ( "\t", - $record->{ "CHR" }, - $record->{ "CHR_BEG" }, - $record->{ "CHR_END" } + 1, - $record->{ "Q_ID" }, - $record->{ "SCORE" }, - $record->{ "STRAND" }, - $record->{ "SIZE" }, - $record->{ "SEC_STRUCT" }, - $record->{ "CONF" }, - ), "\n"; - - $format = "BED_SS" if not $format; - } - elsif ( $record->{ "REC_TYPE" } eq "BED" ) - { - Maasha::UCSC::bed_put_entry( $record, $fh_out, $record->{ "BED_COLS" } ); + $format = "BED" if not $format; + $columns = 6 if not $columns; + } + elsif ( $record->{ "REC_TYPE" } eq "BLAST" and $record->{ "S_ID" } =~ /^chr/ ) + { + $record->{ "CHR" } = $record->{ "S_ID" }; + $record->{ "CHR_BEG" } = $record->{ "S_BEG" }; + $record->{ "CHR_END" } = $record->{ "S_END" }; + $record->{ "SCORE" } = $record->{ "BIT_SCORE" } * 1000; - $format = "BED" if not $format; - $columns = $record->{ "BED_COLS" } if not $columns; - } - elsif ( $record->{ "REC_TYPE" } eq "PATSCAN" and $record->{ "CHR" } ) - { - Maasha::UCSC::bed_put_entry( $record, $fh_out, 6 ); + $format = "BED" if not $format; + $columns = 6 if not $columns; - $format = "BED" if not $format; - $columns = 6 if not $columns; - } - elsif ( $record->{ "REC_TYPE" } eq "BLAST" and $record->{ "S_ID" } =~ /^chr/ ) - { - $record->{ "CHR" } = $record->{ "S_ID" }; - $record->{ "CHR_BEG" } = $record->{ "S_BEG" }; - $record->{ "CHR_END" } = $record->{ "S_END" }; - $record->{ "SCORE" } = $record->{ "BIT_SCORE" } * 1000; + Maasha::UCSC::bed_put_entry( $record, $fh_out ); + } + elsif ( $record->{ "REC_TYPE" } eq "VMATCH" and $record->{ "S_ID" } =~ /^chr/i ) + { + $record->{ "CHR" } = $record->{ "S_ID" }; + $record->{ "CHR_BEG" } = $record->{ "S_BEG" }; + $record->{ "CHR_END" } = $record->{ "S_END" }; + $record->{ "SCORE" } = $record->{ "SCORE" } || 999; + $record->{ "SCORE" } = int( $record->{ "SCORE" } ); - $format = "BED" if not $format; - $columns = 6 if not $columns; + $format = "BED" if not $format; + $columns = 6 if not $columns; - Maasha::UCSC::bed_put_entry( $record, $fh_out ); - } - elsif ( $record->{ "REC_TYPE" } eq "VMATCH" and $record->{ "S_ID" } =~ /^chr/i ) - { - $record->{ "CHR" } = $record->{ "S_ID" }; - $record->{ "CHR_BEG" } = $record->{ "S_BEG" }; - $record->{ "CHR_END" } = $record->{ "S_END" }; - $record->{ "SCORE" } = $record->{ "SCORE" } || 999; - $record->{ "SCORE" } = int( $record->{ "SCORE" } ); + Maasha::UCSC::bed_put_entry( $record, $fh_out, 6 ); + } - $format = "BED" if not $format; - $columns = 6 if not $columns; + if ( $i == $options->{ "chunk_size" } ) + { + close $fh_out; - Maasha::UCSC::bed_put_entry( $record, $fh_out, 6 ); + if ( $format eq "BED" ) { + Maasha::UCSC::bed_upload_to_ucsc( $BP_TMP, $file, $options, $append ); + } elsif ( $format eq "PSL" ) { + Maasha::UCSC::psl_upload_to_ucsc( $file, $options, $append ); } - if ( $i == $options->{ "chunk_size" } ) - { - close $fh_out; - - if ( $format eq "BED" ) { - Maasha::UCSC::bed_upload_to_ucsc( $BP_TMP, $file, $options, $append ); - } elsif ( $format eq "PSL" ) { - Maasha::UCSC::psl_upload_to_ucsc( $file, $options, $append ); - } - - unlink $file; - - $first = 1; + unlink $file; - $append = 1; + $first = 1; - $fh_out = Maasha::Common::write_open( $file ); - } + $append = 1; - $i++; + $fh_out = Maasha::Common::write_open( $file ); } + + $i++; } close $fh_out; -- 2.39.5