This method is used to get project the genes annotated in the reference chromosome into the Haplotype regions.
sub addgenebuilder
{ my ($self,$arg,$target,$query) = @_;
if (defined($arg) && defined($target) && defined($query)) {
$self->{_genebuilder}{$target->id}{$query->id} = $arg;
}
else {
$self->throw("Wrong number of inputs [$arg,$target,$query]\n");
}
}
} |
sub fetch_input
{ my( $self) = @_;
$self->throw("No input id") unless defined($self->input_id);
my $discarded_db = $self->get_dbadaptor("DISCARDED_DB");
print "DISCARDED GENE DB: ", $discarded_db->dbname,"\n";
my $ref_db = $self->get_dbadaptor("REFERENCE_DB");
print "ENSEMBL DB : ", $ref_db->dbname,"\n";
print $self->input_id,"\n";
my @input_id = split(/:/,$self->input_id);
my $hap_slice = $ref_db->get_SliceAdaptor->fetch_by_region($input_id[0],$input_id[2],$input_id[3],$input_id[4],1,$input_id[1]);
my $slice = $ref_db->get_SliceAdaptor->fetch_by_region($input_id[5],$input_id[7],$input_id[8],$input_id[9],1,$input_id[6]);
print "HAP_slice: ",$hap_slice,"\n";
print "REF_slice: ",$slice,"\n";
$self->query($hap_slice);
$self->target($slice);
print "QUERY: ",$self->query->seq_region_name,"\n";
print "TARGET: ",$self->target->seq_region_name,"\n";
my $genebuilder = new Bio::EnsEMBL::Analysis::Runnable::HaplotypeMapper
(
'-hap_slice' => $self->query,
'-slice' => $self->target,
'-input_id' => $self->input_id,
);
$genebuilder->discarded_db($discarded_db);
$genebuilder->ensembl_db($ref_db);
$self->addgenebuilder($genebuilder,$self->target,$self->query);
}
} |
sub input_id
{ my ($self,$arg) = @_;
if (defined($arg)) {
$self->{_input_id} = $arg;
}
return $self->{_input_id};
}
} |
sub new
{ my ($class,@args) = @_;
my $self = $class->SUPER::new(@args);
return $self;
}
} |
sub output
{ my ($self, @output ) = @_;
unless ( $self->{_output} ){
$self->{_output} = [];
}
if (@output){
push( @{$self->{_output}}, @output );
}
return @{$self->{_output}};
}
} |
sub run
{ my ($self) = @_;
my @mapping;
my $genebuilders = $self->get_genebuilders;
foreach my $target (keys %{ $genebuilders } ) {
foreach my $query (keys %{$genebuilders->{$target}}){
$genebuilders->{$target}->{$query}->create_alignment;
$genebuilders->{$target}->{$query}->filter_alignment;
@mapping = $genebuilders->{$target}->{$query}->make_map_regions;
print "I got mappings: ",@mapping,"\n";
}
}
$self->output( @mapping );
}
} |
sub target
{ my ($self,$slice) = @_;
if (defined($slice)) {
$self->{_target} = $slice;
}
return $self->{_target};
}
1; } |
sub write_output
{ my($self,@mappings) = @_;
@mappings = $self->output;
print "REACH TEST 2 position\n";
print "now I have mappings: ",@mappings,"\n";
my $genebuilders = $self->get_genebuilders;
foreach my $target (keys %{ $genebuilders } ) {
foreach my $query (keys %{$genebuilders->{$target}}){
$genebuilders->{$target}->{$query}->load_tables(@mappings);
}
}
return 1;
}
} |
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _