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
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) j += 1