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
Ejemplo n.º 2
0
        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)
            print gene.getName()
            n += 1
            operonBankRD.add(operon)
            operon.setLeftBound(operon[0].getStart())
            operon.setRightBound(operon[-1].getEnd())
            operon.setOrientation()
            operon.setReads(readsList)
            print operon.getName()
            print str(operon)
            operon = Operon("operon_" + str(n + 1))

    j = 0
    while j < len(operonBankRD) -1:
        operon1 = operonBankRD[j]
        operon2 = operonBankRD[j+1]        
        boundFinder(operon1, operon2, readsList)
        print operon1.getName(), (operon1.getLeftBound(), operon1.getRightBound()), \
              round(operon1.getAverageRead(), 2)