function getPulse(op, encode) {
    const s = op.source,
      stamp = this._clock;
    return s && isArray(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);
  }
Provide a correct pulse for evaluating an operator. If the operator has an
explicit source operator, we will try to pull the pulse(s) from it.
If there is an array of source operators, we build a multi-pulse.
Otherwise, we return a current pulse with correct source data.
If the pulse is the pulse map has an explicit target set, we use that.
Else if the pulse on the upstream source operator is current, we use that.
Else we use the pulse from the pulse map, but copy the source tuple array.
@param {Operator} op - The operator for which to get an input pulse.
@param {string} [encode] - An (optional) encoding set name with which to
  annotate the returned pulse. See {@link run} for more information.