Esempio n. 1
0
def main(gff_file,bed_corrected):
    gff = Gff(gff_file)
    bed = Bed(bed_corrected)
    gffLength = gff.__len__()
    gff_index = 0
    info, before = '',''
    fp=open(gff_file+'.modified','w')
    for index in range(gffLength):
        item = gff.__getitem__(index)
        info = item.accn
        if item.accn != 'UNDEF':
            if item.type == 'gene':
                gene_bed = bed.__getitem__(gff_index).__str__().split('\t')[3]
                gene_list = gene_bed.split('|')
                paralist = item.accn.split(';')
                print(gene_bed, paralist)
                if len(gene_list) == 1 and len(paralist)==2:
                    gene1, gene2 = paralist[0].split(',')[0], paralist[1].split(',')[0]
                    if gene_bed == gene1:
                        item.__setattr__("accn", paralist[0])
                        before = paralist[0]
                    elif gene_bed == gene2:
                        item.__setattr__("accn", paralist[1])
                        before = paralist[1]
                    else:
                        before = item.accn
                else :
                    before = item.accn
                gff_index = gff_index + 1
            else:
                item.__setattr__("accn",before)
        else:
            pass
        fp.write(str(item)+'\n')
    fp.close()