code: def demultiplex_samples(data):
      
      work_dir = os.path.join(dd.get_work_dir(data), "umis")
      sample_dir = os.path.join(work_dir, dd.get_sample_name(data))
      demulti_dir = os.path.join(sample_dir, "demultiplexed")
  
      files = data["files"]
      if len(files) == 2:
          logger.error("Sample demultiplexing doesn't handle paired-end reads, but "
              "we can add it. Open an issue here https://github.com/bcbio/bcbio-nextgen/issues if you need this and we'll add it.")
          sys.exit(1)
      else:
          fq1 = files[0]
      # check if samples need to be demultiplexed
      with open_fastq(fq1) as in_handle:
          read = next(in_handle)
          if "SAMPLE_" not in read:
              return [[data]]
  
      bcfile = get_sample_barcodes(dd.get_sample_barcodes(data), sample_dir)
      demultiplexed = glob.glob(os.path.join(demulti_dir, "*.fq*"))
      if demultiplexed:
          return [split_demultiplexed_sampledata(data, demultiplexed)]
      umis = _umis_cmd(data)
      cmd = ("{umis} demultiplex_samples --nedit 1 --barcodes {bcfile} "
             "--out_dir {tx_dir} {fq1}")
      msg = "Demultiplexing {fq1}."
      with file_transaction(data, demulti_dir) as tx_dir:
          do.run(cmd.format(**locals()), msg.format(**locals()))
      demultiplexed = glob.glob(os.path.join(demulti_dir, "*.fq*"))
      return [split_demultiplexed_sampledata(data, demultiplexed)]
docs: demultiplex a fastqtransformed FASTQ file into separate sample barcode files