Raw content of SeqStoreConverter::vega::VBasicConverter
package SeqStoreConverter::vega::VBasicConverter;
use strict;
use warnings;
use SeqStoreConverter::BasicConverter;
use vars qw(@ISA);
@ISA = qw(SeqStoreConverter::BasicConverter);
sub remove_supercontigs {
my $self = shift;
my $target = $self->target();
my $dbh = $self->dbh();
$self->debug("Vega specific - removing supercontigs from $target");
$dbh->do("DELETE FROM $target.meta ".
"WHERE meta_value like '%supercontig%'");
$dbh->do("DELETE FROM $target.coord_system ".
"WHERE name like 'supercontig'");
$dbh->do("DELETE $target.a ".
"FROM $target.assembly a, $target.seq_region sr ".
"WHERE sr.coord_system_id = 2 ".
"and a.asm_seq_region_id = sr.seq_region_id");
$dbh->do("DELETE FROM $target.seq_region ".
"WHERE coord_system_id = 2");
}
sub copy_other_vega_tables {
my $self = shift;
$self->copy_tables(
# vega tables
"gene_synonym",
"transcript_info",
"current_gene_info",
"current_transcript_info",
"author",
"gene_name",
"transcript_class",
"gene_remark",
"gene_info",
"evidence",
"transcript_remark",
"clone_remark",
"clone_info",
"clone_info_keyword",
"assembly_tag",
);
eval { $self->copy_current_clone_info; };
warn $@ if $@;
}
sub copy_current_clone_info {
my $self=shift;
my $source = $self->source();
my $target = $self->target();
my $sth = $self->dbh()->prepare
("INSERT INTO $target.current_clone_info(clone_id,clone_info_id) SELECT * FROM $source.current_clone_info");
$sth->execute();
$sth->finish();
}
sub update_clone_info {
my $self = shift;
return;
}
sub copy_internal_clone_names {
my $self = shift;
return;
}
sub copy_assembly_exception {
my $self = shift;
# copy assembly_exception table
$self->debug('Vega specific - copying assembly_exception table');
$self->copy_tables('assembly_exception');
my $source = $self->source();
my $target = $self->target();
my $dbh = $self->dbh();
# fix seq_region_id in assembly_exception
$self->debug('Vega specific - Updating seq_region_id in assembly_exception table');
$dbh->do(qq(
UPDATE $target.assembly_exception, $target.tmp_chr_map
SET assembly_exception.seq_region_id = tmp_chr_map.new_id
WHERE assembly_exception.seq_region_id = tmp_chr_map.old_id
));
$dbh->do(qq(
UPDATE $target.assembly_exception, $target.tmp_chr_map
SET assembly_exception.exc_seq_region_id = tmp_chr_map.new_id
WHERE assembly_exception.exc_seq_region_id = tmp_chr_map.old_id
));
# fix seq_region.length if necessary (this is the case if you have an
# assembly_exception at the end of a chromosome)
my $sth1 = $dbh->prepare(qq(
UPDATE $target.seq_region SET length = ? WHERE seq_region_id = ?
));
my $sth2 = $dbh->prepare(qq(
SELECT
sr.seq_region_id,
sr.length,
max(ae.seq_region_end)
FROM
$target.seq_region sr,
$target.assembly_exception ae
WHERE sr.seq_region_id = ae.seq_region_id
GROUP BY ae.seq_region_id
));
$sth2->execute;
while (my ($sr_id, $sr_length, $max_ae_length) = $sth2->fetchrow_array) {
if ($max_ae_length > $sr_length) {
$self->debug(" Updating seq_region.length for $sr_id (old $sr_length, new $max_ae_length)");
$sth1->execute($max_ae_length, $sr_id);
}
}
}
# reset gene, transcript, gene_description and external_db tables back to 30
sub back_patch_schema {
my $self = shift;
$self->debug ("Patching gene, transcript, gene_description and external_db tables back to sch-30");
my $target = $self->target;
my $dbh = $self->dbh;
$dbh->do("DROP TABLE $target.gene");
$dbh->do( qq(CREATE TABLE $target.gene (
`gene_id` int(10) unsigned NOT NULL auto_increment,
`type` varchar(40) NOT NULL default '',
`analysis_id` int(11) default NULL,
`seq_region_id` int(10) unsigned NOT NULL default '0',
`seq_region_start` int(10) unsigned NOT NULL default '0',
`seq_region_end` int(10) unsigned NOT NULL default '0',
`seq_region_strand` tinyint(2) NOT NULL default '0',
`display_xref_id` int(10) unsigned default NULL,
PRIMARY KEY (`gene_id`),
KEY `seq_region_idx` (`seq_region_id`,`seq_region_start`),
KEY `xref_id_index` (`display_xref_id`),
KEY `analysis_idx` (`analysis_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
));
$dbh->do("DROP TABLE $target.transcript");
$dbh->do( qq(CREATE TABLE $target.transcript (
`transcript_id` int(10) unsigned NOT NULL auto_increment,
`gene_id` int(10) unsigned NOT NULL default '0',
`seq_region_id` int(10) unsigned NOT NULL default '0',
`seq_region_start` int(10) unsigned NOT NULL default '0',
`seq_region_end` int(10) unsigned NOT NULL default '0',
`seq_region_strand` tinyint(2) NOT NULL default '0',
`display_xref_id` int(10) unsigned default NULL,
PRIMARY KEY (`transcript_id`),
KEY `seq_region_idx` (`seq_region_id`,`seq_region_start`),
KEY `gene_index` (`gene_id`),
KEY `xref_id_index` (`display_xref_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
));
$dbh->do( qq(CREATE TABLE $target.gene_description (
`gene_id` int(10) unsigned NOT NULL default '0',
`description` text,
PRIMARY KEY (`gene_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
));
$dbh->do("DROP TABLE $target.external_db");
$dbh->do( qq(CREATE TABLE $target.external_db (
`external_db_id` int(11) NOT NULL default '0',
`db_name` varchar(100) NOT NULL default '',
`release` varchar(40) NOT NULL default '',
`status` enum('KNOWNXREF','KNOWN','XREF','PRED','ORTH','PSEUDO') NOT NULL default 'KNOWNXREF',
PRIMARY KEY (`external_db_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
));
}