root/trunk/doc/io.txt

Revision 320, 5.3 kB (checked in by pierre, 2 months ago)

Fix some wrongs examples in doc/io.txt, and in the meanwhile consolidate the internal methods of StandardTextFile?.

Line 
1 =================
2 The ``io`` module
3 =================
4
5 This module will be the gateway of all the input/output relations in NeuroTools, especially regarding
6 the inferface with pyNN. This is in that module that you'll have the Standard Formats currently
7 supported by NeuroTools (text and pickle, hdf5 planned in a near future), and if you want to
8 implement your own ``load`` function, reading your own particular data structure for the ``signals`` module,
9 you should read the documentation
10
11 -------------
12 File Handlers
13 -------------
14
15 A File handler is an abstract object that will have to implement some key methods in order to be able
16 to read and write NeuroTools objects from a file (given in the constructor).
17 The idea is that is you want to design your own File handler, you just have to implement
18 the abstract methods of the objects, i.e ``write()`` (to write an object to a file),
19 ``read_spikes(params)`` read data and return a SpikeList object and
20 ``read_analogs(params, type)``, read data and returns an analog signal according to type. To have a better
21 understanding, just have a look to the two file handlers implemented in NeuroTools, i.e ``StandardTextFile`` and
22 ``StandPickleFile``.
23
24
25 The ``StandardTextFile`` class
26 ------------------------------
27
28 Creation
29 ~~~~~~~~
30
31 The ``StandardTextFile`` inherits from ``FileHandler``
32
33 Here is an example of creating simple ``StandardTextFile`` objects::
34
35     >>> textfile = StandardTextFile("test.txt")
36
37
38 Usage
39 ~~~~~~~~
40
41 If you want to read a data file with spikes, and return a SpikeList object::
42    
43     >>> spklist = textfile.read_spikes({'id_list' :range(11), 't_start' : 0, 't_stop' : 1000})
44
45 More generally, the ``read_spikes()`` method of an object inheriting from ``FileHandler`` accepts arguments
46 like id_list, t_start, t_stop, which are the one used in the SpikeList constructor. Note that the ``StandardTextFile`` object have private functions for an internal use only that will check/read
47 informations in the headers of the text file, ... See io.py for a deeper understanding of its behavior.
48
49 Similar syntax is used for reading a analog signal object::
50    
51     >>> aslist = textfile.read_analogs('vm', {'id_list':range(11)})
52
53 In the case of an ``AnalogSignal``, the type here, selected in [vm, conductance, current] will specified
54 the type of the NeuroTools object returned by the function. Either a ``VmList``, ``ConductanceList`` or
55 ``CurrentList``
56
57 It you want to save an object to a file, just do::
58    
59     >>> textfile.write(object)
60
61 objet can be a SpikeList or any kind of AnalogSignalList.
62
63
64 The ``StandardPickleFile`` class
65 --------------------------------
66
67 Creation
68 ~~~~~~~~
69
70 The ``StandardPickleFile`` also inherits from ``FileHandler``
71
72 Here is an example of creating simple ``StandardPickleFile`` objects::
73
74     >>> pickfile = StandardPickleFile("test.pick")
75
76
77 Usage
78 ~~~~~~~~
79
80 If you want to read a data file with spikes, and return a SpikeList object::
81    
82     >>> spklist = pickfile.read_spikes({'id_list' : range(11), 't_start' : 0, 't_stop' : 1000})
83
84 Since this object inherits from ``FileHandler``, the idea is that its behavior is *exactly* the
85 same than the ``StandardTextFile``. Similar syntax is used for reading a analog signal object::
86    
87     >>> aslist = pickfile.read_analogs('vm', {'id_list' : range(11)})
88
89 In the case of an ``AnalogSignal``, the type here, selected in [vm, conductance, current] will specified
90 the type of the NeuroTools object returned by the function. Either a ``VmList``, ``ConductanceList`` or
91 ``CurrentList``
92
93 It you want to save an object to a file, just do::
94    
95     >>> pickfile.write(object)
96
97 objet can be a SpikeList or any kind of AnalogSignalList.
98
99
100 The ``YOURStandardFormatFile`` class
101 ------------------------------------
102
103 As said before, you just have to implement some key functions, as defined in the ``FileHandler``::
104
105     >>> class YOURStandardFormatFile(FileHandler):
106             def write(self, object):
107                 ### Your method here #########
108                 ### Should save an object to the file self.filename###
109    
110             def read_spikes(self, params):
111                 ### Your method here, reading data from self.filename #########
112                 ### Should read data and return a SpikeList object constrained by params
113                 from NeuroTools import signals
114                 return signals.SpikeList(...)
115    
116             def read_analogs(self, type, params):
117                 if not type in ["vm", "current", "conductance"]:
118                     raise Exception("The type %s is not available for the Analogs Signals" %type)
119                 ### Your method here reading data from self.filename #########
120                 from NeuroTools import signals
121                 if type == 'vm':
122                     return signals.VmList(...)
123                 elif type == 'conductance':
124                     return signals.ConductanceList(...)
125                 elif type == 'current':
126                     return signals.CurrentList(...)
127
128
129 -------------
130 Data Handlers
131 -------------
132
133 The data handler is just a file input/output manager. This is just an interface for ``load/save`` functions.
134 This is this kind of object which is created by all the ``load`` methods of NeuroTools.signals
135
136 The ``DataHandler`` class
137 -------------------------
138
139 You should not have to deal directly with this class, because this is just an interface. See io.py for more details
Note: See TracBrowser for help on using the browser.