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 branches found
No related tags found
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