G::Seq OverLapping
SummaryIncluded librariesPackage variablesDescriptionGeneral documentationMethods
Summary
  G::Seq::Overlapping - Analysis methods related to overlapping genes
Package variables
No package variables defined.
Included modules
G::Messenger
SelfLoader
SubOpt
Inherit
Exporter
Synopsis
No synopsis!
Description
    This class is a part of G-language Genome Analysis Environment, 
    collecting sequence analysis methods related to overlapping genes.
Methods
_over_lapping_printer
No description
Code
over_lapping_finderDescriptionCode
Methods description
over_lapping_findercode    nextTop
  Description:
    This program finds overlapping gene.

  Usage:
    &over_lapping_finder(pointer Genome,  boolean debug);

  Options:
    -output   "f" for file output. "stdout" for STD output.
    -filename output file name.

  Author:
    Koya Mori (mory@g-language.org)
History: 20010722-01 initial posting
Methods code
_over_lapping_printerdescriptionprevnextTop
sub _over_lapping_printer {
    &opt_default(output=>"stdout",filename=>"over_lapping.csv");
    my @args=opt_get(@_);

    my $result=shift @args;
    my $printer=opt_val("output");
    my $filename=opt_val("filename");
    my $debug=shift;

    
    if($printer eq "f"){
	open(FILE,">$filename");
	foreach(sort{$a <=> $b} keys(%$result)){
	    print FILE "$$result{$_}{before},$$result{$_}{after},$$result{$_}{BeforeStart},$$result{$_}{BeforeEnd},$$result{$_}{AfterStart},$$result{$_}{AfterEnd},$$result{$_}{OverLap},$$result{$_}{type},$$result{$_}{BeforeDirect},$$result{$_}{AfterDirect}\n";
	}   
	print FILE "\n\n";
	close(FILE);
    }
    else{
	foreach(sort{$a <=> $b} keys(%$result)){
	    &msg_send("$$result{$_}{before}\t$$result{$_}{after}\t$$result{$_}{BeforeStart}..$$result{$_}{BeforeEnd}\t$$result{$_}{AfterStart}..$$result{$_}{AfterEnd}\t$$result{$_}{OverLap}\t$$result{$_}{type}\t$$result{$_}{BeforeDirect}\t$$result{$_}{AfterDirect}\n");
	}
    }
}
over_lapping_finderdescriptionprevnextTop
sub over_lapping_finder {
    &opt_default(output=>"stdout",filename=>"over_lapping.csv");
    my @args=opt_get(@_);
    
    my $gb=opt_as_gb(shift @args);
    my $output=opt_val("output");
    my $filename=opt_val("filename");
    my $num=1;
    my ($tmp, $start, $end, %result, $q, $over, $switch, $type);

    foreach($gb->cds()){
	$over=0;
	$switch=0;
	$tmp=$num-1;
	if($gb->{"CDS$num"}->{start} > $gb->{"CDS$tmp"}->{start} && $gb->{"CDS$num"}->{end} < $gb->{"CDS$tmp"}->{end}){
	    $switch=1;
	    $over=-($gb->{"CDS$num"}->{end}-$gb->{"CDS$num"}->{start}+1);
	    $type="internal";
	}
	elsif($gb->{"CDS$num"}->{direction} eq 'direct' && $gb->{"CDS"."$tmp"}->{direction} eq 'direct'){
	    $start = $gb->{"CDS$num"}->{start};
	    $end = $gb->{"CDS"."$tmp"}->{end};
	    if($start-$end-1<0){
		$switch=1;
		$over=$start-$end-1;
		$type="uni-directional";
	    } 
	}
	elsif($gb->{"CDS$num"}->{direction} eq 'complement' && $gb->{"CDS"."$tmp"}->{direction} eq 'complement'){
	    $start = $gb->{"CDS$num"}->{start};
	    $end = $gb->{"CDS"."$tmp"}->{end};
	    if($start-$end-1<0){
		$switch=1;
		$over=$start-$end-1;
		$type="uni-directional";
	    }
	}
	elsif($gb->{"CDS$num"}->{direction} eq 'direct' && $gb->{"CDS"."$tmp"}->{direction} eq 'complement'){
	    $start = $gb->{"CDS$num"}->{start};
	    $end = $gb->{"CDS"."$tmp"}->{end};
	    if($start-$end-1<0){
		$switch=1;
		$over=$start-$end-1;      
		$type="head-on";
	    }
	}    
	elsif($gb->{"CDS$num"}->{direction} eq 'complement' && $gb->{"CDS"."$tmp"}->{direction} eq 'direct'){
	    $start = $gb->{"CDS$num"}->{start};
	    $end = $gb->{"CDS"."$tmp"}->{end};
	    if($start-$end-1<0){
		$switch=1;
		$over=$start-$end-1;
		$type="end-on";
	    }
	}    
	if($switch==1){
	    $result{$q}{before}="CDS$tmp";
	    $result{$q}{after}="CDS$num";
	    $result{$q}{BeforeStart}=$gb->{"CDS$tmp"}->{start};
	    $result{$q}{BeforeEnd}=$gb->{"CDS$tmp"}->{end};
	    $result{$q}{AfterStart}=$gb->{"CDS$num"}->{start};
	    $result{$q}{AfterEnd}=$gb->{"CDS$num"}->{end};
	    $result{$q}{BeforeDirect}=$gb->{"CDS$tmp"}->{direction};
	    $result{$q}{AfterDirect}=$gb->{"CDS$num"}->{direction};
	    $result{$q}{OverLap}=$over;
	    $result{$q}{type}=$type;
	    $q++;
	}
	$num++;
    }

    if($output eq "f"){
	_over_lapping_printer(\%result,-output=>$output,-filename=>$filename);
    }
    if($output eq "stdout"){
	_over_lapping_printer(\%result,-output=>"stdout");
    }
    return\% result;
}
General documentation
No general documentation available.