Skip to content
Snippets Groups Projects
Commit d5b9c845 authored by Ian Longden's avatar Ian Longden
Browse files

reworked to work correctly

parent 95f6428a
No related merge requests found
......@@ -39,6 +39,8 @@ sub run {
$species_id = XrefParser::BaseParser->get_species_id_for_filename($file);
}
my $worm_source_id = XrefParser::BaseParser->get_source_id_for_source_name('wormbase_transcript');
my (%worm) = %{XrefParser::BaseParser->get_valid_codes("wormbase_transcript",$species_id)};
my (%swiss) = %{XrefParser::BaseParser->get_valid_codes("Uniprot",$species_id)};
......@@ -48,56 +50,66 @@ sub run {
my $sth = $dbi->prepare($sql);
my $sql2 = "select x2.accession, x2.xref_id ";
$sql2 .= "from dependent_xref d, xref x1, xref x2 ";
$sql2 .= "where d.master_xref_id = x1.xref_id and ";
$sql2 .= " d.dependent_xref_id = x2.xref_id and ";
$sql2 .= " x2.source_id = $worm_source_id and ";
$sql2 .= " x1.xref_id = ? and ";
$sql2 .= " x2.accession = ?";
my $sth2 = $dbi->prepare($sql2);
my $sql3 = 'delete from dependent_xref where dependent_xref.master_xref_id=? and dependent_xref.dependent_xref_id=?';
my $sth3 = $dbi->prepare($sql3);
open(PEP,"<".$file) || die "Could not open $file\n";
while (<PEP>) {
my ($transcript, $wb, $swiss_ref) = (split(/\t/,substr($_,1)))[0,1,5];
my $swiss_xref;
if($swiss_ref =~ /SW:(.*)/){
$swiss_ref = $1;
}
else{
$swiss_ref = 0 ;
}
if(length($wb) < 3){
print "ERRR:".$_;
}
#Is the transcript different from the gene
my $diff =0;
my $gene;
if($transcript =~ /(\S+\.\d+)/){
$gene = $1;
if($gene ne $transcript){
$diff=1;
}
}
else{
die "Gene format not recognised $transcript\n";
}
my $exists =0;
# if gene stored as transcript so change this
if(defined($worm{$gene}) and !defined($worm{$transcript})){
# change accesion to transcript name instead of gene
$sth->execute($transcript, $worm{$gene}) || die $dbi->errstr;
print "changing $gene to $transcript\n";
}
# if no record exists for this
elsif(!defined($worm{$gene}) and !defined($worm{$transcript})){
if($swiss_ref){
if(defined($swiss{$swiss_ref})){
XrefParser::BaseParser->add_to_xrefs($swiss{$swiss_ref},$transcript,'',$transcript,"","",$source_id,$species_id);
if(defined($swiss{$swiss_ref})){
$swiss_xref = $swiss{$swiss_ref};
my $diff =0;
my $gene;
if($transcript =~ /(\S+\.\d+)/){
$gene = $1;
if($gene ne $transcript){
$diff=1;
}
}
else{
print $swiss_ref." not found\n";
}
die "Gene format not recognised $transcript\n";
}
$sth2->execute($swiss_xref, $gene) || die $dbi->errstr;
(my $gene_acc, my $gene_xref) = $sth2->fetchrow_array();
$sth2->execute($swiss_xref, $transcript) || die $dbi->errstr;
(my $tran_acc, my $tran_xref) = $sth2->fetchrow_array();
my $create = 1;
if(defined($tran_xref)){ #okay
$create = 0;
}
elsif(defined($gene_xref)){
#need to delete dependency
#then add new one with correct name
$sth3->execute($swiss_xref, $gene_xref) || die $dbi->errstr;
print "removing $swiss_ref -> $gene : ";
}
if($create){
XrefParser::BaseParser->add_to_xrefs($swiss_xref,$transcript,'',$transcript,"","",$source_id,$species_id);
print "adding $swiss_ref -> $transcript\n";
}
}
}
}
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment