def epcr_threads(self, formattedprimers, ampliconsize=10000):
        for sample in self.metadata:
            if sample.general.bestassemblyfile != 'NA':
                threads = Thread(target=self.epcr, args=())
                threads.setDaemon(True)
                threads.start()
        logging.info('Running ePCR analyses')
        for sample in self.metadata:
            if sample.general.bestassemblyfile != 'NA':
                setattr(sample, self.analysistype, GenObject())
                sample[self.analysistype].primers = formattedprimers
                sample[self.analysistype].reportdir = os.path.join(sample.general.outputdirectory,
                                                                   self.analysistype)
                make_path(sample[self.analysistype].reportdir)
                outfile = os.path.join(sample[self.analysistype].reportdir, sample.name)
                sample.commands.famap = '{famap} -b {outfile}.famap {fasta}'\
                    .format(famap=os.path.join(self.homepath, 'ePCR', 'famap'),
                            outfile=outfile,
                            fasta=sample.general.bestassemblyfile)
                sample.commands.fahash = '{fahash} -b {outfile}.hash {outfile}.famap'\
                    .format(fahash=os.path.join(self.homepath, 'ePCR', 'fahash'),
                            outfile=outfile)
                sample.commands.epcr = \
                    '{rePCR} -S {outfile}.hash -r + -d 1-{ampsize} -n {mismatches} -g 0 -G -q ' \
                    '-o {outfile}.txt {primers}'\
                    .format(rePCR=os.path.join(self.homepath, 'ePCR', 're-PCR'),
                            outfile=outfile,
                            ampsize=ampliconsize,
                            mismatches=self.mismatches,
                            primers=sample[self.analysistype].primers)
                sample[self.analysistype].resultsfile = '{of}.txt'.format(of=outfile)
                self.epcrqueue.put((sample, outfile))
        self.epcrqueue.join()