code: def concatenate(self, others, axis=0):
          
          return concatenate_haplotype_array(self, others, axis=axis, cls=type(self),
                                             concatenate=np.concatenate)
docs: Join a sequence of arrays along an existing axis.
  
          Parameters
          ----------
          others : sequence of array_like
              The arrays must have the same shape, except in the dimension
              corresponding to `axis` (the first, by default).
          axis : int, optional
              The axis along which the arrays will be joined.  Default is 0.
  
          Returns
          -------
          res : ndarray
              The concatenated array.
  
          Examples
          --------
          >>> import allel
          >>> h = allel.HaplotypeArray([[0, 0, 0, 1],
          ...                           [0, 1, 1, 1],
          ...                           [0, 2, -1, -1]], dtype='i1')
          >>> h.concatenate([h], axis=0)
          <HaplotypeArray shape=(6, 4) dtype=int8>
          0 0 0 1
          0 1 1 1
          0 2 . .
          0 0 0 1
          0 1 1 1
          0 2 . .
          >>> h.concatenate([h], axis=1)
          <HaplotypeArray shape=(3, 8) dtype=int8>
          0 0 0 1 0 0 0 1
          0 1 1 1 0 1 1 1
          0 2 . . 0 2 . .