None available.
sub _new
{ my ($self) = @_;
$self->SUPER::_new();
my $db = new Bio::EnsEMBL::DBSQL::DBAdaptor(
-HOST => $host,
-PORT => $port,
-USER => $user,
-PASS => $pass,
-DBNAME => $dbname);
$self->attr('db_adaptor',$db); } |
sub getDisplayNames
{ my $self = shift;
my @displayNames = $self->getTextDisplayNames();
foreach(@displayNames) {
if($_ !~ /\A[\d\.]+\z/ && $_ =~ /$FIELD_DELIMITER/) {
$_ =~ s/$FIELD_ENCLOSER/\$FIELD_ENCLOSER/g;
$_ = $FIELD_ENCLOSER . $_ . $FIELD_ENCLOSER;
}
}
return join($FIELD_DELIMITER, @displayNames) . $RECORD_DELIMITER;
}
1; } |
sub nextRow
{ my $self = shift;
my $rtable = $self->get('result_table');
my $row = $rtable->nextRow;
if (!$row){
return;
}
my $chromosome = $$row[-1];
my $strand = $$row[-2];
my @atts_to_convert = qw(
start_position
end_position
transcript_start
transcript_end
feat_chr_start
feat_chr_end
gene_chrom_start
gene_chrom_end
transcript_chrom_start
transcript_chrom_end
exon_chrom_start
exon_coding_end
exon_chrom_end
exon_coding_start
chromosome_location
);
my $attribute_order = $self->get('original_attributes');
my $attribute_number = 0;
my ($orig_attribute,$position,$new_position);
foreach (@$attribute_order){
$orig_attribute = $_->name;
foreach (@atts_to_convert){
if ($orig_attribute eq $_){
$position = $$row[$attribute_number];
next if (!$position);
my $db = $self->get('db_adaptor');
my $sa = $db->get_SliceAdaptor();
my $analysis = new Bio::EnsEMBL::Analysis(
-LOGIC_NAME => 'your_analysis'
);
my $slice_oldasm = $sa->fetch_by_region('chromosome', $chromosome, undef, undef,
undef, $current_assembly);
my $feat = Bio::EnsEMBL::SimpleFeature->new(
-DISPLAY_LABEL => '',
-START => $position,
-END => $position,
-STRAND => $strand,
-SLICE => $slice_oldasm,
-ANALYSIS => $analysis,
);
my $feat_slice = $feat->feature_Slice;
my @segments;
if ($feat_slice){
@segments = @{ $feat->feature_Slice->project('chromosome', $new_assembly) };
}
if (scalar(@segments) != 1){
$new_position = '-';
}
elsif ($segments[0]->to_Slice()->length != $feat->length){
$new_position = '-';
}
elsif ($segments[0]->to_Slice()->seq_region_name ne $feat->slice->seq_region_name){
$new_position = '-';
}
else{
$new_position = $segments[0]->to_Slice()->start;
}
$$row[$attribute_number] = $new_position;
}
}
$attribute_number++;
}
my $new_row_length = @$row - 3;
$row = [@$row[0..$new_row_length]];
foreach(@{$row}) {
$_ = q{} unless defined ($_);
if($_ !~ /\A[\d\.]+\z/ && $_ =~ /$FIELD_DELIMITER/) {
$_ =~ s/$FIELD_ENCLOSER/\$FIELD_ENCLOSER/g;
$_ = $FIELD_ENCLOSER . $_ . $FIELD_ENCLOSER;
}
}
return join($FIELD_DELIMITER, @{$row}) . $RECORD_DELIMITER; } |
sub processQuery
{ my ($self, $query) = @_;
$self->set('original_attributes',[@{$query->getAllAttributes()}])
if ($query->getAllAttributes());
$query->addAttribute('strand');
$query->addAttribute('chromosome_name');
$self->set('query',$query);
return $query; } |