code: def from_nds2_buffer(cls, buffer_, scaled=None, copy=True, **metadata):
          
          # get Channel from buffer
          channel = Channel.from_nds2(buffer_.channel)
  
          # set default metadata
          metadata.setdefault('channel', channel)
          metadata.setdefault('epoch', LIGOTimeGPS(buffer_.gps_seconds,
                                                   buffer_.gps_nanoseconds))
          metadata.setdefault('sample_rate', channel.sample_rate)
          metadata.setdefault('unit', channel.unit)
          metadata.setdefault('name', buffer_.name)
  
          # unwrap data
          scaled = _dynamic_scaled(scaled, channel.name)
          slope = buffer_.signal_slope
          offset = buffer_.signal_offset
          null_scaling = slope == 1. and offset == 0.
          if scaled and not null_scaling:
              data = buffer_.data.copy() * slope + offset
              copy = False
          else:
              data = buffer_.data
  
          # construct new TimeSeries-like object
          return cls(data, copy=copy, **metadata)
docs: Construct a new series from an `nds2.buffer` object
  
          **Requires:** |nds2|_
  
          Parameters
          ----------
          buffer_ : `nds2.buffer`
              the input NDS2-client buffer to read
  
          scaled : `bool`, optional
              apply slope and bias calibration to ADC data, for non-ADC data
              this option has no effect
  
          copy : `bool`, optional
              if `True`, copy the contained data array to new  to a new array
  
          **metadata
              any other metadata keyword arguments to pass to the `TimeSeries`
              constructor
  
          Returns
          -------
          timeseries : `TimeSeries`
              a new `TimeSeries` containing the data from the `nds2.buffer`,
              and the appropriate metadata