def add_operon(self, feature_list, strand): ''' Appends a new operon object to the genome fragment. Parameters ---------- feature_list: list[GenomeFeature object] List of features belonging to the operon strand: string The strand, + or -, that the operon is located on. Returns ------- None ''' self.operons.append( Operon(genome_fragment_name=self.name, genome_accession=self.genome_accession, genome_features=self.all_features, strand=strand)) for f in feature_list: self.operons[-1].add_feature(f)
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
"""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) 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)