Slashdot Mirror


Ask Slashdot: DIY Computational Neuroscience?

An anonymous reader writes "Over the last couple years, I have taught myself the basic concepts behind Computational Neuroscience, mainly from the book by Abbott and Dayan. I am not currently affiliated with any academic Neuroscience program. I would like to take a DIY approach and work on some real world problems of Computational Neuroscience. My questions: (1) What are some interesting computational neuroscience simulation problems that an individual with a workstation class PC can work on? (2) Is it easy for a non-academic to get the required data? (3) I am familiar with (but not used extensively) simulators like Neuron, Genesis etc. Other than these and Matlab, what other software should I get? (4) Where online or offline, can I network with other DIY Computational Neuroscience enthusiasts? My own interest is in simulation of Epileptogenic neural networks, music cognition networks, and perhaps a bit more ambitiously, to create a simulation on which the various Models of Consciousness can be comparatively tested."

21 of 90 comments (clear)

  1. Check out NEST by somepunk · · Score: 3, Informative

    It's open source, and integrates with Python and the whole SciPy suite. I'm not a neuroscientist, but I work in one's lab. I haven't used the software extensively, but it's installed on a Linux VM wasiting for some love while we work on other things. http://www.nest-initiative.org/

    --
    Those people who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)
  2. Re:Study and practice this in private. by Travis+Mansbridge · · Score: 5, Insightful

    It sounds like the "professional" is sick of his job.

  3. Good start, now.... by Improv · · Score: 3, Insightful

    Good start, now go do some formal study and get a degree. There's too great a risk, with self-taught people, for them to only expose themselves to the ideas that are appealing to them. Academic fields recognise this; you're not going to be ready to contribute to the cutting edge unless you put your ideas in the field up for reshaping by people who know more than you do, and that's a good thing.

    --
    For every problem, there is at least one solution that is simple, neat, and wrong.
    1. Re:Good start, now.... by multimediavt · · Score: 2

      Mod parent up! I have been in academia for more than twenty years and can say without a doubt that being around experts in a field cannot be replaced. That is not to say there aren't Ramanujans and Rain Men out there, those that have natural abilities to learn and the idiot savants. Computational neuroscience isn't something you lightly tread into as a hobby and think you're going to contribute to anything more than learning how difficult it is to do. If you want to contribute and you think you have the chops, get involved in a degree program where you can do research that is focused on areas that interest you. These faculty members have web pages that list their areas of research and sometimes their affiliations (NIH, CDC, DOD, etc.). It's not hard to find the people doing the research that you'd like to do. It is hard to actually have the chops to enter the program and get in the game. Otherwise, I'd look for programming jobs for those same research groups. The larger ones will most likely have openings from time-to-time. You may be able to back in by getting another job somewhere on the campus and then building up connections for a future opening with the group you want to work with.

    2. Re:Good start, now.... by ceoyoyo · · Score: 2

      And a lot more who fail miserably. Sometimes taking down other people with them.

      It's certainly possible to make valuable contributions without a formal education, but it's not the norm. If you look at the people who do it, they're almost all brilliant; humble, at least about their work; extensively, and widely, informally educated; and benefit from a lot of interaction with people who DO know something about the field.

      Not having those things, at least to some degree, is the recipe for a crackpot.

      To the submitter, computational neuroscience is still a nice field where somebody with some time, a willingness to learn, and a computer can make a contribution. Potentially a big contribution. Try to make contacts with academics. If you think you've got something, run it by the pros. As a masters student I shared an office with a neurosurgeon. I'd show him things I thought were awesome and he wouldn't think they were very useful. But a lot of the things I thought were trivial he'd get really excited about.

    3. Re:Good start, now.... by neonsignal · · Score: 2

      You'll find that the academic system is not as elitist as you would think, at least not in countries where the barriers to entry are low. It only takes a few years to work through a basic degree, and if you have any ability, you can soon move beyond that to real research and contributions.

      The reality in academia is that you can put up any ideas at all, and the peer-reviewed journals have a huge diversity of contributors. Sometimes the strongest papers are those that argue an idea to its logical extreme; although reality is usually shades of gray, this diversity of ideas all add insight.

      The reason why academia may reject certain ideas is not because the ideas are radical (there are a myriad ideas in the university context), but because those ideas have not been thought through. There is no substitute for years of developing an idea and a coherent presentation of it.

      I don't want to gild the lily here; there are many contexts which make it hard for someone to participate in academia, whether for economic reasons or time commitments. But that's a social reality. If many people don't have "a room of one's own" as Virginia Woolf put it, then we have to push for more than changes in the academies; we have to push for fundamental social reform.

    4. Re:Good start, now.... by Anonymous Coward · · Score: 2, Interesting

      You'll find that the academic system is not as elitist as you would think

      This, in a thread that was started by some academic saying, "There is no way to do interesting computational neuroscience unless you quit your job, convince an admissions board you're worthy of their Institution, and spend 5-6 years as a minimum-wage apprentice/grad student." The GGP is basically saying he won't even talk to people unless they've been properly credentialed, and is absolutely being an elitist snob. The OP doesn't seem to want to do publishable original research, but at least to do something new-ish. He asks about access to data and how to communicate with 'the community.'

      Unfortunately, 'the community' has terrible social/professional networking tools. Essentially, it all gets done in person at professional conferences, invited seminars, and during the critical grad school/postdoc. To some extent, professional communication only 'counts' if it appears in written form in one of a few credible journals. This is also part of academic elitism: there's no Neuro-Facebook where you have to wade through mountains of naive crap to find the nugget of real science. The OP wants Neuro-facebook, where he can talk about cool projects with other enthusiasts, and believes he'll be able to sort the good from the bad for himself. I think he's right. He may never find 'professional' neuroscientsts there, if it existed, but enthusiasts are definitely capable of doing novel, cool work.

  4. Re:Study and practice this in private. by Smallpond · · Score: 3, Insightful

    Ignore the naysayers. Do what you love. As for programming, professionals have created more security nightmares than amateurs.

    Model of Consciousness seems a bit ambitious. Something easy to measure and readily available is how to hit a baseball. A fastball is moving faster than your eyes can track it, so you have to create an internal model of where it's going and swing a mechanical system (your arm and the bat) at the right time and place to knock it into the stands. It would be interesting to determine what inputs the brain uses and model the control system.

  5. Computational neuro is more than simulations by Anonymous Coward · · Score: 2, Interesting

    The point of running all the simulations is to aid in the understanding of how neural circuits compute; they aren't all that useful outside a theoretical framework. Computational neuroscience heavily uses concepts from dynamical systems, statistical inference, information theory etc. If you want to figure out new ideas about how neural circuits compute or represent information, then some exposure to these topics is essential. On the other hand, if you simply want to play around with and/or tweak models built by others, good programming/debugging skills should suffice. The network simulators are basically tools that allow you test out theoretical models of computing (which inevitably result from framing the question in the mathematical/physical language).
    Playing with these models can be a lot of fun, but don't expect to find some fundamental principle if you don't know what you are looking for -- i.e. w/o a theory.

    1. Re:Computational neuro is more than simulations by tylikcat · · Score: 4, Interesting

      +1

      That all being said, going out and playing with some of the established tools, and reimplementing some classic models (or building models off of wet lab papers, or whatever) is going to build you up a great skill set, and make it a lot easier to find a lab position if you want to go that directon (either a paid one or a volunteer one, each has advantages).

      I'm personally enough of a biologist to feel compelled to point out that a lot of what has been done in larger networks has diverged from biology in critical ways - some of it might be interesting in its own right, but it's not really neuroscience in any meaningful way.

      Get a solid grounding in Neuroscience. (Kandell, Jessel and Schwartz, Principles of Neuronal Science, is the standard text, it's excellent, and highly torrented.) Please, please, please take some time to understand the variety and complexity of single neurons - they are way more complicated than many of the people who model systems with high numbers of neurons let on. Having a system with 100 billion simulated neurons means an awful lot less if the neurons themselves are shit.

      Re-implement some classic systems from scratch. Yeah, I mean start with Hodgkin and Huxley, and build up from there. You will learn things from doing that yourself that you'll miss by just diving in with established tools. (And a lot of the established tools have issues.) Itzikevitch, Wilson, and Trautenburg are all favorites of mine off the top of my head. Strogatz is great as an introduction to dynamical systems.

  6. Re:Don't do it alone by tylikcat · · Score: 2

    I gotta agree with this.

    You can do a lot on your own, and I personally don't see any reason why not to (unlikely a poster above, hey, if you write shitty code, I just won't use it - and it's not like there aren't plenty of neuroscientists writing shitty code because being a theorist doesn't make you a programmer.) But getting more exposure to other people's ideas and pointers to resources is going to do you a world of good. And you don't need much of a background if you have computer skills - people love volunteers.

    I'd start looking at Itzekevich, and some of the more complex single neuron systems. (Partly because if you don't understand these, you're unlikely to understand a lot of the reasons why simpler neuron models with a lot more neurons are often a lot less useful than people want them to be.)

    Have to run and teach a class, will try to get back to this later.

  7. Re:Study and practice this in private. by khallow · · Score: 3, Interesting

    It's very noble to want to learn and to further educate yourself. But for the sake of the professionals in the field, I do encourage you to engage in your study and practice of this field in private.

    I have a better idea. Completely ignore the above, terrible advise. While there is considerable value in doing your own work privately for a time, you need to communicate with others, if you want to improve your game. That means not just dumping code or whatever on the internet, but actually reading and listening to who else is already doing this sort of stuff. Keep in mind that most of your communication should be input - learning from others.

    Months or years later, a disaster of some sort happens (a security breach, data loss, and so on), and a professional gets dragged in to try to solve the problems. This wastes the professional's time, which is often very expensive. It also angers them, because it's a problem that would have been unavoidable had the amateurs just kept to themselves.

    Sounds like the "pro's" time isn't being wasted, if he's getting paid. And if you or anyone actually are "angry" over something this trivial, maybe you ought to find a different line of work.

    So unless you're aiming to become a professional in this field, rather than just an amateur or a hobbyist

    The only difference between a professional and an amateur/hobbyist is that the professional gets paid and tends to be a bit more knowledgeable. And that's the source of this friction between professional and amateur. The amateur is doing some of the professional's work for far cheaper. It's screwing with the professional's business model Keep that in mind when you read of professionals complaining about the amateurs.

  8. Re:Study and practice this in private. by bondsbw · · Score: 3, Interesting

    Not affiliated at all with Coursera, but I noticed this free course the other day. Starts in January.

    --
    All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
  9. Getting better access to information by ODBOL · · Score: 3, Interesting

    (2) Is it easy for a non-academic to get the required data?

    I am not familiar with this particular academic community, but generally it is not easy for an academic to get data. The most useful resource is probably the co-operation of those who have gathered the data, and in order to get that you have to find out who they are. The inclination to be helpful varies immensely across disciplines and people within disciplines, but all you lose by trying to make contact is possible embarassment. Step 2 in the list below will give you a tag to use when introducing yourself, which may make you feel less awkward and therefore may improve co-operation.

    I suggest 3 steps, in increasing cost, that are likely to help:

    1. 1. Get a community membership in the nearest university library. This should be cheap enough to be a no-brainer. It doesn't matter too much which university, because a lot of materials will be online through their Web catalogue, and there will be interlibrary loan. I'm not sure whether small 4-year colleges and community colleges have similar arrangements, but it's worth checking if one of those is much more convenient than a research university.
    2. 2. Join a professional society, and/or the special interest group of a professional society, interested in your topic. Costs vary wildly, order of magnitude $100 to $1,000 per year. The Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineers (IEEE) probably have interest groups, and there are almost surely such groups within some cognitive science societies, but I am not familiar with those.
    3. 3. Attend a conference sponsored by a group from step 2. This is likely to cost $1,000s when you add up travel, hotel, registration. If you have the time, and get lucky on location, you can save a bunch on travel. Saving by staying far from the conference hotel is usually a mistake. The value of the conference is less in attending talks than in meeting people, and having breakfast in the same hotel with everybody else can make a big difference. The success of unsolicited introductions will vary immensely across the people you try to meet, but you lose nothing but embarassment by trying. The main thing you can do to improve success is to avoid the Charybdis & Scylla of diffident awkwardness and bluff. Let on that you're an outsider, but don't downgrade whatever insight/ability/motivation you have. You'll probably have the greatest success meeting people who are networked in, but are not famous stars. That includes grad students and postdocs. It may be nice and polite to hang out with other outsiders, but probably not productive for your mutual goals.
    --
    Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
  10. Some answers by Okian+Warrior · · Score: 3, Informative

    I research hard AI. In my view thinking through and tackling example problems is the best way to explore a topic. If you require your system to mirror our current understanding of neuroscience, then you're essentially researching the algorithms of the brain.

    If you're specifically looking into epilepsy and related, consider checking out William Calvin's website. He's an experimental neuroscientist from University of Washington, who wrote many books that explain the neurological foundations of the brain in readable form with good detail.

    (1) What are some interesting computational neuroscience simulation problems

    Pretty much anything AI falls under that category. Go over to Kaggle.com and check out some of their competitions, including their past competitions. Check out the Google AI lab and see what they're doing, and check out recent publications to see what people are trying to solve. Ask yourself: Are humans better than the computer, and can it be done better?

    Here's a video of a system that uses neuron simulation (of a sort) to recognize hand-written digits. A hand-written digits dataset is in the UCI archive below.

    (2) Is it easy for a non-academic to get the required data?

    Generally, yes. UCI has a repository of machine-learning datasets. The researchers supporting Kaggle competitions frequently release their data.

    I've found that researchers are generally approachable, and will give away copies of their data (I have 4 datasets from researchers). As a personal anecdote, last week a researcher from this very forum sent me his dataset of Mars altitude images - I'm trying to come up with an algorithm to recognize craters.

    (3) I am familiar with (but not used extensively) simulators like Neuron, Genesis etc. Other than these and Matlab, what other software should I get?

    In my view, pick a computer language that has a wide support network of libraries, and code things from scratch.Something like Perl or R. At some point you will want to break open the box and see what's actually happening inside, and familiarity with the system (having constructed it) is key. You will want to insert trace statements, print out intermediate results, and so on. Most of the pre-built systems don't have what you will ultimately want, and building simulation objects isn't terribly hard.

    (4) Where online or offline, can I network with other DIY Computational Neuroscience enthusiasts?

    Please let me know if you find any (by posting a response).

    I've found that most AI enthusiasts are really "big data" enthusiasts, and most of them are all about business rather than AI. The IRC AI chatrooms are all but dead, and most of what is there are students asking for help with their homework. (Although to be fair, the lurkers there know everything about AI and can answer questions and make suggestions if you're stuck.)

    The NEAI meetup in Cambridge is mostly spectators - people who want to find out about AI or how to use AI ("how can I use AI to improve the performance of my financial company?"). I hear there's an AI meetup out on the West coast that's pretty good.

    See if there's a meetup in your area for something related, or start one and see if anyone shows up.

  11. Systematicity, and Fodor & Pylyshyn by upontheturtlesback · · Score: 5, Informative

    I have a recent PhD in neural computation, though from a functional cognitive and language modeling perspective, and not a neuroanotomical modeling perspective -- so it may be a different area than you're interested in. From a high-level perspective, neural computation has moved a lot in terms of scale in the past two decades (simulations can have millions of nodes), and it has moved a lot in terms of modeling the processes of individual neurons and neurochemistry. Very high-level functional mapping work has also moved a good deal with fMRI, EEG, and MEG becoming relatively inexpensive and very common techniques in cognitive experiments. One area that, in my opinion, has moved very little in the past 20 years is the ability for neural networks to learn non-trivial domain-general representations and processes, and to generalize from those representations and processes to novel (untrained) instances. In the late 80s, after connectionism had made return with Rummelhart and McClelland's popularization of the backpropagation algorithm and demonstration of its utility in a number of tasks earlier in the decade, a good deal of the literature demonstrated very basic limitations and failures of these systems to generalize to untrained instances, or to move away from toy problems. Fodor and Pylyshyn's "Connectionism and Cognitive Architecture" is a classic paper from that era, and Pinker wrote a lot language-specific criticisms as well. Stefan Frank has the most recent long-standing research program in this area that I'm aware of, and his earlier papers have good literature reviews that can further help guide ones background reading. There have been some limited demonstrations of systematicity with different architectures (like echo state networks), and comparatively little work on storing representations and processes simultaneously in a network, but so far these are long-standing and fundamental issues that need revitalization. When convincing demonstrations do arise, they'll likely not need more than a desktop to run, as it will be demonstrations in learning algorithms and architectures, not scale. For non-neural folks, classical neural network architectures are essentially very good at pattern matching and classification (e.g. being trained on handwriting, and trying to classify each letter as one of a set of known letters (A-Z) that it's seen many hundreds of instances of before), or things that involve a large set of specific rules (if X then Y). They're much less good at things that involve domain-general computation, that involve learning both representations and processes and storing them in the same system (i.e. let's read this paragraph and summarize it, or answer a question, or let's write a sentence describing a simple scene that I'm seeing). That's not to say that you couldn't make a neural system that did this -- you could sit down and hard-code an architecture that looked something like a von-neumann CPU architecture and program it to play chess or be a word processor, if you really wanted, but the idea is developing a learning algorithm that, by virtue of exposure to the world, will craft the architecture as such. The idea being that, after years of exposure, the world will progressively "program" the computational/representational substrate that is the brain to recognize objects, concepts, words, put them together into simple event representations, and do simple reasoning with them, much like an infant. I hope that helps. Of course all of this is written by someone interested in developmental knowledge representation and language processing, so it may be a completely different question than you'd wanted answered. best wishes.

  12. Feynman, and others by Okian+Warrior · · Score: 2

    So how about some examples, then? There are "so many cases", after all, so you should have no problem giving us 10 or 20 of the most convincing examples.

    It would be more convincing if you limited them to contributions to well-established fields, as well. There's nothing impressive about basic discoveries made in the infancy of a new field of study, when EVERYBODY involved is essentially an amateur.

    Richard Feynman is one of the few people to have decoded/translated a Mayan heiroglyphic codex.

    He did this as an amateur without anything close to a related degree.

    This kid discovered a new dinosaur,

    Just google "high school student makes scientific discovery" or "college student makes scientific discovery" for a big list.

  13. Re:Study and practice this in private. by sjames · · Score: 2

    So where was that 'pro' when it was time to analyse the software for suitability? Either not there or too busy being all angsty and professional.

  14. Re:Study and practice this in private. by Anonymous Coward · · Score: 3, Insightful

    That would be nice if all applied to "professional" meaning someone paid and "amateurs" as people not paid for their work. But it only really applies if you redefine it or pull some no true Scotsman stuff, and define professional as being those that create high quality stuff and amateurs as those that take shortcuts or fall short of high standards for whatever reason. Then you are stuck with something quite trite, "Keep it to yourself if it fails the arbitrary/ill-defined/conflicting standards of other random people on the internet."

  15. Re:Study and practice this in private. by sumdumass · · Score: 3, Insightful

    I would suggest professionals decide not to use the code from well-meaning but undertrained amateurs then. I mean the only way it would impact them is if the code is taken up and used. Outside of that, they are getting paid to do something specific and doing what you are hired to do was as far as I know, a hallmark of professionalism.

  16. Re:Study and practice this in private. by wanax · · Score: 2

    To amplify the above comment, as a neuroscientist with a computational background: don't try to go it alone.

    There are a few reasons for this:
    1) Research in the field is done by groups because the main problem in generating an 'interesting simulation problem' is carefully defining a scope and a target. That's really hard to do, and generally involves careful discussions between people with different knowledge bases and priorities. If you can't give a clear and succinct answer to the question "How, if successful, will this research advance the field?" to somebody like Larry Abbott, you aren't working on a 'real world problem.'

    2) The state of the field is generally about 2 years ahead of the published literature. Unless you have collaborators who routinely attend talks and meetings, and know what people in your area(s) of interest are doing, it's very easy to wind up on the wrong track.

    3) Modeling is only useful if it leads to experimental predictions that can be tested, and so needs to be part of an ongoing collaborative interaction between people collecting data, people analyzing it, and people modeling it. Without the entire loop in place, it's difficult to make useful contributions. Also related: outside of things like gene arrays, and a few other standardized approaches, most data in the field is collected by bespoke setups, so even understanding how to parse a data set requires interaction with the people who collected it.

    So to answer the original questions:
    (1) There are so many that it's impossible to specify. Very little computational neuroscience these days requires more than a workstation. You need to get into a collaboration to reduce the scope of the question for it to be answerable.

    (2) It's probably easier than you think, but again it requires collaboration with somebody who's in industry or academia (the latter is probably easier). There are several people I know who informally collaborate doing neural modeling or data analysis with established labs. There are plenty of researchers who welcome informal collaboration, as long as it's competent.

    (3) It really depends on who you wind up collaborating with, and the type of question. Neuron and Genesis are compartmental modelling simulators, which you'll only use if you wind up working with people on the molecular end of the spectrum (ie. figuring out intracellular processes). Most systems level work is done using Matlab (some Mathematica and Python as well).

    (4) Get involved with non-DIYers. Find a lab to collaborate with! Go to SFN next year, and/or ICCNS/ICANNS/CoSyne/etc (see for example: http://www.frontiersin.org/events/Computational_Neuroscience). Go to posters and talk with people. If you see something interesting, ask if they'd be interested in collaboration.. or ask them your question (1). It'll probably take multiple attempts to find the right group, but there are a ton of groups out there.

    Finally, I'd just like to emphasize that working on 'real world' problems in neuroscience (computational or not) is a time consuming endeavor. If you don't think you'll be able to devote several hundred hours a year at the least, it'll be hard for you to find tractable problems.