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
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)