class_docstr: Specify a sparse model that is compatible with SPM/FSL designers [1]_.
  
  Examples
  --------
  >>> from nipype.algorithms import modelgen
  >>> from nipype.interfaces.base import Bunch
  >>> s = modelgen.SpecifySparseModel()
  >>> s.inputs.input_units = 'secs'
  >>> s.inputs.functional_runs = ['functional2.nii', 'functional3.nii']
  >>> s.inputs.time_repetition = 6
  >>> s.inputs.time_acquisition = 2
  >>> s.inputs.high_pass_filter_cutoff = 128.
  >>> s.inputs.model_hrf = True
  >>> evs_run2 = Bunch(conditions=['cond1'], onsets=[[2, 50, 100, 180]],
  ...                  durations=[[1]])
  >>> evs_run3 = Bunch(conditions=['cond1'], onsets=[[30, 40, 100, 150]],
  ...                  durations=[[1]])
  >>> s.inputs.subject_info = [evs_run2, evs_run3]  # doctest: +SKIP
  
  References
  ----------
  .. [1] Perrachione TK and Ghosh SS (2013) Optimized design and analysis of
     sparse-sampling fMRI experiments. Front. Neurosci. 7:55
     http://journal.frontiersin.org/Journal/10.3389/fnins.2013.00055/abstract
class_docstr_tok: ["Specify","a","sparse","model","that","is","compatible","with","SPM\/FSL","designers","[","1","]","_",".","Examples","--","--","--","--",">",">",">","from","nipype.algorithms","import","modelgen",">",">",">","from","nipype.interfaces.base","import","Bunch",">",">",">","s","=","modelgen.SpecifySparseModel","(",")",">",">",">","s.inputs.input_units","=","'secs'",">",">",">","s.inputs.functional_runs","=","[","'functional2.nii","'",",","'functional3.nii","'","]",">",">",">","s.inputs.time_repetition","=","6",">",">",">","s.inputs.time_acquisition","=","2",">",">",">","s.inputs.high_pass_filter_cutoff","=","128",".",">",">",">","s.inputs.model_hrf","=","True",">",">",">","evs_run2","=","Bunch","(","conditions=","[","'cond1","'","]",",","onsets=","[","[","2",",","50",",","100",",","180","]","]",",","...","durations=","[","[","1","]","]",")",">",">",">","evs_run3","=","Bunch","(","conditions=","[","'cond1","'","]",",","onsets=","[","[","30",",","40",",","100",",","150","]","]",",","...","durations=","[","[","1","]","]",")",">",">",">","s.inputs.subject_info","=","[","evs_run2",",","evs_run3","]","#","doctest",":","+SKIP","References","--","--","--","--","--","..","[","1","]","Perrachione","TK","and","Ghosh","SS","(","2013",")","Optimized","design","and","analysis","of","sparse-sampling","fMRI","experiments",".","Front",".","Neurosci",".","7:55","http",":","\/\/journal.frontiersin.org\/Journal\/10.3389\/fnins.2013.00055\/abstract"]
code: def _generate_design(self, infolist=None):
      if isdefined(self.inputs.subject_info):
          infolist = self.inputs.subject_info
      else:
          infolist = gen_info(self.inputs.event_files)
      sparselist = self._generate_clustered_design(infolist)
      super()._generate_design(infolist=sparselist)
  
imports: from copy import deepcopy
  import csv, math, os
  from nibabel import load
  import numpy
  from ..interfaces.base import BaseInterface, TraitedSpec, InputMultiPath, traits, File, Bunch, BaseInterfaceInputSpec, isdefined
  from ..utils.filemanip import ensure_list
  from ..utils.misc import normalize_mc_params
  from ..None import config, logging
label_desc: Use image node_id 4 for calling the SpecifySparseModel obj's underlying member method code with example usage: obj._generate_design(infolist) without return types