Newer
Older
from BCBio import GFF
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.SeqFeature import SeqFeature, FeatureLocation
from gt.core import *
from gt.extended import *
from gt.annotationsketch import *
from gt.annotationsketch.custom_track import CustomTrack
from gt.core.gtrange import Range
import sys
style = {}
def geneToGFF(gene):
#insert gene
rec = SeqRecord(gene['Sequence'], gene['ID'])
qualifiers = {'ID': gene['ID']}
features = []
features.append(SeqFeature(FeatureLocation(0, len(gene['Sequence'])), type='gene', strand=1, qualifiers=qualifiers))
features[0].sub_features = []
#insert LTR finder results
for transposon in gene['LTR_finder']:
features[0].sub_features.append(SeqFeature(FeatureLocation(transposon['Location'][0], transposon['Location'][1]),
type='LTR_finder_TE', strand=1))
rec.features = features
#possible other formats as well
with open('data/' + gene['ID'] + '.gff', 'w+') as out_handle:
gff = GFF.write([rec], out_handle)
style.load_file('gt.style')
#Feature index
feature_index = FeatureIndexMemory()
#add gff file
feature_index.add_gff3file('data/' + gene['ID'] + '.gff')
#create diagram for first sequence ID
seqid = feature_index.get_first_seqid()
range = feature_index.get_range_for_seqid(seqid)
diagram = Diagram.from_index(feature_index, seqid, range, style)
#create layout