code: def epcrparsethreads(self):
          
          from Bio import SeqIO
          # Create the threads for the BLAST analysis
          for sample in self.metadata:
              if sample.general.bestassemblyfile != 'NA':
                  threads = Thread(target=self.epcrparse, args=())
                  threads.setDaemon(True)
                  threads.start()
          for sample in self.metadata:
              if sample.general.bestassemblyfile != 'NA':
                  if sample[self.analysistype].primers != 'NA':
                      # Initialise a dictionary to store the SeqIO records of each assembly
                      record = dict()
                      # Initialise dictionaries to store results in the object
                      sample[self.analysistype].blastresults = dict()
                      sample[self.analysistype].rawblastresults = dict()
                      # Load the records from the assembly into the dictionary
                      for rec in SeqIO.parse(sample.general.bestassemblyfile, 'fasta'):
                          record[rec.id] = str(rec.seq)
                      # Iterate through the ePCR results
                      for line in sample[self.analysistype].epcrresults:
                          # The data of interest is in the lines that do not start with a #
                          # TLH 2016-SEQ-0359_4_length_321195_cov_28.6354_ID_3773 + 227879 228086 0	0 208/1000-1000
                          if not line.startswith('#'):
                              # Add the variables to the queue
                              self.epcrparsequeue.put((sample, record, line))
          self.epcrparsequeue.join()
docs: Parse the ePCR results, and run BLAST on the parsed results