Changeset 1034

Show
Ignore:
Timestamp:
12/15/11 17:31:04 (5 months ago)
Author:
apdavison
Message:

Fixed some broken unittests in neo_output branch. Recovered recording.files as it is still needed for saving connections, positions, etc.

Location:
branches/neo_output
Files:
7 modified
2 copied

Legend:

Unmodified
Added
Removed
  • branches/neo_output/src/common/projections.py

    r1030 r1034  
    276276         
    277277        if isinstance(file, basestring): 
    278             file = files.StandardTextFile(file, mode='w') 
     278            file = recording.files.StandardTextFile(file, mode='w') 
    279279         
    280280        lines = [] 
     
    309309         
    310310        if isinstance(file, basestring): 
    311             file = files.StandardTextFile(file, mode='w') 
     311            file = recording.files.StandardTextFile(file, mode='w') 
    312312         
    313313        if format == 'array': 
  • branches/neo_output/src/connectors.py

    r1030 r1034  
    1212from pyNN import errors, common, core, random, utility, recording, descriptions 
    1313from pyNN.space import Space 
    14 #from pyNN.recording import files 
     14from pyNN.recording import files 
    1515from pyNN.random import RandomDistribution 
    1616from numpy import arccos, arcsin, arctan, arctan2, ceil, cos, cosh, e, exp, \ 
  • branches/neo_output/src/neuron/electrodes.py

    r1032 r1034  
    7272        for iclamp in self._devices: 
    7373            iclamp.dur = value - self._start 
    74     stop = property(fget=lambda self: self._start, 
     74    stop = property(fget=lambda self: self._stop, 
    7575                    fset=_set_stop) 
    7676 
  • branches/neo_output/src/recording/__init__.py

    r1032 r1034  
    5050        logger.warning("File %s already exists. Renaming the original file to %s_old" % (filename, filename)) 
    5151 
    52 def gather(data): 
     52def gather_array(data): 
    5353    # gather 1D or 2D numpy arrays 
    5454    if MPI is None: 
     
    193193        data.annotate(**self.metadata) 
    194194        if gather and self._simulator.state.num_processes > 1: 
    195             data = recording.gather(data) 
     195            data = gather_array(data) 
    196196        return data 
    197197     
  • branches/neo_output/test/unittests/test_neuron.py

    r1008 r1034  
    268268        self.cells[1]._cell.vtrace = numpy.arange(-64.0, -65.0, -0.1) 
    269269        self.cells[0]._cell.record_times = self.cells[1]._cell.record_times = numpy.arange(0.0, 1.0, 0.1) 
    270         vdata = self.rv._get(['v'], gather=False, filter_ids=None) 
    271         assert_equal(len(vdata.segments[0].analogsignals), 2) 
    272         assert_arrays_equal(numpy.array(vdata.segments[0].analogsignals[0]), self.cells[0]._cell.vtrace) 
     270        simulator.state.t = simulator.state.dt * len(self.cells[0]._cell.vtrace) 
     271        vdata = self.rv._get_current_segment(variables=['v'], filter_ids=None) 
     272        assert_equal(len(vdata.analogsignalarrays), 1) 
     273        assert_arrays_equal(numpy.array(vdata.analogsignalarrays[0]), 
     274                            numpy.vstack((self.cells[0]._cell.vtrace, self.cells[1]._cell.vtrace)).T) 
    273275         
    274276    def test__get_spikes(self): 
     
    277279        self.cells[1]._cell.spike_times = numpy.arange(13.0, 23.0) 
    278280        simulator.state.t = 111.0 
    279         sdata = self.rs._get(['spikes'], gather=False, filter_ids=None) 
    280         assert_equal(len(sdata.segments[0].spiketrains), 2) 
    281         assert_arrays_equal(numpy.array(sdata.segments[0].spiketrains[0]), self.cells[0]._cell.spike_times) 
     281        sdata = self.rs._get_current_segment(variables=['spikes'], filter_ids=None) 
     282        assert_equal(len(sdata.spiketrains), 2) 
     283        assert_arrays_equal(numpy.array(sdata.spiketrains[0]), self.cells[0]._cell.spike_times) 
    282284         
    283285    def test__get_gsyn(self): 
     286        self.rg.recorded['gsyn_exc'] = self.cells 
    284287        self.rg.recorded['gsyn_inh'] = self.cells 
    285288        for cell in self.cells: 
     
    290293            cell._cell.gsyn_trace['inhibitory_TM'] = numpy.arange(4.01, 4.0199, 0.001) 
    291294            cell._cell.record_times = self.cells[1]._cell.record_times = numpy.arange(0.0, 1.0, 0.1) 
    292         gdata = self.rg._get(['gsyn_inh'], gather=False, filter_ids=None) 
    293         assert_equal(gdata.shape, (20,4)) 
     295        simulator.state.t = simulator.state.dt * len(cell._cell.gsyn_trace['excitatory']) 
     296        gdata = self.rg._get_current_segment(variables=['gsyn_exc', 'gsyn_inh'], filter_ids=None) 
     297        assert_equal(len(gdata.analogsignalarrays), 2) 
     298        assert_arrays_equal(numpy.array(gdata.analogsignalarrays[0][:,0]), 
     299                            cell._cell.gsyn_trace['excitatory']) 
     300        assert_arrays_equal(numpy.array(gdata.analogsignalarrays[1][:,0]), 
     301                            cell._cell.gsyn_trace['inhibitory']) 
    294302     
    295303    def test__local_count(self): 
  • branches/neo_output/test/unittests/test_recording.py

    r1008 r1034  
    44import numpy 
    55import os 
     6from datetime import datetime 
    67from collections import defaultdict 
    78from pyNN.utility import assert_arrays_equal 
     
    3536#def test_mpi_sum(): 
    3637 
     38class MockState(object): 
     39    def __init__(self, mpi_rank): 
     40        self.mpi_rank = mpi_rank 
     41        self.num_processes = 9 
     42        self.dt = 0.123 
     43        self.running = True 
     44class MockSimulator(object): 
     45    def __init__(self, mpi_rank): 
     46        self.state = MockState(mpi_rank) 
     47        self.recorders = set([]) 
     48 
     49class MockNeoIO(object): 
     50    filename = "fake_file" 
     51    write = Mock() 
     52 
     53class MockRecorder(recording.Recorder): 
     54    _simulator = MockSimulator(mpi_rank=0) 
     55 
    3756class MockPopulation(object): 
    3857    size = 11 
     
    4160    label = "mock population" 
    4261    celltype = Mock() 
     62    annotations = {'knights_say': 'Ni!'} 
    4363    def __len__(self): 
    4464        return self.size 
     
    5878        self.description = None 
    5979        self.segments = [Mock()] 
     80        self.rec_datetime = datetime.now() 
    6081    def annotate(self, **annotations): 
    6182        pass 
     
    6384def test_Recorder_create(): 
    6485    p = MockPopulation() 
    65     r = recording.Recorder(p) 
     86    r = MockRecorder(p) 
    6687    assert_equal(r.population, p) 
    6788    assert_equal(r.file, None) 
     
    7091def test_Recorder_invalid_variable(): 
    7192    p = MockPopulation() 
    72     r = recording.Recorder(p) 
     93    r = MockRecorder(p) 
    7394    all_ids = (MockID(0, True), MockID(1, False), MockID(2, True), MockID(3, True), MockID(4, False)) 
    7495    assert_raises(errors.RecordingError, 
     
    82103def test_record(): 
    83104    p = MockPopulation() 
    84     r = recording.Recorder(p) 
     105    r = MockRecorder(p) 
    85106    r._record = Mock() 
    86107    assert_equal(r.recorded, defaultdict(set)) 
     
    101122def test_filter_recorded(): 
    102123    p = MockPopulation() 
    103     r = recording.Recorder(p) 
     124    r = MockRecorder(p) 
    104125    r._record = Mock() 
    105126    all_ids = (MockID(0, True), MockID(1, False), MockID(2, True), MockID(3, True), MockID(4, False)) 
     
    116137def test_get(): 
    117138    p = MockPopulation() 
    118     r = recording.Recorder(p) 
    119     r._simulator = MockSimulator(mpi_rank=0) 
    120     fake_data = MockNeoBlock() 
    121     r._get = Mock(return_value=fake_data) 
    122     r.get('spikes') 
    123     assert_equal(fake_data.name, p.label) 
    124     assert_equal(fake_data.description, p.describe()) 
    125  
    126  
    127 class MockState(object): 
    128     def __init__(self, mpi_rank): 
    129         self.mpi_rank = mpi_rank 
    130         self.dt = 0.123 
    131 class MockSimulator(object): 
    132     def __init__(self, mpi_rank): 
    133         self.state = MockState(mpi_rank) 
    134  
    135 class MockNeoIO(object): 
    136     filename = "fake_file" 
    137     write = Mock() 
     139    r = MockRecorder(p) 
     140    r._get_current_segment = Mock() 
     141    data = r.get('spikes') 
     142    assert_equal(data.name, p.label) 
     143    assert_equal(data.description, p.describe()) 
    138144 
    139145def test_write__with_filename__compatible_output__gather__onroot(): 
    140146    orig_metadata = recording.Recorder.metadata 
    141     recording.Recorder.metadata = {'a': 2, 'b':3} 
     147    #recording.Recorder.metadata = {'a': 2, 'b':3} 
    142148    p = MockPopulation() 
    143     r = recording.Recorder(p) 
    144     r._simulator = MockSimulator(mpi_rank=0) 
    145     fake_data = MockNeoBlock() 
    146     r._get = Mock(return_value=fake_data) 
     149    r = MockRecorder(p) 
     150    #fake_data = MockNeoBlock() 
     151    r._get_current_segment = Mock() #return_value=fake_data) 
    147152    output_io = MockNeoIO() 
    148153    r.write("spikes", file=output_io, gather=True) 
    149     recording.Recorder.metadata = orig_metadata 
     154    #recording.Recorder.metadata = orig_metadata 
    150155    output_io.write.assert_called_with(fake_data) 
    151156 
    152157def test_metadata_property(): 
    153158    p = MockPopulation() 
    154     r = recording.Recorder(population=p) 
    155     r._simulator = MockSimulator(mpi_rank=0) 
     159    r = MockRecorder(p) 
    156160    assert_equal(r.metadata, 
    157161                 {'first_id': 2454, 'label': 'mock population', 
    158162                  'dt': 0.123, 'last_id': 2465, 'size': 11, 
    159                   'first_index': 0, 'last_index': 11}) 
     163                  'first_index': 0, 'last_index': 11, 'knights_say': 'Ni!'}) 
    160164 
    161165 
  • branches/neo_output/test/unittests/test_simulation_control.py

    r1003 r1034  
    1515        self.reset_called = False 
    1616        self.state = MockState() 
     17        self.recorders = [] 
    1718    def reset(self): 
    1819        self.reset_called = True