docs: def out(self,I,features,labels=None,otype='f'):
          """computes the output for individual I"""
          stack_float = []
          stack_bool = []
          # print("stack:",I.stack)
          # evaulate stack over rows of features,labels
          # pdb.set_trace()
          for n in I.stack:
              self.evaluate(n,features,stack_float,stack_bool,labels)
              # print("stack_float:",stack_float)
          if otype=='f':
              return (stack_float[-1] if self.all_finite(stack_float[-1])
                      else np.zeros(len(features)))
          else:
              return (stack_bool[-1].astype(float) if self.all_finite(stack_bool[-1])
                      else np.zeros(len(features)))