docs: def jplace_split(self, original_jplace, cluster_dict):
          '''
          To make GraftM more efficient, reads are dereplicated and merged into
          one file prior to placement using pplacer. This function separates the
          single jplace file produced by this process into the separate jplace
          files, one per input file (if multiple were provided) and backfills
          abundance (re-replicates?) into the placement file so analyses can be
          done using the placement files.
  
          Parameters
          ----------
          original_jplace : dict (json)
              json .jplace file from the pplacer step.
          cluster_dict : dict
              dictionary stores information on pre-placement clustering
  
          Returns
          -------
          A dict containing placement hashes to write to
          new jplace file. Each key represents a file alias
          '''
          output_hash = {}
  
          for placement in original_jplace['placements']: # for each placement
              alias_placements_list = []
              nm_dict = {}
  
              p = placement['p']
              if 'nm' in placement.keys():
                  nm = placement['nm']
              elif 'n' in placement.keys():
                  nm = placement['n']
              else:
                  raise Exception("Unexpected jplace format: Either 'nm' or 'n' are expected as keys in placement jplace .JSON file")
  
              for nm_entry in nm:
                  nm_list = []
                  placement_read_name, plval = nm_entry
                  read_alias_idx = placement_read_name.split('_')[-1] # Split the alias
                                      # index out of the read name, which
                                      # corresponds to the input file from
                                      # which the read originated.
                  read_name = '_'.join(placement_read_name.split('_')[:-1])
                  read_cluster = cluster_dict[read_alias_idx][read_name]
                  for read in read_cluster:
                      nm_list.append([read.name, plval])
                  if read_alias_idx not in nm_dict:
                      nm_dict[read_alias_idx] = nm_list
                  else:
                      nm_dict[read_alias_idx] += nm_entry
  
              for alias_idx, nm_list in nm_dict.iteritems():
                  placement_hash = {'p': p,
                                    'nm': nm_list}
                  if alias_idx not in output_hash:
                      output_hash[alias_idx] = [placement_hash]
                  else:
                      output_hash[alias_idx].append(placement_hash)
          return output_hash