Dear all now I'm writing small script for adding feature to genbank file
"
from Bio import SeqIO
from Bio.SeqFeature import SeqFeature, FeatureLocation
record = SeqIO.read("mirum.gbk", "genbank")
for sub_feature in record.features:
for seq_record in SeqIO.parse("mirum_ort.fasta", "fasta"):
dbxref = sub_feature.qualifiers.get("db_xref")
if dbxref == seq.record:
dbxref.append("ortholog")
"
But in general it's working without appending new feature in bioperl I've written such script which is looking like
"
use Bio::SeqIO;
$| = 1;
my $seqio_object = Bio::SeqIO->new(-file => "mirum.gbk" );
my $seq_object = $seqio_object->next_seq;
for my $feat_object ($seq_object->get_SeqFeatures)
{
for my $tag ($feat_object->get_all_tags)
{
if ($tag eq "db_xref")
{
for my $value ($feat_object->get_tag_values($tag))
{
if ($value =~ m/^([0-9]+)/)
{
my $gi_gbk = "$1";
my $seqio_object_fasta = Bio::SeqIO->new(-file =>"mirum_ort.fasta" );
while (my $seq_object_fasta = $seqio_object_fasta->next_seq)
{
my $gi_fasta = $seq_object_fasta->id();
$gi_fasta =~ s/^gi\|([0-9]+)\|ref.*$/$1/;
if ($gi_gbk eq $gi_fasta)
{
my $misc_feat = new Bio::SeqFeature::Generic(-start => $feat_object->location->start(), -end => $feat_object->location->end(), -strand => $feat_object->location->strand(), -primary$
$seq_object->add_SeqFeature($misc_feat);
}
}
}
}
}
}
}
my $seqio_object_out = Bio::SeqIO->new(-file => ">mirum_ort.gbk" );
$seqio_object_out->write_seq($seq_object);
"
But my interest is to write it in Biopython
What could You advice me to change in this script
Thank You
If you want to add a new feature, make a SeqFeature object. instead it looks like you are trying to add a database cross reference.
I really cannot answer, but I'm curious: why are you doing this? Thx
thnx you Peter ,you comment auiqte good in this situation