-
Notifications
You must be signed in to change notification settings - Fork 2
/
faq.html
380 lines (309 loc) · 20.5 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="Neurokernel, Drosophila, brain emulation, computational neuroscience" />
<meta name="description" content="Frequently Asked Questions About Neurokernel" />
<meta name="author" content="" />
<link rel="shortcut icon" href="ico/favicon.ico" />
<title>Frequently Asked Questions About Neurokernel</title>
<!-- Make sure Ubuntu fonts are available -->
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:regular,bold&subset=Latin">
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/bootstrap-theme.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/custom.css" rel="stylesheet">
<!-- Google Analytics script -->
<script src="analytics.js"></script>
</head>
<body role="document">
<!--a id="fork" href="https://github.com/neurokernel/neurokernel"><img style="z-index:9999; position: fixed; top: 0; right: 0; border:
0;" src="./img/forkme_right_gray_6d6d6d.png" alt="Fork me on
GitHub"></a-->
<div id="fork" class="github-fork-ribbon-wrapper right">
<div class="github-fork-ribbon">
<a href="https://github.com/neurokernel/neurokernel">Fork me on GitHub</a>
</div>
</div>
<div id="wrap">
<div class="navbar-wrapper">
<div class="container">
<div class="navbar navbar-inverse navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button class = "navbar-toggle" data-toggle = "collapse" data-target = ".navHeaderCollapse">
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
</button>
<a id="git" class="github" style="position:relative; float:right; top:12px;
right:35px;" href="https://github.com/neurokernel/neurokernel">
<img style="position:absolute; width:25px;
height:25px; float:right" src="img/github.png">
</a>
<a class="navbar-brand" href="index.html"><img src="./img/fly-transparent-small.png">Neurokernel</a>
</div>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav">
<li><a href="about.html">About</a></li>
<li><a href="docs.html">Documents</a></li>
<li><a href="resource.html">Resources</a></li>
<li><a href="event.html">Events</a></li>
<li><a href="people.html">People</a></li>
<li class="active"><a href="faq.html">FAQ</a></li>
<li><a href="contact.html">Get Involved</a></li>
</ul>
</div>
</div>
</div>
</div>
</div> <!-- navbar-wrap -->
<div class="container">
<div class="col-md-12">
<div class="page-header" style="padding-top: 40px;">
<h1>Frequently Asked Questions</h1>
</div>
<h2>General Questions</h2>
<h4>What is Neurokernel?</h4>
<p>Neurokernel is an open software platform implemented in Python for the emulation
and validation of fruit fly (<i>Drosophila melanogaster</i>) brain models
on multiple Graphics Processing Units (GPUs).</p>
<h4>Isn't Neurokernel just another neural circuit simulator?</h4>
<p>In short, <i>no</i>!</p>
<p>Successfully modeling the entire brain of even a relatively "simple" organism
such as the fruit fly requires an architectural framework that goes beyond
general-purpose neural circuit simulators. Such a framework</p>
<ul>
<li>must be directly informed by the functional organization of
the fly brain,</li>
<li>must provide a high-level programming model,</li>
<li> must provide machinery needed to address the complexity of leveraging
widely available commodity parallel computing resources in an efficient and
scalable manner,</li>
<li>ensure that the work of multiple independent researchers focusing on
different parts of the fly brain remains interoperable.</li>
</ul>
<p>As a framework for successfully modeling the fly brain, Neurokernel
must serve as an operating system <i>kernel</i> vis-a-vis models of the entire
brain; just as an operating system must be able to <i>allocate
computational resources</i> and serve as an <i>extended machine</i> that
provides the services needed by software applications, so too must Neurokernel
be able to allocate parallel computational resources (i.e., available GPUs) and
provide the programmability (i.e., software interfaces and computational models)
required by the constituent elements of a fly brain model.</p>
<h4>Why does Neurokernel use GPUs rather than some other
high-performance computing technology?</h4>
<p>Developing a successful emulation of the fly brain is a nontrivial undertaking
that requires the combined efforts of many researchers. To enable and facilitate
this collaboration, a framework for developing and executing a fly brain model
must make use of a hardware which is not only powerful but available to a wide
range of researchers. There are a growing number of publications that
demonstrate the ability of GPU-based spiking neural simulators
(<a href="http://dx.doi.org/10.1016/j.neunet.2009.06.028">Nageswaran et al., 2009</a>,
<a href="http://dx.doi.org/10.1109/IJCNN.2010.5596678">Fidjeland et al., 2010</a>,
<a href="http://dx.doi.org/10.1186/1471-2202-12-S1-P239">Nowotny et al., 2011</a>,
<a href="http://dx.doi.org/10.3389/fninf.2011.00019">Richert et al., 2011</a>,
<a href="http://dx.doi.org/10.1109/TNNLS.2013.2276056">Minkovich et al., 2014</a>) to
achieve near-real-time performance for networks of at least of the magnitude of
the Drosophila brain (if not larger) and the possibility of increasing simulator
performance for such networks with the intelligent use of multiple GPUs. In
light of these developments and the documented increases in the speed,
parallelism, and data transfer bandwidth exhibited by recent generations of GPU
technology, clusters of GPUs appear to be the most suitable hardware substrate
for developing a near-real-time model of the entire fly brain at the present
time (2014).
<h4>The fruit fly's brain is too simple. Isn't the mammalian/primate/human brain
more interesting?</h4>
<p>Although the brains of higher organisms can support a range of abilities that
go well beyond those of a fly, the number of neurons and synapses in even "simpler"
mammals such as the mouse are several orders of magnitude higher than those in
the fly and will hence require proportionally more computational horsepower to
attack than will be available to most researchers in the forseeable future. By
contrast, near-real-time simulations of neuronal networks of the magnitude of
the fly brain using simple spiking neuron models are becoming possible (see
above); it therefore seems that the already-rapid improvements in GPU technology
will make emulation of the entire fly brain at biological time scales using
biologically realistic complex neuron and synapse models achievable in
the near future.
<p>It's worth noting that despite obvious differences in size and complexity
between the fly brain and those of more complex organisms such as mammals,
researchers dating back to Cajal have observed common design principles in the
structure of their sensory subsystems. Moreover, a surprising number of genes
and proteins expressed in the mammalian brain are also conserved in the genome
of the fruit fly; this suggests that insight obtained by focusing on
<i>Drosophila</i> will prove useful in understanding the mammalian brain.</p>
<p>While it is tempting to consider scaling up the design of the
Neurokernel from fruit flies to mice and primates, doing so at this time would
be akin to scaling up the internal architecture of a novel computer architecture
to a cluster of interconnected computers while still optimizing the first
computer's architecture! Given how much more complex biological systems are in
comparison to existing computer architectures, <a
href="https://en.wikiquote.org/wiki/Donald_Knuth">Knuth's warning against premature
optimization</a> is at least as relevant to brain modeling as it is to designing a
new computer architecture, operating system kernel, or network communication
scheme.</p>
<h4>The fruit fly's brain is far more complex than other model
organisms. Why not focus on them instead?</h4>
<p>Although emulation of the fly brain may superficially seem more daunting than
developing models of the nervous systems of simpler organisms, there are reasons
why the fly may be a preferable model organism. One major factor is the range of
complex nonreactive behaviors exhibited by the fly that can be experimentally
probed using a well-developed toolkit of powerful genetic techniques for
manipulation of its neural circuitry. Moreover, an increasing number of powerful
experimental methods have been developed for obtaining precise recordings of the
fly's neuronal responses to stimuli that are not yet available for other
organisms.</p>
<h2>Neurokernel Architecture</h2>
<h4>What are local processing units (LPUs) and why are they
significant?</h4>
<p>Determining how the brain's highly complex structure implements specific
functions requires its decomposition into functional modules whose input-output
relationships can be individually analyzed and whose interactions can be
explained in terms of the groups of synaptic connections that exist between
them. Analysis of the fruit fly connectome has revealed that its brain can be
decomposed into fewer than 50 distinct neural circuits, most of which correspond
to anatomically distinct regions in its brain. These regions, or neuropils,
include sensory processing structures such as the olfactory system's antennal
lobe and the vision system's lamina and medulla, as well as higher level
structures such as the protocerebral bridge that receive input from sensory
modules. We refer to most of these modules as local processing units (LPUs)
because they are characterized by unique populations of local neurons whose
processes are restricted to each LPU. The fly brain also comprises modules known
as hubs that contain no local neurons; they appear to serve as communication
relays between different LPUs. In contrast to a purely anatomical subdivision,
the decomposition of the brain into LPUs and hubs casts the problem of reverse
engineering the brain as one of discovering the processing performed by each
individual LPU and determining how specific patterns of axonal connectivity
integrate them into functional subsystems.</p>
<h4>What's the difference between synaptic and axonal connectivity
patterns?</h4>
<p>An LPU comprises two populations of neurons, i.e., its local neurons (which
project exclusively to other neurons comprised by the LPU), and its projection
neurons (which may also project to neurons in other LPUs). Additionally, all
synaptic connections defined between an incoming axon and neurons within an LPU
are deemed to be part of the LPU. Axonal connectivity patterns between LPUs
refer to the existence of axons that project from one LPU to the input ports of
another.</p>
<h2>Using Neurokernel</h2>
<h4>How do I download and install it?</h4>
<p>See the installation instructions
<a href="https://github.com/neurokernel/neurokernel/blob/master/README.rst">here</a>.</p>
<h4>Are there any examples of how to use Neurokernel?</h4>
<p>Yes! Take a look in the
<a href="https://github.com/neurokernel/neurokernel/tree/master/examples">examples</a> folder and
the corresponding <a href="http://neurokernel.github.io/docs.html">IPython notebooks</a>.
These examples include partial models of the fly's olfactory and vision systems that are based upon
actual fly connectome data.</p>
<h4>What neuron and synapse models does Neurokernel support?</h4>
<p>Neurokernel currently provides sample implementations of a select
number of neural component models and compatible synapse models; these
include a spiking neuron model (Leaky Integrate-and-Fire), a graded
potential neuron model (Morris-Lecar configured to not emit spikes)),
alpha function synapses, and a conductance-based synaptic model. These
components can be immediately configured via configuration files (see
below). We expect to extend this set of primitives with additional
components required by future LPU models.</p>
<h4>Can Neurokernel load LPU models specified using formats such as
NeuroML?</h4>
<p>Neurokernel does not yet support NeuroML, but it can load LPU models specified in
<a href="http://www.gexf.net">GEXF</a>, a widely supported graph storage format that
is compatible with a range of Python packages and tool
formats.</p>
<h4>Can Neurokernel's performance be improved?</h4>
<p>Certainly.</p>
<p>The design of traditional neuronal network simulations has been
driven mostly by a desire to optimize performance. This is natural
because many of the modeling parameters in these simulations (i.e.,
neuron and synapse models, etc.) are assumed to remain fixed throughout
model execution. While constant parameters will continue to figure in
neural models, there is a need to place greater emphasis on
programmability and validation of the I/O function of neural circuits in
order to both enable computational neuroscientists to build upon the
work of their peers and facilitate the improvement of fly brain models
in light of new biological data.</p>
<p>Focusing on programmability before performance can be understood as analogous to
engineering complex systems such as the Linux kernel. Although the initial
implementation of Linux provided similar performance to other operating systems
available at the time, Linus Torvald's decisions to target a specific platform
(i.e., commodity x86 computers) and enforce a specific development methodology
(i.e., by means of a free software license) were instrumental in enabling the
development of the kernel into a near-ubiquitous basis for high-performance
operating systems.</p>
<h4>I want to set up a GPU cluster for multi-user Neurokernel hacking!</h4>
<p>Check out <a
href="https://github.com/neurokernel/gpu-cluster-config">these
notes</a>.</p>
<!--<h4>What about API documentation?</h4>
<p>Right here: (link to Sphinx-generated API documentation)</p> -->
<h4>I have a question not addressed in this FAQ!</h4>
<p>Join the project
<a
href="https://lists.columbia.edu/mailman/listinfo/neurokernel-dev">mailing
list</a> or <a href="http://neurokernel.67426.x6.nabble.com/">forum</a> and fire away!
If you encounter a bug, we encourage you to submit it via the project
<a href="https://github.com/neurokernel/neurokernel/issues">issue tracker</a>.</p>
<h2>How to Participate in Neurokernel Development</h2>
<h4>What is an RFC and why are they important to Neurokernel's
development?</h4>
<p>First employed in the development of the Internet (see
<a href="http://tools.ietf.org/html/rfc2026">RFC 2026</a>) and used more recently in
the development of the Python programming language (in the guise of
<a href="http://www.python.org/dev/peps/">Python Enhancement Proposals (PEPs)</a>),
RFCs are design proposals of a complex system's major components that are made
available to the system's developers and other interested parties in order to
elicit feedback (or "comments"). Once published, an RFC may be superseded by a
newer RFC that incorporates modifications made in response to feedback. This
process enables RFCs to both serve as authoritative specifications of a system's
design (if deemed acceptable) and an archive of that system's design
development. All published Neurokernel RFCs are publicly available on the
<a href="http://neurokernel.github.io/docs">project website</a>.</p>
<p>Submitted RFCs must either be explicitly placed in the public domain or
released under the <a href="http://www.opencontent.org/openpub/">Open Publication
License</a>.</p>
<h4>Can I submit an RFC? How do I go about it?</h4>
<p>Yes! Contact the Neurokernel developers via the project mailing list to have
your RFC reviewed and uploaded to the Neurokernel site.</p>
<h4>I'm interested in modeling a certain LPU. Has it already been
modeled?</h4>
<p>A list of the LPUs and hubs in the fly brain with links to currently implemented
models is available on the project
<a href="https://github.com/neurokernel/neurokernel/wiki/LPU-List">wiki</a>.</p>
<h4>I've written a new Neurokernel-based LPU model. How can I share it?</h4>
<p>Submit the model as a
<a href="http://github.com/neurokernel/neurokernel/pulls">pull request</a>
on GitHub and write an RFC describing details of the model.</p>
<h4>I want to propose a Great New Feature for Neurokernel. How can I do
so?</h4>
<p>Feel free to moot your idea on the project mailing list. If the
feature is nontrivial and cannot be described briefly, writing an RFC
that clearly delineates the proposal would be very helpful.</p>
<h4>I've written some new code for Neurokernel. How can I have it
incorporated into the project's code base?</h4>
<p>Submit your new code as a pull request or (if the code is relatively brief) an
enhancement issue. Note that Neurokernel is developed under the
open-source <a href="http://www.opensource.org/licenses/bsd-license.php">BSD
license</a>; all code contributed to the project must be released under
copyright terms that are compatible with this license. Please consult
with a competent legal authority if you are uncertain about the
compatibility of your code's license.</p>
</div>
</div><!-- container -->
</div><!-- wrap -->
<div id="footer_wrapper">
<div id="footer">
<p><a href="https://creativecommons.org/licenses/by/3.0/us/"><img src="img/by.svg" style="position:relative;" width=70px/></a> <a href="people.html#nk_web_team">Neurokernel Web Team</a></p>
<p>Designed by <a href="http://lebedov.github.io">Lev Givon</a>
<p>Maintained by <a href="mailto:[email protected]">C.-H. Yeh</a></p>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>