code: def assign_complex_to_samples(items):
      
      extract_fns = {("variants", "samples"): _get_vcf_samples,
                     ("align_bam",): _get_bam_samples}
      complex = {k: {} for k in extract_fns.keys()}
      for data in items:
          for k in complex:
              v = tz.get_in(k, data)
              if v is not None:
                  for s in extract_fns[k](v, items):
                      if s:
                          complex[k][s] = v
      out = []
      for data in items:
          for k in complex:
              newv = tz.get_in([k, dd.get_sample_name(data)], complex)
              if newv:
                  data = tz.update_in(data, k, lambda x: newv)
          out.append(data)
      return out
docs: Assign complex inputs like variants and align outputs to samples.
  
      Handles list inputs to record conversion where we have inputs from multiple
      locations and need to ensure they are properly assigned to samples in many
      environments.
  
      The unpleasant approach here is to use standard file naming to match
      with samples so this can work in environments where we don't download/stream
      the input files (for space/time savings).