From de1f6d9fd05945ed356c7ec3c036dcbefbe3f827 Mon Sep 17 00:00:00 2001 From: Web Admin <w3adm@sanger.ac.uk> Date: Fri, 24 Jan 2003 17:26:39 +0000 Subject: [PATCH] added xref "status" stuff to chromosome summaries, genes and transcripts --- modules/Bio/EnsEMBL/Chromosome.pm | 27 +++++++++++++++- modules/Bio/EnsEMBL/Gene.pm | 28 ++++++++++++++++ modules/Bio/EnsEMBL/Lite/ChromosomeAdaptor.pm | 21 ++++++------ modules/Bio/EnsEMBL/Lite/GeneAdaptor.pm | 32 +++++++++++++------ modules/Bio/EnsEMBL/Transcript.pm | 31 ++++++++++++++++++ 5 files changed, 119 insertions(+), 20 deletions(-) diff --git a/modules/Bio/EnsEMBL/Chromosome.pm b/modules/Bio/EnsEMBL/Chromosome.pm index 9363b55317..7a8e769989 100755 --- a/modules/Bio/EnsEMBL/Chromosome.pm +++ b/modules/Bio/EnsEMBL/Chromosome.pm @@ -53,6 +53,7 @@ use Bio::EnsEMBL::Root; -adaptor => $adaptor, -length => $length, -known_genes => $known_genes, + -xref_genes => $xref_genes, -unknown_genes => $unknown_genes, -snps => $snps); Description: Creates a new chromosome object @@ -70,12 +71,13 @@ sub new { bless($self, $class); my ( $chr_name, $chromosome_id, $adaptor, $length, - $known_genes, $unknown_genes, $snps) = + $known_genes, $xref_genes, $unknown_genes, $snps) = $self->_rearrange([qw(CHR_NAME DBID ADAPTOR LENGTH KNOWN_GENES + XREF_GENES UNKNOWN_GENES SNPS)], @args); @@ -89,6 +91,7 @@ sub new { $self->dbID($chromosome_id); $self->unknown_genes($unknown_genes); $self->length($length); + $self->xref_genes($xref_genes); $self->known_genes($known_genes); $self->snps($snps); @@ -187,6 +190,28 @@ sub length { +=head2 xref_genes + + Arg [1] : int $number_of_xref_genes + Example : none + Description: get/set for the attribute xref_genes, the number of xref genes + on this chromosome + Returntype : int + Exceptions : none + Caller : general + +=cut + +sub xref_genes { + my ($self, $xref_genes) = @_; + + if(defined $xref_genes) { + $self->{'xref_genes'} = $xref_genes; + } + + return $self->{'xref_genes'}; +} + =head2 known_genes Arg [1] : int $number_of_known_genes diff --git a/modules/Bio/EnsEMBL/Gene.pm b/modules/Bio/EnsEMBL/Gene.pm index a4501e917e..1c1adbc7c1 100755 --- a/modules/Bio/EnsEMBL/Gene.pm +++ b/modules/Bio/EnsEMBL/Gene.pm @@ -440,6 +440,34 @@ sub external_db { } } +=head2 external_status + + Arg [1] : string $external_status + Example : none + Description: get/set for attribute external_status. The status of + the external db of the one that belongs to the external_name. + Returntype : string + Exceptions : none + Caller : general + +=cut + +sub external_status { + my ( $self, $ext_status ) = @_; + + return $self->{'_ext_status'} = $ext_status if defined $ext_status; + return $self->{'_ext_status'} if exists $self->{'_ext_status'}; + + my $display_xref = $self->display_xref(); + + if( defined $display_xref ) { + return $display_xref->status() + } else { + return undef; + } +} + + =head2 description diff --git a/modules/Bio/EnsEMBL/Lite/ChromosomeAdaptor.pm b/modules/Bio/EnsEMBL/Lite/ChromosomeAdaptor.pm index 40bd433e76..02884b2f06 100644 --- a/modules/Bio/EnsEMBL/Lite/ChromosomeAdaptor.pm +++ b/modules/Bio/EnsEMBL/Lite/ChromosomeAdaptor.pm @@ -88,14 +88,14 @@ sub fetch_by_dbID { # from the database and add it to the cache. # unless($chr = $self->{'_chr_cache'}->{$id}) { - my $sth = $self->prepare( "SELECT name, known_genes, unknown_genes, + my $sth = $self->prepare( "SELECT name, known_genes, unknown_genes, xref_genes, snps, length FROM chromosome WHERE chromosome_id = ?" ); $sth->execute( $id ); - my($name, $known_genes, $unknown_genes, $snps, $length); - $sth->bind_columns(\$name,\$known_genes,\$unknown_genes,\$snps,\$length); + my($name, $known_genes, $unknown_genes, $snps, $length, $xref_genes); + $sth->bind_columns(\$name,\$known_genes,\$unknown_genes,\$xref_genes, \$snps,\$length); $sth->fetch(); @@ -112,6 +112,7 @@ sub fetch_by_dbID { -dbID => $id, -chr_name => $name, -known_genes => $known_genes, + -xref_genes => $xref_genes, -unknown_genes => $unknown_genes, -snps => $snps, '-length' => $length ); @@ -156,14 +157,14 @@ sub fetch_by_chr_name{ # from the database and add it to the cache. # unless($chr = $self->{'_chr_name_cache'}->{$chr_name}) { - my $sth = $self->prepare( "SELECT chromosome_id, known_genes, unknown_genes, + my $sth = $self->prepare( "SELECT chromosome_id, known_genes, unknown_genes, xref_genes, snps, length FROM chromosome WHERE name = ?" ); $sth->execute( $chr_name ); - my($dbID, $known_genes, $unknown_genes, $snps, $length); - $sth->bind_columns(\$dbID,\$known_genes,\$unknown_genes,\$snps,\$length); + my($name, $known_genes, $unknown_genes, $snps, $length, $xref_genes, $dbID); + $sth->bind_columns(\$dbID,\$known_genes,\$unknown_genes,\$xref_genes, \$snps,\$length); if ($sth->rows > 0) { $sth->fetch(); @@ -172,6 +173,7 @@ sub fetch_by_chr_name{ -dbID => $dbID, -chr_name => $chr_name, -known_genes => $known_genes, + -xref_genes => $xref_genes, -unknown_genes => $unknown_genes, -snps => $snps, '-length' => $length ); @@ -201,13 +203,13 @@ sub fetch_all { my @chrs = (); - my $sth = $self->prepare( "SELECT chromosome_id, name, known_genes, + my $sth = $self->prepare( "SELECT chromosome_id, name, known_genes, xref_genes, unknown_genes, snps, length FROM chromosome" ); $sth->execute(); - my($chromosome_id, $name, $known_genes, $unknown_genes, $snps, $length); - $sth->bind_columns(\$chromosome_id,\$name,\$known_genes, + my($chromosome_id, $name, $known_genes, $unknown_genes, $xref_genes, $snps, $length); + $sth->bind_columns(\$chromosome_id,\$name,\$known_genes,\$xref_genes, \$unknown_genes,\$snps,\$length); while($sth->fetch()) { @@ -216,6 +218,7 @@ sub fetch_all { -chr_name => $name, -dbID => $chromosome_id, -known_genes => $known_genes, + -xref_genes => $xref_genes, -unknown_genes => $unknown_genes, -snps => $snps, '-length' => $length ); diff --git a/modules/Bio/EnsEMBL/Lite/GeneAdaptor.pm b/modules/Bio/EnsEMBL/Lite/GeneAdaptor.pm index 327b1db98c..6e667562fa 100644 --- a/modules/Bio/EnsEMBL/Lite/GeneAdaptor.pm +++ b/modules/Bio/EnsEMBL/Lite/GeneAdaptor.pm @@ -182,10 +182,12 @@ sub fetch_all_by_Slice { my $sth = $self->prepare( "SELECT t.id, t.transcript_id, t.chr_name, t.chr_start, t.chr_end, t.chr_strand, t.transcript_name, t.translation_id, t.translation_name, t.gene_id, t.type, t.gene_name, t.db, - t.exon_structure, t.external_name, t.exon_ids, t.external_db, + t.exon_structure, t.external_name, t.external_status, t.exon_ids, t.external_db, t.coding_start, t.coding_end, g.external_name as gene_external_name, - g.external_db as gene_external_db, g.type as gene_type + g.external_db as gene_external_db, + g.external_status as gene_external_status, + g.type as gene_type FROM transcript t LEFT JOIN gene g ON g.gene_id = t.gene_id @@ -256,9 +258,10 @@ sub fetch_by_stable_id { ( "SELECT t.id, t.transcript_id, t.chr_name, t.chr_start, t.chr_end, t.chr_strand, t.transcript_name, t.translation_id, t.translation_name, t.gene_id, t.type, t.gene_name, - t.db, t.exon_structure, t.external_name, t.exon_ids, + t.db, t.exon_structure, t.external_name, t.external_status, t.exon_ids, t.external_db, t.coding_start, t.coding_end, g.external_name as gene_external_name, + g.external_status as gene_external_status, g.external_db as gene_external_db, g.type as gene_type FROM transcript t LEFT JOIN gene g @@ -291,9 +294,10 @@ sub fetch_by_transcript_stable_id { ( "SELECT t.id, t.transcript_id, t.chr_name, t.chr_start, t.chr_end, t.chr_strand, t.transcript_name, t.translation_id, t.translation_name, t.gene_id, t.type, t.gene_name, t.db, - t.exon_structure, t.external_name, t.exon_ids, + t.exon_structure, t.external_name, t.external_status, t.exon_ids, t.external_db, t.coding_start, t.coding_end, g.external_name as gene_external_name, + g.external_status as gene_external_status, g.external_db as gene_external_db, g.type as gene_type FROM transcript t LEFT JOIN gene g @@ -346,6 +350,7 @@ sub _objects_from_sth { $gene->strand( $hr->{'chr_strand'} ); if( defined $hr->{'gene_type' } ) { + $gene->external_name( $hr->{'gene_external_status'} ); $gene->external_name( $hr->{'gene_external_name'} ); $gene->external_db( $hr->{'gene_external_db'} ); $gene->type( $hr->{'gene_type'} ); @@ -482,6 +487,7 @@ sub _objects_from_sth { $transcript->coding_end( $coding_end ); $transcript->stable_id( $hr->{ 'transcript_name' }); $transcript->type( $hr->{ 'type' } ); + $transcript->external_status( $hr->{'external_status'} ); $transcript->external_name( $hr->{'external_name'} ); $transcript->external_db( $hr->{'external_db' } ); @@ -550,7 +556,7 @@ sub _get_empty_Genes { my $sth = $self->prepare ( "SELECT g.db, g.gene_id, g.gene_name, g.chr_name, g.chr_start, - g.chr_end, g.chr_strand, g.type, g.external_name, g.external_db + g.chr_end, g.chr_strand, g.type, g.external_name, g.external_db, g.external_status FROM gene g WHERE g.chr_name = ? AND g.chr_start <= ? AND g.chr_start >= ? AND g.chr_end >= ?" ); @@ -576,6 +582,7 @@ sub _get_empty_Genes { $gene->strand( $hashref->{'chr_strand'} ); if( defined $hashref->{'type' } ) { + $gene->external_status( $hashref->{'external_status'} ); $gene->external_name( $hashref->{'external_name'} ); $gene->external_db( $hashref->{'external_db'} ); $gene->type( $hashref->{'type'} ); @@ -629,10 +636,11 @@ sub fetch_all_by_external_name { my $sth = $self->prepare( "SELECT t.id, t.transcript_id, t.chr_name, t.chr_start, t.chr_end, t.chr_strand, t.transcript_name, t.translation_id, t.translation_name, t.gene_id, t.type, t.gene_name, t.db, - t.exon_structure, t.external_name, t.exon_ids, t.external_db, + t.exon_structure, t.external_name, t.exon_ids, t.external_db, t.external_status, t.coding_start, t.coding_end, g.external_name as gene_external_name, - g.external_db as gene_external_db, g.type as gene_type + g.external_db as gene_external_db, g.external_status as gene_external_status, + g.type as gene_type FROM transcript t, gene_xref as gx, gene as g where g.gene_id = t.gene_id AND g.db = t.db and t.db = ? and gx.external_name = ? and gx.gene_id = g.gene_id order by g.gene_name, t.gene_name" @@ -656,7 +664,7 @@ sub _get_empty_Genes_by_external_name { my $sth = $self->prepare( "SELECT distinct g.db, g.gene_id, g.gene_name, g.chr_name, g.chr_start, - g.chr_end, g.chr_strand, g.type, g.external_name, g.external_db + g.chr_end, g.chr_strand, g.type, g.external_name, g.external_db, g.external_status FROM gene g, gene_xref as gx WHERE g.gene_id = gx.gene_id and g.db = ? and gx.external_name = ?" ); @@ -678,6 +686,7 @@ sub _get_empty_Genes_by_external_name { $gene->strand( $hashref->{'chr_strand'} ); if( defined $hashref->{'type' } ) { + $gene->external_status( $hashref->{'external_status'} ); $gene->external_name( $hashref->{'external_name'} ); $gene->external_db( $hashref->{'external_db'} ); $gene->type( $hashref->{'type'} ); @@ -726,6 +735,7 @@ sub store { chr_strand = ?, description = ?, external_db = ?, + external_status = ?, external_name = ? " ); @@ -733,6 +743,7 @@ sub store { $gene->type(), $gene->dbID(), $gene->stable_id(), $gene->chr_name(), $gene->start(), $gene->end(), $gene->strand(), $gene->description(), $gene->external_db(), + $gene->external_status(), $gene->external_name() ); # now store transcripts @@ -757,7 +768,8 @@ sub store { gene_name = ?, exon_structure = ?, exon_ids = ?, - external_db = ?, + external_db = ?, + external_status = ?, external_name = ? " ); @@ -791,7 +803,7 @@ sub store { $tr->start(), $tr->end(), $gene->strand(), $tr->coding_start(), $tr->coding_end(), $tr->translation->dbID(), $tr->translation->stable_id(), $gene->dbID(), $gene->stable_id(), - $exon_structure, $exon_ids, $tr->external_db(), + $exon_structure, $exon_ids, $tr->external_db(), $tr->external_status(), $tr->external_name() ); } } diff --git a/modules/Bio/EnsEMBL/Transcript.pm b/modules/Bio/EnsEMBL/Transcript.pm index 7c37d21bc2..a41fb37123 100755 --- a/modules/Bio/EnsEMBL/Transcript.pm +++ b/modules/Bio/EnsEMBL/Transcript.pm @@ -182,6 +182,37 @@ sub external_db { } } +=head2 external_status + + Title : external_status + Usage : $ext_db = $obj->external_status(); + Function: external_name if available + Returns : the external db link for this transcript + Args : new external db (optional) + +=cut + +sub external_status { + my ( $self, $ext_status ) = @_; + + if(defined $ext_status) { + return ( $self->{'_ext_status'} = $ext_status ); + } + + if( exists $self->{'_ext_status'} ) { + return $self->{'_ext_status'}; + } + + my $display_xref = $self->display_xref(); + + if( defined $display_xref ) { + return $display_xref->status() + } else { + return undef; + } +} + + =head2 external_name -- GitLab