docs: function agilentHPLC(reader) {
    const intensities = reader.getDataVariable('ordinate_values');
    const numberPoints = intensities.length;
    const detector = reader.getAttribute('detector_name');
    let channel;
    if (detector.match(/dad/i)) {
      channel = `uv${Number(detector.replace(/.*Sig=([0-9]+).*/, '$1'))}`;
    } else if (detector.match(/tic/i)) {
      channel = 'tic';
    } else {
      channel = 'unknown';
    }
    const delayTime = reader.getDataVariable('actual_delay_time')[0];
    const runtimeLength = reader.getDataVariable('actual_run_time_length')[0];
    let samplingInterval;
    if (reader.dataVariableExists('actual_sampling_interval')) {
      samplingInterval = reader.getDataVariable('actual_sampling_interval')[0];
  
      if (
        Math.abs(delayTime + samplingInterval * numberPoints - runtimeLength) > 3
      ) {
        throw new Error(
          'The expected last time does not correspond to the runtimeLength'
        );
      }
    } else {
      samplingInterval = (runtimeLength - delayTime) / numberPoints;
    }
  
    let times = [];
    let time = delayTime;
    for (let i = 0; i < numberPoints; i++) {
      times.push(time);
      time += samplingInterval;
    }
  
    return {
      times,
      series: [
        {
          name: channel,
          dimension: 1,
          data: intensities
        }
      ]
    };
  }