def operonFinder(geneBank, readsList):
    """Group genes into operons."""
         
    operon1 = Operon("operon_1")
    gene1 = geneBank[0]
    operon1.add(gene1)
    operonBank = OperonBank()
    operonBank.add(operon1)
 
    j = 0    
    for i in xrange(1, len(geneBank)):
        currentOperon = operonBank[-1]
        currentGene  = geneBank[i]
        previousGene = geneBank[i-1]
        if operonJudge(previousGene, currentGene, readsList) == False:
            currentOperon.add(currentGene)
        else:
            j += 1
            name = "operon_" + str(j + 1)
            operon = Operon(name)
            operon.add(currentGene)
            operonBank.add(operon)

    for operon in operonBank:
        operon.setOrientation()
        operon.setLeftBound(operon[0].getStart())
        operon.setRightBound(operon[-1].getEnd())
        operon.setReads(readsList)
        
    return operonBank
Exemplo n.º 2
0
    for operon in operonBank:
        gene = operon[-1]
        gap = geneBank.getIndex(gene.getName())
        if gap not in gapList:
            gapList.append(gap)
            n += 1
print "The number of after-gaps is: ", n
gapList.sort()
        

"""Group genes into operons based on the gap information """


for i in xrange(len(geneBankFiles)):
    geneBank = GeneBank(geneBankFiles[i])
    operonBankRD = OperonBank()
    with open(readsFiles[i], 'rU') as readsFile:
        reads = csv.reader(readsFile, delimiter='\t')
        readsList = []
        for row in reads:
            readsList.append(float(row[2]))
    
    
    n = 0
    operon = Operon("operon_" + str(n + 1))
    for gene in geneBank:        
        afterGap = gapList[n]
        if geneBank.getIndex(gene.getName()) < afterGap:
            operon.add(gene)
        elif geneBank.getIndex(gene.getName()) == afterGap:
            operon.add(gene)