def SVD_sim(sp, lowcut, highcut, samp_rate,<EOL>amp_range=np.arange(-<NUM_LIT:10>, <NUM_LIT:10>, <NUM_LIT>)):
<EOL>sp = int(sp * samp_rate)<EOL>synthetics = [Stream(Trace(seis_sim(sp, a))) for a in amp_range]<EOL>for st in synthetics:<EOL><INDENT>for tr in st:<EOL><INDENT>tr.stats.station = '<STR_LIT>'<EOL>tr.stats.channel = '<STR_LIT>'<EOL>tr.stats.sampling_rate = samp_rate<EOL>tr.filter('<STR_LIT>', freqmin=lowcut, freqmax=highcut)<EOL><DEDENT><DEDENT>U, s, V, stachans = clustering.svd(synthetics)<EOL>return U, s, V, stachans<EOL>
Generate basis vectors of a set of simulated seismograms.

Inputs should have a range of S-P amplitude ratios, in theory to simulate \
a range of focal mechanisms.

:type sp: int
:param sp: S-P time in seconds - will be converted to samples according \
    to samp_rate.
:type lowcut: float
:param lowcut: Low-cut for bandpass filter in Hz
:type highcut: float
:param highcut: High-cut for bandpass filter in Hz
:type samp_rate: float
:param samp_rate: Sampling rate in Hz
:type amp_range: numpy.ndarray
:param amp_range: Amplitude ratio range to generate synthetics for.

:returns: set of output basis vectors
:rtype: :class:`numpy.ndarray`