code: def write_to_hdf(self, fp, template_hash, root=None, precision=None):
          
          if root is None:
              root = ''
          else:
              root = '%s/'%(root)
          if precision is None:
              precision = self.precision
          elif precision == 'double' and self.precision == 'single':
              raise ValueError("cannot cast single precision to double")
          outdtype = _real_dtypes[precision]
          group = '%scompressed_waveforms/%s' %(root, str(template_hash))
          for param in ['amplitude', 'phase', 'sample_points']:
              fp['%s/%s' %(group, param)] = self._get(param).astype(outdtype)
          fp_group = fp[group]
          fp_group.attrs['mismatch'] = self.mismatch
          fp_group.attrs['interpolation'] = self.interpolation
          fp_group.attrs['tolerance'] = self.tolerance
          fp_group.attrs['precision'] = precision
docs: Write the compressed waveform to the given hdf file handler.
  
          The waveform is written to:
          `fp['[{root}/]compressed_waveforms/{template_hash}/{param}']`,
          where `param` is the `sample_points`, `amplitude`, and `phase`. The
          `interpolation`, `tolerance`, `mismatch` and `precision` are saved
          to the group's attributes.
  
          Parameters
          ----------
          fp : h5py.File
              An open hdf file to write the compressed waveform to.
          template_hash : {hash, int, str}
              A hash, int, or string to map the template to the waveform.
          root : {None, str}
              Put the `compressed_waveforms` group in the given directory in the
              hdf file. If `None`, `compressed_waveforms` will be the root
              directory.
          precision : {None, str}
              Cast the saved parameters to the given precision before saving. If
              None provided, will use whatever their current precision is. This
              will raise an error if the parameters have single precision but the
              requested precision is double.