Setup and create threads for ePCR

def primers(self):
        """Setup and create threads for ePCR"""
        # Create the threads for the ePCR analysis
        for sample in self.metadata:
            if sample.general.bestassemblyfile != 'NA':
                threads = Thread(target=self.epcr, args=())
                threads.setDaemon(True)
                threads.start()
        for sample in self.metadata:
            if sample.general.bestassemblyfile != 'NA':
                setattr(sample, self.analysistype, GenObject())
                # Get the primers ready
                try:
                    sample[self.analysistype].primers = glob(os.path.join(self.reffilepath,
                                                                          self.analysistype,
                                                                          sample.general.referencegenus,
                                                                          'primers',
                                                                          '*.txt'))[0]
                    # Find the name of the probe file
                    sample[self.analysistype].probes = glob(os.path.join(self.reffilepath,
                                                                         self.analysistype,
                                                                         sample.general.referencegenus,
                                                                         'probes',
                                                                         '*.fa'))[0]
                    # Create the BLAST database of the probes (if necessary)
                    self.makeblastdb(sample[self.analysistype].probes)
                    # Initialise a list to store the names of the targets
                    sample[self.analysistype].targets = list()
                    # Open the primer file, and read the names of the targets into a list
                    with open(sample[self.analysistype].primers, 'r') as primerfile:
                        for line in primerfile:
                            sample[self.analysistype].targets.append(line.split('\t')[0])
                # Organisms without primer/probe files will fail. Populate metadata with 'NA' values
                except IndexError:
                    sample[self.analysistype].primers = 'NA'
                    sample[self.analysistype].probes = 'NA'
                # Only try to process organisms with primer files
                if sample[self.analysistype].primers != 'NA':
                    # Make the output path
                    sample[self.analysistype].reportdir = os.path.join(sample.general.outputdirectory,
                                                                       self.analysistype)
                    make_path(sample[self.analysistype].reportdir)
                    # Set the base name of the output file
                    outfile = sample[self.analysistype].reportdir + sample.name
                    # Set the hashing and mapping commands
                    sample.commands.famap = 'famap -b {}.famap {}.fasta'.format(outfile, sample.general.filenoext)
                    sample.commands.fahash = 'fahash -b {}.hash {}.famap'.format(outfile, outfile)
                    # re-PCR uses the subtyping primers list to search the contigs file using the following parameters
                    # -S {hash file} (Perform STS lookup using hash-file), -r + (Enable/disable reverse STS lookup)
                    # -m 10000 (Set variability for STS size for lookup),
                    # -n 1 (Set max allowed mismatches per primer for lookup)
                    # -g 0 (Set max allowed indels per primer for lookup),
                    # -G (Print alignments in comments), -o {output file}
                    sample.commands.epcr = 're-PCR -S {}.hash -r + -m 10000 -n 2 -g 0 -G -q -o {}.txt {}' \
                        .format(outfile, outfile, sample[self.analysistype].primers)
                    # Add the variables to the queue
                    self.epcrqueue.put((sample, outfile))
        self.epcrqueue.join()