docs: def parse_qcmetrics(metrics: dict) -> dict:
      """Parse MIP qc metrics file.
      Args:
          metrics (dict): raw YAML input from MIP qc metrics file
  
      Returns:
          dict: parsed data
      """
      data = {
          'versions': {
              'freebayes': metrics['program']['freebayes']['version'],
              'gatk': metrics['program']['gatk']['version'],
              'manta': metrics['program'].get('manta', {}).get('version'),
              'bcftools': metrics['program']['bcftools']['version'],
              'vep': metrics['program']['varianteffectpredictor']['version'],
          },
          'samples': [],
      }
  
      plink_samples = {}
      plink_sexcheck = metrics['program'].get('plink_sexcheck', {}).get('sample_sexcheck')
      if isinstance(plink_sexcheck, str):
          sample_id, sex_number = plink_sexcheck.strip().split(':', 1)
          plink_samples[sample_id] = PED_SEX_MAP.get(int(sex_number))
      elif isinstance(plink_sexcheck, list):
          for sample_raw in plink_sexcheck:
              sample_id, sex_number = sample_raw.split(':', 1)
              plink_samples[sample_id] = PED_SEX_MAP.get(int(sex_number))
  
      for sample_id, sample_metrics in metrics['sample'].items():
  
          ## Bam stats metrics
          bam_stats = [values['bamstats'] for key, values in sample_metrics.items()
                       if key[:-1].endswith('.lane')]
          total_reads = sum(int(bam_stat['raw_total_sequences']) for bam_stat in bam_stats)
          total_mapped = sum(int(bam_stat['reads_mapped']) for bam_stat in bam_stats)
  
          ## Picard metrics
          main_key = [key for key in sample_metrics.keys() if '_lanes_' in key][0]
  
          hs_metrics = sample_metrics[main_key]['collecthsmetrics']['header']['data']
          multiple_inst_metrics = sample_metrics[main_key]['collectmultiplemetricsinsertsize']['header']['data']
          multiple_metrics = sample_metrics[main_key]['collectmultiplemetrics']['header']['pair']
  
          sample_data = {
              'at_dropout': hs_metrics['AT_DROPOUT'],
              'completeness_target': {
                  10: hs_metrics['PCT_TARGET_BASES_10X'],
                  20: hs_metrics['PCT_TARGET_BASES_20X'],
                  50: hs_metrics['PCT_TARGET_BASES_50X'],
                  100: hs_metrics['PCT_TARGET_BASES_100X'],
              },
              'duplicates': float(sample_metrics[main_key]['markduplicates']['fraction_duplicates']),
              'gc_dropout': hs_metrics['GC_DROPOUT'],
              'id': sample_id,
              'median_insert_size':  multiple_inst_metrics['MEDIAN_INSERT_SIZE'],
              'mapped': total_mapped / total_reads,
              'plink_sex': plink_samples.get(sample_id),
              'predicted_sex': sample_metrics[main_key]['chanjo_sexcheck']['gender'],
              'reads': total_reads,
              'insert_size_standard_deviation': float(multiple_inst_metrics['STANDARD_DEVIATION']),
              'strand_balance': float(multiple_metrics['STRAND_BALANCE']),
              'target_coverage': float(hs_metrics['MEAN_TARGET_COVERAGE']),
          }
          data['samples'].append(sample_data)
      return data