def run(self): # Use newer local version of RNAfold call('RNALfold -T '+str(foldTemp)+' -d2 --noLP -L '+str(hairpinLength)+' < data/tmp/'+self.inPath+' > data/tmp/'+self.inPath+'.folds', shell=True) # Use older version of RNAfold # call('progs/ViennaRNA-1.8.5/Progs/RNALfold -T '+str(foldTemp)+' -d2 -noLP -L '+str(hairpinLength)+' < data/tmp/'+self.inPath+' > data/tmp/'+self.inPath+'.folds', shell=True) FoldOps.filter_hairpins('data/tmp/'+self.inPath+'.folds', 'data/tmp/'+self.inPath+'.hairpins', minMFE, basePairs) FileConversion.RNAL_to_fasta('data/tmp/'+self.inPath+'.hairpins', 'data/tmp/folds_from_'+self.inPath) sl = SequenceList() sl.load_fasta('data/tmp/folds_from_'+self.inPath) # sl.remove_all_redundant() sl.export_fasta('data/tmp/'+self.inPath+'nrhairpins') # Step one: turn the fasta into something that RNALfold will work with FastaOps.remove_newlines('data/'+inPath, 'data/tmp/'+inPath+'.fixed') FastaOps.convert_DNA_to_RNA('data/tmp/'+inPath+'.fixed', 'data/tmp/'+inPath+'.rna') # Step two: split the fasta for mutli-threaded processing FastaOps.split_fasta('data/tmp/'+inPath+'.rna', numThreads) # Step three: Launch threads threadPath = inPath threadExt = 'rna' threads = [] for i in range(numThreads): threads.append(myThread(threadPath+'.'+str(i)+'.'+threadExt)) for thread in threads: thread.start() for thread in threads: thread.join() FastaOps.merge_fasta('data/tmp/'+inPath+'.rnanrhairpins', numThreads) FastaOps.remove_AU('data/tmp/'+inPath+'.rnanrhairpins', 'data/tmp/'+inPath+'.hairpins.noAU', 5)