本文整理汇总了Python中sparkle.stim.stimulus_model.StimulusModel.signal方法的典型用法代码示例。如果您正苦于以下问题:Python StimulusModel.signal方法的具体用法?Python StimulusModel.signal怎么用?Python StimulusModel.signal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sparkle.stim.stimulus_model.StimulusModel
的用法示例。
在下文中一共展示了StimulusModel.signal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestStimModel
# 需要导入模块: from sparkle.stim.stimulus_model import StimulusModel [as 别名]
# 或者: from sparkle.stim.stimulus_model.StimulusModel import signal [as 别名]
class TestStimModel():
def setup(self):
self.model = StimulusModel()
self.model.setReferenceVoltage(100, 0.1)
self.model.setMaxVoltage(MAXV, DEVICE_MAXV)
self.model.setMinVoltage(0.005)
def test_insert_data(self):
fake_component0 = 'ducks'
fake_component1 = 'frogs'
self.model.insertComponent(fake_component0, 0, 0)
self.model.insertComponent(fake_component1, 0, 0)
assert self.model.component(0,0) == fake_component1
assert self.model.component(0,1) == fake_component0
def test_remove_data(self):
fake_component0 = 'ducks'
self.model.insertComponent(fake_component0, 0, 0)
self.model.removeComponent(0,0)
assert self.model.component(0,0) == None
def test_component_index(self):
fake_component0 = 'ducks'
# component will be added to the lowest index in row
self.model.insertComponent(fake_component0, 0, 2)
index = self.model.indexByComponent(fake_component0)
assert index == (0,0)
@raises(IndexError)
def test_set_data(self):
fake_component0 = 'ducks'
self.model.overwriteComponent(fake_component0, 0, 0)
def test_row_column_count(self):
fake_component0 = 'ducks'
self.model.insertComponent(fake_component0, 0, 0)
assert self.model.columnCountForRow(0) == 1
assert self.model.rowCount() == 1
def test_trace_count_no_auto(self):
component0 = PureTone()
component1 = PureTone()
self.model.insertComponent(component0, 0,0)
self.model.insertComponent(component1, 0,0)
assert self.model.traceCount() == 1
def test_trace_count_no_components(self):
self.add_auto_param(self.model)
assert self.model.traceCount() == 0
def test_trace_count_with_auto(self):
component = PureTone()
self.model.insertComponent(component, 0,0)
nsteps = self.add_auto_param(self.model)
assert self.model.traceCount() == nsteps
def test_model_contains(self):
component = PureTone()
self.model.insertComponent(component, 0,0)
assert self.model.contains('PureTone')
def test_expanded_stim_no_auto(self):
"""signal of a model without any auto parameters"""
component = PureTone()
self.model.insertComponent(component, 0,0)
signals, doc, ovld = self.model.expandedStim()
assert len(signals) == 1
assert_equal(signals[0][0].shape[0], component.duration()*self.model.samplerate())
assert len(doc) == 1
assert doc[0]['samplerate_da'] == self.model.samplerate()
def test_expanded_stim_with_auto(self):
component = PureTone()
self.model.insertComponent(component, 0,0)
nsteps = self.add_auto_param(self.model)
signals, doc, ovld = self.model.expandedStim()
assert len(signals) == nsteps
assert len(doc) == nsteps
assert doc[0]['samplerate_da'] == self.model.samplerate()
def test_expaned_stim_with_vocal_auto(self):
component = Vocalization()
component.setFile(sample.samplewav())
self.model.insertComponent(component, 0,0)
nsteps = self.add_vocal_param(self.model)
signals, doc, ovld = self.model.expandedStim()
assert len(signals) == nsteps
assert len(doc) == nsteps
assert doc[0]['samplerate_da'] == self.model.samplerate()
def test_signal_eq_caldb(self):
caldb = 100
#.........这里部分代码省略.........
示例2: CalibrationRunner
# 需要导入模块: from sparkle.stim.stimulus_model import StimulusModel [as 别名]
# 或者: from sparkle.stim.stimulus_model.StimulusModel import signal [as 别名]
#.........这里部分代码省略.........
def _initialize_run(self):
self.player.set_aochan(self.aochan)
self.player.set_aichan(self.aichan)
if self.apply_cal:
self.protocol_model.setCalibration(self.calibration_vector, self.calibration_freqs, self.calibration_frange)
# calibration testing doesn't save anything
self.save_data = False
else:
data_items = self.datafile.keys()
self.current_dataset_name = next_str_num(self.group_name, data_items)
self.datafile.init_group(self.current_dataset_name, mode='calibration')
logger = logging.getLogger('main')
logger.debug('Calibrating with fs %s' % self.stimulus.samplerate())
self.datafile.init_data(self.current_dataset_name, mode='calibration',
dims=(self.stimulus.repCount(), self.stimulus.duration()*self.stimulus.samplerate()))
info = {'samplerate_ad': self.player.aifs}
self.datafile.set_metadata(self.current_dataset_name, info)
# point is to output the signal at the specificed voltage, to we set
# the intensity of the components to match whatever the caldb is now
self.save_data = True
self.stimulus.component(0,0).setIntensity(self.caldb)
print 'USING {} V, {} Hz, {} dBSPL'.format(self.calv, self.calf, self.caldb)
self.reftone.setIntensity(self.caldb)
self.reftone.setFrequency(self.calf)
self.protocol_model.insert(self.refstim,0)
self.calname = None
self.protocol_model.setCalibration(None, None, None)
self.datafile.init_data(self.current_dataset_name, mode='calibration',
nested_name='reference_tone',
dims=(self.stimulus.repCount(), self.stimulus.duration()*self.stimulus.samplerate()))
def _initialize_test(self, test):
assert test.samplerate() == self.player.aifs
def _process_response(self, response, trace_info, irep):
if self.save_data:
if trace_info['components'][0]['stim_type'] == 'Pure Tone':
self.datafile.append(self.current_dataset_name, response, nested_name='reference_tone')
elif trace_info['components'][0]['stim_type'] == 'FM Sweep' or trace_info['components'][0]['stim_type'] == 'White Noise':
self.datafile.append(self.current_dataset_name, response)
else:
raise Exception("Improper calibration stimulus : {}".format(trace_info['components'][0]['stim_type']))
def process_calibration(self, save=True):
"""processes calibration control signal. Determines transfer function
of speaker to get frequency vs. attenuation curve.
:param save: Whether to save this calibration data to file
:type save: bool
:returns: numpy.ndarray, str, int, float -- frequency response (in dB), dataset name, calibration reference frequency, reference intensity
"""
if not self.save_data:
raise Exception("Cannot process an unsaved calibration")
avg_signal = np.mean(self.datafile.get_data(self.current_dataset_name + '/signal'), axis=0)
diffdB = attenuation_curve(self.stimulus.signal()[0], avg_signal,
self.stimulus.samplerate(), self.calf)
logger = logging.getLogger('main')
logger.debug('The maximum dB attenuation is {}, caldB {}'.format(max(diffdB), self.caldb))
# save a vector of only the calibration intensity results
self.datafile.init_data(self.current_dataset_name, mode='calibration',
dims=diffdB.shape,
nested_name='calibration_intensities')
self.datafile.append(self.current_dataset_name, diffdB,
nested_name='calibration_intensities')
relevant_info = {'frequencies': 'all', 'calibration_dB':self.caldb,
'calibration_voltage': self.calv, 'calibration_frequency': self.calf,
}
self.datafile.set_metadata('/'.join([self.current_dataset_name, 'calibration_intensities']),
relevant_info)
mean_reftone = np.mean(self.datafile.get_data(self.current_dataset_name + '/reference_tone'), axis=0)
tone_amp = signal_amplitude(mean_reftone, self.player.get_aifs())
db = calc_db(tone_amp, self.mphonesens, self.mphonedb)
# remove the reference tone from protocol
self.protocol_model.remove(0)
return diffdB, self.current_dataset_name, self.calf, db
def set_reps(self, reps):
"""set the number of repetitions for the stimuli (reference tone and cal stim)
:param reps: number of times to present the same stimulus
:type reps: int
"""
self.stimulus.setRepCount(reps)
self.refstim.setRepCount(reps)
def count(self):
return self.stimulus.repCount()
示例3: SearchRunner
# 需要导入模块: from sparkle.stim.stimulus_model import StimulusModel [as 别名]
# 或者: from sparkle.stim.stimulus_model.StimulusModel import signal [as 别名]
class SearchRunner(AbstractAcquisitionRunner):
"""Handles the presentation of data where changes are allowed to
be made to the stimulus while running"""
def __init__(self, *args):
self._stimulus = StimulusModel()
super(SearchRunner, self).__init__(*args)
self.player = FinitePlayer()
self.save_data = False
self.set_name = 'explore_1'
# stimuli_types = get_stimuli_models()
# self._explore_stimuli = [x() for x in stimuli_types if x.explore]
# self.delay = Silence()
# self._stimulus.insertfComponent(self.delay)
def stimulus(self):
"""Gets a list of all the stimuli this runner has access to. Order
of the list matches the index order which stimuli can be set by.
:returns: (subclasses of) list<:class:`AbstractStimulusComponent<sparkle.stim.abstract_component.AbstractStimulusComponent>`>
"""
return self._stimulus
def set_calibration(self, attenuations, freqs, frange, calname):
"""See :meth:`AbstractAcquisitionRunner<sparkle.run.abstract_acquisition.AbstractAcquisitionRunner.set_calibration>`"""
self._stimulus.setCalibration(attenuations, freqs, frange)
def update_reference_voltage(self):
"""See :meth:`AbstractAcquisitionRunner<sparkle.run.abstract_acquisition.AbstractAcquisitionRunner.update_reference_voltage>`"""
self._stimulus.setReferenceVoltage(self.caldb, self.calv)
# def set_delay(self, duration):
# self.delay.setDuration(duration)
# def set_stim_by_index(self, index):
# """Sets the stimulus to be generated to the one referenced by index
# :param index: index number of stimulus to set from this class's internal list of stimuli
# :type index: int
# """
# # remove any current components
# self._stimulus.clearComponents()
# self._stimulus.insertComponent(self.delay)
# self._stimulus.insertComponent(self._explore_stimuli[index], 0, 1)
# signal, atten, overload = self._stimulus.signal()
# self.player.set_stim(signal, self._stimulus.samplerate(), attenuation=atten)
# self.putnotify('over_voltage', (overload,))
# return signal, overload
def reset_stim(self):
signal, atten, overload = self._stimulus.signal()
self.player.set_stim(signal, self._stimulus.samplerate(), attenuation=atten)
self.putnotify('over_voltage', (overload,))
self.nreps = self._stimulus.repCount()
self.irep = 0
return signal, overload
def set_current_stim_parameter(self, param, val):
"""Sets a parameter on the current stimulus
:param param: name of the parameter of the stimulus to set
:type param: str
:param val: new value to set the parameter to
"""
component = self._stimulus.component(0,1)
component.set(param, val)
def current_signal(self):
"""Signal of the currently set stimulus
:returns: numpy.ndarray
"""
return self._stimulus.signal()
# def stim_names(self):
# """The names of the all the stimuli this class can generate, in order
# :returns: list<str>
# """
# stim_names = []
# for stim in self._explore_stimuli:
# stim_names.append(stim.name)
# return stim_names
def run(self, interval):
"""See :meth:`AbstractAcquisitionRunner<sparkle.run.abstract_acquisition.AbstractAcquisitionRunner.run>`"""
self._halt = False
# TODO: some error checking to make sure valid paramenters are set
if self.save_data:
# initize data set
self.current_dataset_name = self.set_name
self.datafile.init_data(self.current_dataset_name, self.aitimes.shape, mode='open')
self.set_name = increment_title(self.set_name)
# save the start time and set last tick to expired, so first
# acquisition loop iteration executes immediately
#.........这里部分代码省略.........