From cb382499e8875bdc32d93b1984dcd40097dac639 Mon Sep 17 00:00:00 2001 From: Arne Stabenau <stabenau@sanger.ac.uk> Date: Thu, 9 Dec 2004 18:14:15 +0000 Subject: [PATCH] added support for created_date and modified_date in gene,exon,transcript and translation --- modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm | 35 ++++++++++---- modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm | 30 +++++++++--- .../Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm | 28 +++++++++-- .../Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm | 47 ++++++++++++++----- modules/Bio/EnsEMBL/Exon.pm | 22 ++++++++- modules/Bio/EnsEMBL/Gene.pm | 22 ++++++++- modules/Bio/EnsEMBL/Transcript.pm | 22 +++++++-- modules/Bio/EnsEMBL/Translation.pm | 20 +++++++- 8 files changed, 186 insertions(+), 40 deletions(-) diff --git a/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm index ef39b4f46f..6b9af24e11 100644 --- a/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm @@ -82,7 +82,8 @@ sub _columns { return qw( e.exon_id e.seq_region_id e.seq_region_start e.seq_region_end e.seq_region_strand e.phase e.end_phase - esi.stable_id esi.version ); + esi.stable_id esi.version UNIX_TIMESTAMP(created_date) + UNIX_TIMESTAMP(modified_date) ); } @@ -250,12 +251,26 @@ sub store { #store any stable_id information if ($exon->stable_id && $exon->version()) { - my $sth = $self->prepare( + + my $statement = "INSERT INTO exon_stable_id " . - "SET version = ?, " . + "SET version = ?, " . "stable_id = ?, " . - "exon_id = ?"); + "exon_id = ?"; + + if( $exon->created_date() ) { + $statement .= "created_date = from_unixtime( ".$exon->created_date()."),"; + } else { + $statement .= "created_date = \"0000-00-00 00:00:00\","; + } + + if( $exon->modified_date() ) { + $statement .= "modified_date = from_unixtime( ".$exon->modified_date().")"; + } else { + $statement .= "modified_date = \"0000-00-00 00:00:00\""; + } + my $sth = $self->prepare( $statement ); $sth->execute( $exon->version, $exon->stable_id, $exonId ); } @@ -451,12 +466,14 @@ sub _objs_from_sth { my ( $exon_id, $seq_region_id, $seq_region_start, $seq_region_end, $seq_region_strand, $phase, - $end_phase, $stable_id, $version ); + $end_phase, $stable_id, $version, $created_date, + $modified_date ); $sth->bind_columns( \$exon_id, \$seq_region_id, - \$seq_region_start, - \$seq_region_end, \$seq_region_strand, \$phase, - \$end_phase, \$stable_id, \$version ); + \$seq_region_start, + \$seq_region_end, \$seq_region_strand, \$phase, + \$end_phase, \$stable_id, \$version, \$created_date, + \$modified_date ); my $asm_cs; my $cmp_cs; @@ -574,6 +591,8 @@ sub _objs_from_sth { '-dbID' => $exon_id, '-stable_id' => $stable_id, '-version' => $version, + '-created_date' => $created_date || undef, + '-modified_date' => $modified_date || undef, '-phase' => $phase, '-end_phase' => $end_phase ) diff --git a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm index 4a8458a7a7..cb9c57c80d 100644 --- a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm @@ -92,9 +92,10 @@ sub _columns { return qw( g.gene_id g.seq_region_id g.seq_region_start g.seq_region_end g.seq_region_strand g.analysis_id g.type g.display_xref_id - gd.description gsi.stable_id gsi.version x.display_label - x.dbprimary_acc x.description x.version exdb.db_name exdb.status - exdb.release ); + gd.description gsi.stable_id gsi.version UNIX_TIMESTAMP(gsi.created_date) + UNIX_TIMESTAMP(gsi.modified_date) + x.display_label x.dbprimary_acc x.description x.version + exdb.db_name exdb.status exdb.release ); } @@ -776,10 +777,21 @@ sub store { my $statement = "INSERT INTO gene_stable_id SET gene_id = ?, stable_id = ?, - version = ?"; + version = ?, "; + if( $gene->created_date() ) { + $statement .= "created_date = from_unixtime( ".$gene->created_date()."),"; + } else { + $statement .= "created_date = \"0000-00-00 00:00:00\","; + } + + if( $gene->modified_date() ) { + $statement .= "modified_date = from_unixtime( ".$gene->modified_date().")"; + } else { + $statement .= "modified_date = \"0000-00-00 00:00:00\""; + } $sth = $self->prepare($statement); - $sth->execute( $gene_dbID, $gene->stable_id(), $gene->version() ); + $sth->execute( $gene_dbID, $gene->stable_id(), $gene->version()); $sth->finish(); } @@ -1085,14 +1097,16 @@ sub _objs_from_sth { my ( $gene_id, $seq_region_id, $seq_region_start, $seq_region_end, $seq_region_strand, $analysis_id, $type, $display_xref_id, - $gene_description, $stable_id, $version, $xref_display_id, + $gene_description, $stable_id, $version, $created_date, + $modified_date, $xref_display_id, $xref_primary_acc, $xref_desc, $xref_version, $external_name, $external_db, $external_status, $external_release ); $sth->bind_columns( \$gene_id, \$seq_region_id, \$seq_region_start, \$seq_region_end, \$seq_region_strand, \$analysis_id, \$type, \$display_xref_id, \$gene_description, \$stable_id, \$version, - \$xref_display_id, \$xref_primary_acc, \$xref_desc, \$xref_version, + \$created_date, \$modified_date, + \$xref_display_id, \$xref_primary_acc, \$xref_desc, \$xref_version, \$external_db, \$external_status, \$external_release ); @@ -1217,6 +1231,8 @@ sub _objs_from_sth { '-dbID' => $gene_id, '-stable_id' => $stable_id, '-version' => $version, + '-created_date' => $created_date || undef, + '-modified_date' => $modified_date || undef, '-description' => $gene_description, '-external_name' => $external_name, '-external_db' => $external_db, diff --git a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm index 815f1fdbcd..322cfe2c62 100644 --- a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm @@ -99,7 +99,8 @@ sub _columns { return qw( t.transcript_id t.seq_region_id t.seq_region_start t.seq_region_end t.seq_region_strand t.gene_id - t.display_xref_id tsi.stable_id tsi.version + t.display_xref_id tsi.stable_id tsi.version UNIX_TIMESTAMP(created_date) + UNIX_TIMESTAMP(modified_date) x.display_label exdb.db_name exdb.status ); } @@ -653,8 +654,23 @@ sub store { } my $statement = - "INSERT INTO transcript_stable_id(transcript_id,stable_id,version)" . - " VALUES(?, ?, ?)"; + "INSERT INTO transcript_stable_id ". + "SET transcript_id = ?, ". + " stable_id = ?, ". + "version = ?, "; + + if( $transcript->created_date() ) { + $statement .= "created_date = from_unixtime( ".$transcript->created_date()."),"; + } else { + $statement .= "created_date = \"0000-00-00 00:00:00\","; + } + + if( $transcript->modified_date() ) { + $statement .= "modified_date = from_unixtime( ".$transcript->modified_date().")"; + } else { + $statement .= "modified_date = \"0000-00-00 00:00:00\""; + } + my $sth = $self->prepare($statement); $sth->execute($transc_dbID, $transcript->stable_id, $transcript->version); $sth->finish(); @@ -929,12 +945,12 @@ sub _objs_from_sth { my ( $transcript_id, $seq_region_id, $seq_region_start, $seq_region_end, $seq_region_strand, $gene_id, - $display_xref_id, $stable_id, $version, + $display_xref_id, $stable_id, $version, $created_date, $modified_date, $external_name, $external_db, $external_status ); $sth->bind_columns( \$transcript_id, \$seq_region_id, \$seq_region_start, \$seq_region_end, \$seq_region_strand, \$gene_id, - \$display_xref_id, \$stable_id, \$version, + \$display_xref_id, \$stable_id, \$version, \$created_date, \$modified_date, \$external_name, \$external_db, \$external_status ); @@ -1067,6 +1083,8 @@ sub _objs_from_sth { '-dbID' => $transcript_id, '-stable_id' => $stable_id, '-version' => $version, + '-created_date' => $created_date || undef, + '-modified_date' => $modified_date || undef, '-external_name' => $external_name, '-external_db' => $external_db, '-external_status' => $external_status, diff --git a/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm index 57e407a4c6..a245bb9922 100644 --- a/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm @@ -78,7 +78,8 @@ sub fetch_by_Transcript { my $sql = " SELECT tl.translation_id, tl.start_exon_id, tl.end_exon_id, tl.seq_start, tl.seq_end, - tlsi.stable_id, tlsi.version + tlsi.stable_id, tlsi.version, UNIX_TIMESTAMP(tlsi.created_date), + UNIX_TIMESTAMP(tlsi.modified_date) FROM translation tl LEFT JOIN translation_stable_id tlsi ON tlsi.translation_id = tl.translation_id @@ -89,8 +90,9 @@ sub fetch_by_Transcript { $sth->execute( $transcript_id ); my ( $translation_id, $start_exon_id, $end_exon_id, - $seq_start, $seq_end, $stable_id, $version ) = - $sth->fetchrow_array(); + $seq_start, $seq_end, $stable_id, $version, $created_date, + $modified_date ) = + $sth->fetchrow_array(); $sth->finish; if( ! defined $translation_id ) { return undef; @@ -124,7 +126,9 @@ sub fetch_by_Transcript { -start_exon => $start_exon, -end_exon => $end_exon, -stable_id => $stable_id, - -version => $version + -version => $version, + -created_date => $created_date || undef, + -modified_date => $modified_date || undef ); return $translation; @@ -235,9 +239,25 @@ sub store { throw("Trying to store incomplete stable id information for translation"); } - my $sth = $self->prepare - ("INSERT INTO translation_stable_id(translation_id, stable_id, version)". - " VALUES (?, ?, ?)"); + my $statement = + "INSERT INTO translation_stable_id ". + "SET translation_id = ?, ". + " stable_id = ?, ". + "version = ?, "; + + if( $translation->created_date() ) { + $statement .= "created_date = from_unixtime( ".$translation->created_date()."),"; + } else { + $statement .= "created_date = \"0000-00-00 00:00:00\","; + } + + if( $translation->modified_date() ) { + $statement .= "modified_date = from_unixtime( ".$translation->modified_date().")"; + } else { + $statement .= "modified_date = \"0000-00-00 00:00:00\""; + } + + my $sth = $self->prepare($statement); $sth->execute($transl_dbID, $translation->stable_id(), $translation->version()); @@ -463,7 +483,8 @@ sub fetch_all_by_Transcript_list { my $max_size = 200; my ( $tr_id,$tl_id, $start_exon_id, $end_exon_id, - $seq_start, $seq_end, $stable_id, $version ); + $seq_start, $seq_end, $stable_id, $version, + $created_date, $modified_date ); my %ex_hash; @@ -485,7 +506,8 @@ sub fetch_all_by_Transcript_list { my $sth = $self->prepare ("SELECT tl.transcript_id, tl.translation_id, tl.start_exon_id, tl.end_exon_id, tl.seq_start, tl.seq_end, - tlsi.stable_id, tlsi.version + tlsi.stable_id, tlsi.version, UNIX_TIMESTAMP(tlsi.created_date), + UNIX_TIMESTAMP(tlsi.modified_date) FROM translation tl LEFT JOIN translation_stable_id tlsi ON tlsi.translation_id = tl.translation_id @@ -494,7 +516,8 @@ sub fetch_all_by_Transcript_list { $sth->execute(); $sth->bind_columns( \$tr_id, \$tl_id, \$start_exon_id, \$end_exon_id, - \$seq_start, \$seq_end, \$stable_id, \$version ); + \$seq_start, \$seq_end, \$stable_id, \$version, + \$created_date, \$modified_date ); while($sth->fetch()) { my ($start_exon, $end_exon); @@ -528,7 +551,9 @@ sub fetch_all_by_Transcript_list { -start_exon => $start_exon, -end_exon => $end_exon, -stable_id => $stable_id, - -version => $version); + -version => $version, + -created_date => $created_date || undef, + -modified_date => $modified_date || undef); $tr->translation($tl); diff --git a/modules/Bio/EnsEMBL/Exon.pm b/modules/Bio/EnsEMBL/Exon.pm index e0e448b24b..112e97336d 100755 --- a/modules/Bio/EnsEMBL/Exon.pm +++ b/modules/Bio/EnsEMBL/Exon.pm @@ -81,13 +81,16 @@ sub new { my $self = $class->SUPER::new( @_ ); - my ( $phase, $end_phase, $stable_id, $version ) = - rearrange( [ "PHASE", "END_PHASE", "STABLE_ID", "VERSION" ], @_ ); + my ( $phase, $end_phase, $stable_id, $version, $created_date, $modified_date ) = + rearrange( [ "PHASE", "END_PHASE", "STABLE_ID", "VERSION", + "CREATED_DATE", "MODIFIED_DATE" ], @_ ); $self->{'phase'} = $phase; $self->{'end_phase'} = $end_phase; $self->{'stable_id'} = $stable_id; $self->{'version'} = $version; + $self->{'created_date'} = $created_date; + $self->{'modified_date'} = $modified_date; return $self; } @@ -590,6 +593,21 @@ sub stable_id { } +sub created_date { + my $self = shift; + $self->{'created_date'} = shift if ( @_ ); + return $self->{'created_date'}; +} + + +sub modified_date { + my $self = shift; + $self->{'modified_date'} = shift if ( @_ ); + return $self->{'modified_date'}; +} + + + =head2 version Arg [1] : string $version diff --git a/modules/Bio/EnsEMBL/Gene.pm b/modules/Bio/EnsEMBL/Gene.pm index 58a06b84f4..722f17f42e 100755 --- a/modules/Bio/EnsEMBL/Gene.pm +++ b/modules/Bio/EnsEMBL/Gene.pm @@ -59,10 +59,11 @@ sub new { my $self = $class->SUPER::new(@_); my ( $stable_id, $version, $external_name, $type, $external_db, - $external_status, $display_xref, $description, $transcripts ) = + $external_status, $display_xref, $description, $transcripts, + $created_date, $modified_date ) = rearrange( [ 'STABLE_ID', 'VERSION', 'EXTERNAL_NAME', 'TYPE', 'EXTERNAL_DB', 'EXTERNAL_STATUS', 'DISPLAY_XREF', 'DESCRIPTION', - 'TRANSCRIPTS'], @_ ); + 'TRANSCRIPTS', 'CREATED_DATE', 'MODIFIED_DATE'], @_ ); if ($transcripts) { $self->{'_transcript_array'} = $transcripts; @@ -71,6 +72,9 @@ sub new { $self->stable_id( $stable_id ); $self->version( $version ); + $self->{'created_date'} = $created_date; + $self->{'modified_date'} = $modified_date; + $self->external_name( $external_name ) if( defined $external_name ); $self->external_db( $external_db ) if( defined $external_db ); $self->external_status( $external_status ) if( defined $external_status ); @@ -469,6 +473,20 @@ sub stable_id{ } +sub created_date { + my $self = shift; + $self->{'created_date'} = shift if ( @_ ); + return $self->{'created_date'}; +} + + +sub modified_date { + my $self = shift; + $self->{'modified_date'} = shift if ( @_ ); + return $self->{'modified_date'}; +} + + =head2 transform Arg 1 : String $coordinate_system_name diff --git a/modules/Bio/EnsEMBL/Transcript.pm b/modules/Bio/EnsEMBL/Transcript.pm index 76aa0d5861..d9c2994b12 100755 --- a/modules/Bio/EnsEMBL/Transcript.pm +++ b/modules/Bio/EnsEMBL/Transcript.pm @@ -100,7 +100,7 @@ sub new { my $self = $class->SUPER::new(@_); my ( $exons, $stable_id, $version, $external_name, $external_db, - $external_status, $display_xref ); + $external_status, $display_xref, $created_date, $modified_date ); #catch for old style constructor calling: if((@_ > 0) && ref($_[0])) { @@ -111,9 +111,10 @@ sub new { } else { ( $exons, $stable_id, $version, $external_name, $external_db, - $external_status, $display_xref ) = + $external_status, $display_xref, $created_date, $modified_date ) = rearrange( [ "EXONS", 'STABLE_ID', 'VERSION', 'EXTERNAL_NAME', - 'EXTERNAL_DB', 'EXTERNAL_STATUS', 'DISPLAY_XREF' ], @_ ); + 'EXTERNAL_DB', 'EXTERNAL_STATUS', 'DISPLAY_XREF', + 'CREATED_DATE', 'MODIFIED_DATE' ], @_ ); } if( $exons ) { @@ -123,6 +124,8 @@ sub new { $self->stable_id( $stable_id ); $self->version( $version ); + $self->{'created_date'} = $created_date; + $self->{'modified_date'} = $modified_date; $self->external_name( $external_name ) if( defined $external_name ); $self->external_db( $external_db ) if( defined $external_db ); $self->external_status( $external_status ) if( defined $external_status ); @@ -1421,6 +1424,19 @@ sub stable_id{ return $self->{'stable_id'}; } +sub created_date { + my $self = shift; + $self->{'created_date'} = shift if ( @_ ); + return $self->{'created_date'}; +} + + +sub modified_date { + my $self = shift; + $self->{'modified_date'} = shift if ( @_ ); + return $self->{'modified_date'}; +} + =head2 swap_exons diff --git a/modules/Bio/EnsEMBL/Translation.pm b/modules/Bio/EnsEMBL/Translation.pm index 2a49baa806..7e6ef7740f 100755 --- a/modules/Bio/EnsEMBL/Translation.pm +++ b/modules/Bio/EnsEMBL/Translation.pm @@ -74,10 +74,11 @@ sub new { my $class = ref($caller) || $caller; my ( $start_exon, $end_exon, $seq_start, $seq_end, - $stable_id, $version, $dbID, $adaptor, $seq ) = + $stable_id, $version, $dbID, $adaptor, $seq, + $created_date, $modified_date ) = rearrange( [ "START_EXON", "END_EXON", "SEQ_START", "SEQ_END", "STABLE_ID", "VERSION", "DBID", "ADAPTOR", - "SEQ" ], @_ ); + "SEQ", "CREATED_DATE", "MODIFIED_DATE" ], @_ ); my $self = bless { 'start_exon' => $start_exon, @@ -88,6 +89,8 @@ sub new { 'end' => $seq_end, 'stable_id' => $stable_id, 'version' => $version, + 'created_date' => $created_date, + 'modified_date' => $modified_date, 'seq' => $seq }, $class; @@ -235,6 +238,19 @@ sub stable_id { return $self->{'stable_id'}; } +sub created_date { + my $self = shift; + $self->{'created_date'} = shift if ( @_ ); + return $self->{'created_date'}; +} + + +sub modified_date { + my $self = shift; + $self->{'modified_date'} = shift if ( @_ ); + return $self->{'modified_date'}; +} + =head2 transform -- GitLab