code: def parse_conpair_logs(self, f):
          
  
          conpair_regexes = {
              'concordance_concordance': r"Concordance: ([\d\.]+)%",
              'concordance_used_markers': r"Based on (\d+)/\d+ markers",
              'concordance_total_markers': r"Based on \d+/(\d+) markers",
              'concordance_marker_threshold': r"\(coverage per marker threshold : (\d+) reads\)",
              'concordance_min_mapping_quality': r"Minimum mappinq quality: (\d+)",
              'concordance_min_base_quality': r"Minimum base quality: (\d+)",
              'contamination_normal': r"Normal sample contamination level: ([\d\.]+)%",
              'contamination_tumor': r"Tumor sample contamination level: ([\d\.]+)%"
          }
  
          parsed_data = {}
          for k, r in conpair_regexes.items():
              match = re.search(r, f['f'])
              if match:
                  parsed_data[k] = float(match.group(1))
  
          def _cp_type(data):
              if 'concordance_concordance' in parsed_data:
                  return 'concordance'
              elif 'contamination_normal' in parsed_data:
                  return 'contamination'
  
          if len(parsed_data) > 0:
              if f['s_name'] in self.conpair_data:
                  if(_cp_type(self.conpair_data[f['s_name']]) == _cp_type(parsed_data)):
                      log.debug("Duplicate sample name found! Overwriting: {}".format(f['s_name']))
              else:
                  self.conpair_data[f['s_name']] = dict()
              self.add_data_source(f, section=_cp_type(parsed_data))
              self.conpair_data[f['s_name']].update(parsed_data)
docs: Go through log file looking for conpair concordance or contamination output
          One parser to rule them all.