docs: def set(self, data, start=None, count=None, stride=None):
          """Write data to the dataset.
  
          Args::
  
            data    : array of data to write; can be given as a numpy
                      array, or as Python sequence (whose elements can be
                      imbricated sequences)
            start   : indices where to start writing in the dataset;
                      default to 0 on all dimensions
            count   : number of values to write along each dimension;
                      default to the current length of dataset dimensions
            stride  : sampling interval along each dimension;
                      default to 1 on all dimensions
  
            For n-dimensional datasets, those 3 parameters are entered
            using lists. For one-dimensional datasets, integers
            can also be used.
  
            Note that, to write the whole dataset at once, one has simply
            to call the method with the dataset values in parameter
            'data', omitting all other parameters.
  
          Returns::
  
            None.
  
          C library equivalent : SDwritedata
  
          The dataset can also be written using the familiar indexing and
          slicing notation, like ordinary python sequences.
          See "High level variable access".
  
                                                """
  
  
          # Obtain SDS info.
          try:
              sds_name, rank, dim_sizes, data_type, n_attrs = self.info()
              if isinstance(dim_sizes, type(1)):
                  dim_sizes = [dim_sizes]
          except HDF4Error:
              raise HDF4Error('set : cannot execute')
  
          # Validate args.
          if start is None:
              start = [0] * rank
          elif isinstance(start, type(1)):
              start = [start]
          if count is None:
              count = dim_sizes
              if count[0] == 0:
                  count[0] = 1
          elif isinstance(count, type(1)):
              count = [count]
          if stride is None:
              stride = [1] * rank
          elif isinstance(stride, type(1)):
              stride = [stride]
          if len(start) != rank or len(count) != rank or len(stride) != rank:
              raise HDF4Error('set : start, stride or count '\
                               'do not match SDS rank')
          unlimited = self.isrecord()
          for n in range(rank):
              ok = 1
              if start[n] < 0:
                  ok = 0
              elif n > 0 or not unlimited:
                  if start[n] + (abs(count[n]) - 1) * stride[n] >= dim_sizes[n]:
                      ok = 0
              if not ok:
                  raise HDF4Error('set arguments violate '\
                                   'the size (%d) of dimension %d' \
                                   % (dim_sizes[n], n))
          # ??? Check support for UINT16
          if not data_type in SDC.equivNumericTypes:
              raise HDF4Error('set cannot currrently deal '\
                               'with the SDS data type')
  
          _C._SDwritedata_0(self._id, data_type, start, count, data, stride)