docs: def prepare_data(dt, features, response, sequence, id_column=None, seq_align="end", trim_seq_len=None):
      """
      Prepare data for Concise.train or ConciseCV.train.
  
      Args:
          dt: A pandas DataFrame containing all the required data.
          features (List of strings): Column names of `dt` used to produce the features design matrix. These columns should be numeric.
          response (str or list of strings): Name(s) of column(s) used as a reponse variable.
          sequence (str): Name of the column storing the DNA/RNA sequences.
          id_column (str): Name of the column used as the row identifier.
          seq_align (str): one of ``{"start", "end"}``. To which end should we align sequences?
          trim_seq_len (int): Consider only first `trim_seq_len` bases of each sequence when generating the sequence design matrix. If :python:`None`, set :py:attr:`trim_seq_len` to the longest sequence length, hence whole sequences are considered.
          standardize_features (bool): If True, column in the returned matrix matrix :py:attr:`X_seq` are normalied to have zero mean and unit variance.
  
  
      Returns:
          tuple: Tuple with elements: :code:`(X_feat: X_seq, y, id_vec)`, where:
  
                 - :py:attr:`X_feat`: features design matrix of shape :code:`(N, D)`, where N is :code:`len(dt)` and :code:`D = len(features)`
                 - :py:attr:`X_seq`:  sequence matrix  of shape :code:`(N, 1, trim_seq_len, 4)`. It represents 1-hot encoding of the DNA/RNA sequence.
                 - :py:attr:`y`: Response variable 1-column matrix of shape :code:`(N, 1)`    
                 - :py:attr:`id_vec`: 1D Character array of shape :code:`(N)`. It represents the ID's of individual rows.
  
      Note:
          One-hot encoding  of the DNA/RNA sequence is the following:
  
          .. code:: python
  
                 {
                   "A": np.array([1, 0, 0, 0]),
                   "C": np.array([0, 1, 0, 0]),
                   "G": np.array([0, 0, 1, 0]),
                   "T": np.array([0, 0, 0, 1]),
                   "U": np.array([0, 0, 0, 1]),
                   "N": np.array([0, 0, 0, 0]),
                 }
  
      """
      if type(response) is str:
          response = [response]
  
      X_feat = np.array(dt[features], dtype="float32")
      y = np.array(dt[response], dtype="float32")
      X_seq = encodeDNA(seq_vec=dt[sequence],
                        maxlen=trim_seq_len,
                        seq_align=seq_align)
      X_seq = np.array(X_seq, dtype="float32")
      id_vec = np.array(dt[id_column])
  
      return X_feat, X_seq, y, id_vec