<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3331563262701117271</id><updated>2012-02-16T20:20:01.000-08:00</updated><category term='Teaching'/><category term='C++'/><category term='Intro to Neural Engineering'/><category term='MEA'/><category term='News Articles'/><category term='CTE'/><category term='Technical Talks'/><category term='Matlab'/><category term='Lab Publications'/><category term='EEG'/><category term='Modeling'/><category term='Video'/><category term='BMI/BCI'/><category term='Funny'/><title type='text'>Engineering the Interface</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5865679311392774127</id><published>2012-02-14T17:32:00.000-08:00</published><updated>2012-02-14T17:32:42.728-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Matlab vs. Python</title><content type='html'>I've never programmed a single line of Python code but recently a lot of people have been telling me that it has a lot of neat advantages over Matlab. I think I'm going to have to find a day to learn Python's ins and outs and get a feel for when it makes sense to use it over Matlab. &lt;a href="http://www.stat.washington.edu/~hoytak/blog/whypython.html" target="_blank"&gt;This article&lt;/a&gt; was quite persuasive to me. Time for a look. I'll report back once I've tried out some basics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5865679311392774127?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5865679311392774127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/02/matlab-vs-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5865679311392774127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5865679311392774127'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/02/matlab-vs-python.html' title='Matlab vs. Python'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5983196810532546772</id><published>2012-02-13T21:11:00.000-08:00</published><updated>2012-02-13T21:11:11.423-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>An End to the NFL?</title><content type='html'>&lt;a href="http://www.grantland.com/story/_/id/7559458/cte-concussion-crisis-economic-look-end-football" target="_blank"&gt;These economists&lt;/a&gt; seem to think that professional football's liability exposure will be too great in the light of the unfolding tipping point with respect to football's connection to CTE. Some interesting insight there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5983196810532546772?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5983196810532546772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/02/end-to-nfl.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5983196810532546772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5983196810532546772'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/02/end-to-nfl.html' title='An End to the NFL?'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2275023471973027109</id><published>2012-01-25T04:07:00.000-08:00</published><updated>2012-01-25T04:07:46.300-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><title type='text'>Retinitis Pigmentosa</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Fundus_of_patient_with_retinitis_pigmentosa,_mid_stage.jpg/800px-Fundus_of_patient_with_retinitis_pigmentosa,_mid_stage.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="213" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Fundus_of_patient_with_retinitis_pigmentosa,_mid_stage.jpg/800px-Fundus_of_patient_with_retinitis_pigmentosa,_mid_stage.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;During my postdoc at the &lt;a href="http://www.uclouvain.be/en-276869.html" target="_blank"&gt;University of Louvain&lt;/a&gt;, I studied techniques for restoring sight to blind people suffering from a disease called &lt;a href="http://en.wikipedia.org/wiki/Retinitis_pigmentosa" target="_blank"&gt;retinitis pigmentosa&lt;/a&gt;. Our technique involved a sophisticated brain implant that &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/14616518" target="_blank"&gt;electrically stimulated the optic nerve&lt;/a&gt; to produce sensations of light. Properly stimulated, the implant could cause the person to see recognizable patterns. It was really a pretty cool system. There are other labs working on the same problem, the most advanced of which is the &lt;a href="http://www.usc.edu/programs/neuroscience/faculty/profile.php?fid=45" target="_blank"&gt;Doheny Eye Institute &lt;/a&gt;at &lt;a href="http://www.usc.edu/" target="_blank"&gt;USC&lt;/a&gt; which works in tandem with a company called &lt;a href="http://2-sight.eu/ee/home-ee" target="_blank"&gt;Second Sight&lt;/a&gt;. Their strategy is to place a grid of stimulators directly on the retina. The electrodes are stimulated in patterns to match whatever scene is being seen by a video camera clipped to the user's glasses.&lt;br /&gt;&lt;br /&gt;Despite the success of such labs and the inherent coolness of the projects, I left my postdoc feeling that the future of such research was ultimately flawed. I reasoned that a biological solution would become available far sooner than an electrical one. Surely, some bright scientist would figure out how to squirt some genes into the retina to stimulate them producing healthy cells?&lt;br /&gt;&lt;br /&gt;It turns out that not only is such work being done but its actually being done in my backyard. &lt;a href="http://www.philly.com/philly/insights/in_health/20120125_Penn_researchers_report_gain_in_using_gene_therapy_to_battle_blindness.html?cmpid=131298144" target="_blank"&gt;This article&lt;/a&gt; discusses research being performed at Penn where, they are using gene therapy to treat retinitis pigmentosa in dogs. Very cool. Read the article through to the end. Lots of cool details.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2275023471973027109?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2275023471973027109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/01/retinitis-pigmentosa.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2275023471973027109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2275023471973027109'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/01/retinitis-pigmentosa.html' title='Retinitis Pigmentosa'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8287004245458609509</id><published>2012-01-16T08:54:00.000-08:00</published><updated>2012-01-16T08:54:20.488-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>Pendulum Waves</title><content type='html'>I did this just for fun. Not a great use of my time but I learned a few neat tricks in the process. I wrote a Matlab simulation of a pendulum art project I saw online.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/xd8_7FOq_1A" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The original video I based my simulation on is here:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/yVkdfJ9PkRQ" width="420"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Not that you care, but the Matlab code can be downloaded by clicking &lt;a href="http://www.box.com/s/zlif1lpu85yq4bhe3gp2" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8287004245458609509?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8287004245458609509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/01/pendulum-waves.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8287004245458609509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8287004245458609509'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/01/pendulum-waves.html' title='Pendulum Waves'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/xd8_7FOq_1A/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1017769498905686904</id><published>2012-01-12T08:38:00.000-08:00</published><updated>2012-01-12T08:38:17.595-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>Numerical Simulation</title><content type='html'>The other day I came across a neat problem that I'd used to teach the basics of numerical simulation to some undergraduates a few summers ago. I thought I'd re-post it here. The goal is to solve for the solution to the following third order differential equation:'&lt;div&gt;&lt;ul class="ul1"&gt;&lt;li class="li1"&gt;y''' + 5y'' + 8y' + 4y = 1&lt;/li&gt;&lt;/ul&gt;&lt;div class="p1"&gt;Use a timestep of dt = 200us and run the simulation for t = 10 seconds. The initial conditions are:&lt;/div&gt;&lt;ul class="ul1"&gt;&lt;li class="li1"&gt;y(0) = 5&lt;/li&gt;&lt;li class="li1"&gt;y'(0) = 1&lt;/li&gt;&lt;li class="li1"&gt;y''(0) = 0&lt;/li&gt;&lt;/ul&gt;&lt;div class="p1"&gt;This problem is fun because you can solve for a closed form solution and then compare that hand-solved answer to the simulated version. The simulated solution can be run using Matlab, C, or a combination. The combination solution is neat because it uses Matlab to create the data and plot the solution, but uses C-code (compiled in Matlab as a mex-function) as the super-fast solution engine. Mex-Functions are a bit tricky to learn but can often lead to valuable speed-ups in simulations.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;The solution to the third order differential equation can be solved by hand. You should get the following function:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bFYF8M018-g/Tw8IeE7ZZWI/AAAAAAAAAjw/lzdwc7bXNKA/s1600/eqn8894.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-bFYF8M018-g/Tw8IeE7ZZWI/AAAAAAAAAjw/lzdwc7bXNKA/s1600/eqn8894.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;The plot for this function is shown below along with the iterated solution that I generated using C++:&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-eeGn4mFnigY/Tw8JwtV2XsI/AAAAAAAAAj4/WFcyobemcUk/s1600/diffeq3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://1.bp.blogspot.com/-eeGn4mFnigY/Tw8JwtV2XsI/AAAAAAAAAj4/WFcyobemcUk/s400/diffeq3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;span style="color: #6aa84f;"&gt;Simulated Solutions&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p2"&gt;Here I present three numerical (i.e. simulated) solutions to the third order differential equation. All three yield the same simulated plot (see blue curve above).&lt;/div&gt;&lt;div class="p3"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;b&gt;&lt;span style="color: #6aa84f;"&gt;Matlab-Only Solution&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;clear&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;clf&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;dt&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt; 200e-6&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;tMax&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt; 10&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nSamples&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt; tMax&lt;span class="s1"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/span&gt;dt&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;y&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt; zeros&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;nSamples&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;b&gt; =&lt;/b&gt;&lt;span class="s3"&gt; 1&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;b&gt; =&lt;/b&gt;&lt;span class="s3"&gt; 0&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;y&lt;/span&gt;&lt;b&gt;(&lt;/b&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;b&gt;) =&lt;/b&gt;&lt;span class="s3"&gt; 5&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p5"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s4"&gt;for&lt;/span&gt; i&lt;span class="s1"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt;2&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;nSamples&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; dy&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt; a&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; da&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt; b&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;&amp;nbsp; &amp;nbsp; db&lt;/span&gt;&lt;b&gt; = -&lt;/b&gt;&lt;span class="s3"&gt;8&lt;/span&gt;&lt;b&gt;*&lt;/b&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;b&gt; -&lt;/b&gt;&lt;span class="s3"&gt; 5&lt;/span&gt;&lt;b&gt;*&lt;/b&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;b&gt; -&lt;/b&gt;&lt;span class="s3"&gt; 4&lt;/span&gt;&lt;b&gt;*&lt;/b&gt;&lt;span class="s2"&gt;y&lt;/span&gt;&lt;b&gt;(&lt;/b&gt;&lt;span class="s2"&gt;i&lt;/span&gt;&lt;b&gt;-&lt;/b&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;b&gt;) +&lt;/b&gt;&lt;span class="s3"&gt; 1&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; y&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span class="s1"&gt;&lt;b&gt;) =&lt;/b&gt;&lt;/span&gt; y&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span class="s1"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;) +&lt;/b&gt;&lt;/span&gt; dy&lt;span class="s1"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/span&gt;dt&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a&lt;/span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; =&lt;/b&gt;&lt;span class="s2"&gt; a&lt;/span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; +&lt;/b&gt;&lt;span class="s2"&gt; da&lt;/span&gt;&lt;b&gt;*&lt;/b&gt;&lt;span class="s2"&gt;dt&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p4"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s2"&gt;&amp;nbsp; &amp;nbsp; b&lt;/span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; =&lt;/b&gt;&lt;span class="s2"&gt; b&lt;/span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; +&lt;/b&gt;&lt;span class="s2"&gt; db&lt;/span&gt;&lt;b&gt;*&lt;/b&gt;&lt;span class="s2"&gt;dt&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;t&lt;span class="s1"&gt;&lt;b&gt; = (&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;length&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;y&lt;span class="s1"&gt;&lt;b&gt;))*&lt;/b&gt;&lt;/span&gt;dt&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;plot&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;t&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;y&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="p1"&gt;Using the tic/toc commands in Matlab, I determined that the Matlab-only solution took an average of 12ms, including the time to create the plot.&lt;/div&gt;&lt;div class="p2"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;b&gt;&lt;span style="color: #6aa84f;"&gt;C++ Only Solution&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;The C++ Only solution is fast, but we need a way to pass the data back to Matlab in order to plot it. In this solution, C++ writes the data to a binary file. Then a separate Matlab script reads the data from the file and plots it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;cmath&amp;gt;&lt;br /&gt;#include &amp;lt;fstream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;double dt = 200e-6;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double tmax = 10;&lt;br /&gt;double pi = 4 * atan(1);&lt;br /&gt;int &amp;nbsp; &amp;nbsp;nSamples = floor(tmax/dt);&lt;br /&gt;double da,db,dy;&lt;br /&gt;double a=1;&lt;br /&gt;double b=0;&lt;br /&gt;double y[nSamples];&lt;br /&gt;int i;&lt;br /&gt;ofstream out("data2.bin",ios::out|ios::binary);&lt;br /&gt;y[0] = 5;&lt;br /&gt;for(i=1;i&amp;lt;nSamples;i++){&lt;br /&gt;dy = a;&lt;br /&gt;da = b;&lt;br /&gt;db = -8*a - 5*b - 4*y[i-1] + 1;&lt;br /&gt;y[i] = y[i-1] + dy*dt;&lt;br /&gt;a &amp;nbsp; &amp;nbsp;= a &amp;nbsp; &amp;nbsp; &amp;nbsp;+ da*dt;&lt;br /&gt;b &amp;nbsp; &amp;nbsp;= b &amp;nbsp; &amp;nbsp; &amp;nbsp;+ db*dt;&lt;br /&gt;}&lt;br /&gt;out.write((char *)&amp;amp;dt , sizeof(double));&lt;br /&gt;out.write((char *)y &amp;nbsp;,nSamples*sizeof(double));&lt;br /&gt;out.close();&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style="color: #6aa84f;"&gt;This is the Matlab plot code:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;clear&lt;span class="s1"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;clf&lt;br /&gt;&lt;span class="s2"&gt;fid&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt; =&lt;/b&gt;&lt;/span&gt;&lt;span class="s2"&gt; fopen&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;'data2.bin'&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;'rb'&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;dt&lt;span class="s1"&gt;&lt;b&gt;&amp;nbsp; =&lt;/b&gt;&lt;/span&gt; fread&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;fid&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="s4"&gt;'double'&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;y&lt;span class="s1"&gt;&lt;b&gt; &amp;nbsp; =&lt;/b&gt;&lt;/span&gt; fread&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;fid&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="s4"&gt;'double'&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;fclose&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;fid&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="s2"&gt;t&lt;/span&gt;&lt;b&gt; = (&lt;/b&gt;&lt;span class="s3"&gt;0&lt;/span&gt;&lt;b&gt;:&lt;/b&gt;&lt;span class="s2"&gt;length&lt;/span&gt;&lt;b&gt;(&lt;/b&gt;&lt;span class="s2"&gt;y&lt;/span&gt;&lt;b&gt;)-&lt;/b&gt;&lt;span class="s3"&gt;1&lt;/span&gt;&lt;b&gt;)*&lt;/b&gt;&lt;span class="s2"&gt;dt&lt;/span&gt;&lt;b&gt;;&lt;/b&gt;&lt;br /&gt;plot&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;t&lt;span class="s1"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;y&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class="s2"&gt;xlabel&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;'time (s)'&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="s1"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;'Solution to 3rd Order Diff-Eq'&lt;span class="s1"&gt;&lt;b&gt;);&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;span style="color: #6aa84f;"&gt;C++ / Matlab / Mex Solution&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;While the previous solution works, it requires that we switch back and forth between the Matlab and C++ environments, which is inherently inefficient; it also requires that we generate a large data file for the purpose of shuttling the data back and forth. A better solution is to create a mex-file. A mex file is a C/C++ file that is compiled directly within Matlab. The compiled executable can be called directly from Matlab; data parameters can be passed back and forth from Matlab to the executable without the intermediate step of dumping it in a file. This solution requires that we only work with one programming environment: Matlab. The coding is a bit more complicated, but the solution is ultimately more elegant. The complexity of the coding is primarily due to the way Matlab passes data to C/C++. The Matlab data comes in structures, with pointers everywhere; learning to maneuver in this manner takes some getting used to. There are good references for this process &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.mathworks.com%2Fsupport%2Ftech-notes%2F1600%2F1605.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFrqEzcQUSi7vizfJ3wJp_SoYiYhGeyXww"&gt;&lt;span class="s1"&gt;here&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.mathworks.com%2Faccess%2Fhelpdesk%2Fhelp%2Ftechdoc%2Fapiref%2Fbqoqnz0.html%23bqoqobe-1&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFrqEzeQ4SwmQDnEv9nIDuZon5CQG_br6g"&gt;&lt;span class="s1"&gt;here&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;mex.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;math.h&amp;gt;&lt;br /&gt;// This is the subroutine that actually performs the simulation&lt;br /&gt;void runSim(double **py, double **pt, double dt, double tMax, int *nSamples){&lt;br /&gt;&amp;nbsp; &amp;nbsp; double pi = 4 * atan(1);&lt;br /&gt;&amp;nbsp; &amp;nbsp; double da, db, dy;&lt;br /&gt;&amp;nbsp; &amp;nbsp; double a=1;&lt;br /&gt;&amp;nbsp; &amp;nbsp; double b=0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; int i;&lt;br /&gt;&amp;nbsp; &amp;nbsp; double tTemp = dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; double *y, *t;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; *nSamples = floor(tMax/dt);&lt;br /&gt;&amp;nbsp; &amp;nbsp; *py = new double[*nSamples];&lt;br /&gt;&amp;nbsp; &amp;nbsp; y = *py;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; *pt = new double[*nSamples];&lt;br /&gt;&amp;nbsp; &amp;nbsp; t = *pt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; y[0] = 5;&lt;br /&gt;&amp;nbsp; &amp;nbsp; t[0] = dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; for(i=1;i&amp;lt;*nSamples;i++){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dy = a;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; da = b;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; db = -8*a - 5*b - 4* y[i-1] + 1;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y[i] = y[i-1] + dy*dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a &amp;nbsp; &amp;nbsp;= a &amp;nbsp; &amp;nbsp; &amp;nbsp;+ da*dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b &amp;nbsp; &amp;nbsp;= b &amp;nbsp; &amp;nbsp; &amp;nbsp;+ db*dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t[i] = t[i-1] + dt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;// ****************************************************&lt;br /&gt;// ******************** START HERE ********************&lt;br /&gt;// ****************************************************&lt;br /&gt;// Mex routines must always start with "mexFunction"&lt;br /&gt;// Here, the input data is imported from Matlab. Then the actual function&lt;br /&gt;// executed (in this case "runSim"), and finally the output data is&lt;br /&gt;// exported back to Matlab&lt;br /&gt;void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Step 1: Import input variables from Matlab&lt;br /&gt;&amp;nbsp; &amp;nbsp; double dt &amp;nbsp; = *(double *)mxGetData(prhs[0]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; double tMax = *(double *)mxGetData(prhs[1]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Step 2: Declare variables&lt;br /&gt;&amp;nbsp; &amp;nbsp; int nSamples;&lt;br /&gt;&amp;nbsp; &amp;nbsp; double *y,*t;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Step 3: Run the simulation&lt;br /&gt;&amp;nbsp; &amp;nbsp; runSim(&amp;amp;y, &amp;amp;t, dt, tMax, &amp;amp;nSamples);&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Step 4: Export the results back to Matlab&lt;br /&gt;&amp;nbsp; &amp;nbsp; double *output;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if (nlhs&amp;gt;=1){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plhs[0] = mxCreateDoubleMatrix(nSamples, 1, mxREAL);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output = mxGetPr(plhs[0]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memcpy(output, y, nSamples*sizeof(double));&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; if (nlhs&amp;gt;=2){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; plhs[1] = mxCreateDoubleMatrix(nSamples, 1, mxREAL);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output = mxGetPr(plhs[1]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memcpy(output, t, nSamples*sizeof(double));&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Step 5: Housekeeping&lt;br /&gt;&amp;nbsp; &amp;nbsp; delete [] y;&lt;br /&gt;&amp;nbsp; &amp;nbsp; delete [] t;&lt;br /&gt;}&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Once the C/C++ code has been written and compiled, the function is called from Matlab in the same way that any other function would be. In this case, the C file was called "diff_eq3.cpp", so therefore the compiled executable is called using "diff_eq3". This simulation took an average of 2ms, including plotting time. That is 6x faster than the Matlab-only solution!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;clear; clf;&lt;br /&gt;dt = 200e-6;&lt;br /&gt;tmax = 10;&lt;br /&gt;[y,t] = diff_eq3(dt,tmax);&lt;br /&gt;plot(t,y);&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;i&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1017769498905686904?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1017769498905686904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/01/numerical-simulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1017769498905686904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1017769498905686904'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/01/numerical-simulation.html' title='Numerical Simulation'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-bFYF8M018-g/Tw8IeE7ZZWI/AAAAAAAAAjw/lzdwc7bXNKA/s72-c/eqn8894.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3563741734334404548</id><published>2012-01-12T08:13:00.000-08:00</published><updated>2012-01-12T08:13:59.302-08:00</updated><title type='text'>Congrats Dr. Balasubramanian</title><content type='html'>Congratulations are in order for lab alum Dr. Karthikeyan Balasubramanian who landed a sweet postdoctoral position in the well-known and well-respected lab of &lt;a href="http://pondside.uchicago.edu/oba/faculty/Hatsopoulos/lab/"&gt;Dr. Nicholas Hatsopoulos&lt;/a&gt; at the &lt;a href="http://www.uchicago.edu/index.shtml" target="_blank"&gt;University of Chicago&lt;/a&gt;. Karth will be working on neural decoding and robotic interfaces for non-human primates. We are very proud of him and expect that this position will be his ticket to a successful academic career. Good luck, Karth!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3563741734334404548?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3563741734334404548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2012/01/congrats-dr-balasubramanian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3563741734334404548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3563741734334404548'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2012/01/congrats-dr-balasubramanian.html' title='Congrats Dr. Balasubramanian'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6162028076064430911</id><published>2011-11-30T12:50:00.001-08:00</published><updated>2011-11-30T12:56:39.564-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEA'/><title type='text'>Its Alive!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-i26a8Fn6UBQ/TtaXIyNCvmI/AAAAAAAAAjo/LapeT_6SP0Y/s1600/ch1_today.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/-i26a8Fn6UBQ/TtaXIyNCvmI/AAAAAAAAAjo/LapeT_6SP0Y/s400/ch1_today.png" width="400" /&gt;&lt;/a&gt;&lt;div&gt;Its alive! Since June we have been working on a project to grow rat neurons in a multi-electrode array dish, which is like a petri dish but instrumented with electrodes so that you can record electrical activities from the cells. Over the summer &lt;a href="http://obeidlab.blogspot.com/2011/08/multi-electrode-arrays.html" target="_blank"&gt;we were pretty successful&lt;/a&gt; in growing the cells but we hadn't been able to make any good recordings.&lt;/div&gt;&lt;br&gt;&lt;div&gt;Last week we scuttled the first batch of neurons and started a new batch, applying all of the hard earned knowledge from first time around. This time, victory! Just eight days after starting the neurons in the dish, we've made our first real recordings of neural activity. There are clear periods of spiking behavior and the spike waveforms are of the shape and amplitude that we expect. A real milestone for our lab!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6162028076064430911?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6162028076064430911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/11/its-alive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6162028076064430911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6162028076064430911'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/11/its-alive.html' title='Its Alive!'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-i26a8Fn6UBQ/TtaXIyNCvmI/AAAAAAAAAjo/LapeT_6SP0Y/s72-c/ch1_today.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6230511253277127752</id><published>2011-11-30T11:47:00.001-08:00</published><updated>2011-11-30T11:50:53.418-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>CTE &amp; the NCAA</title><content type='html'>The &lt;a href="http://www.nytimes.com/2011/11/30/sports/ncaafootball/college-players-move-concussions-issue-into-the-courtroom.html" target="_blank"&gt;New York Times&lt;/a&gt; is reporting on a class action lawsuit filed by four former college athletes against the NCAA. They are alleging that the NCAA is not doing enough to prevent concussions or to detect and treat them. The account of one of the plaintiffs about his experiences in high school and college football are particularly impressive. The article also talks about athletes learning to use their helmets as weapons. Would football be safer if everyone wore old-timey leather helmets? Players would have to be more cautious in their play and certainly wouldn't use their noggins as battering rams. Just a thought :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6230511253277127752?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6230511253277127752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/11/cte-ncaa.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6230511253277127752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6230511253277127752'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/11/cte-ncaa.html' title='CTE &amp; the NCAA'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-321717477041302654</id><published>2011-11-08T08:17:00.000-08:00</published><updated>2011-11-08T08:17:27.517-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BMI/BCI'/><title type='text'>Common Evaluations</title><content type='html'>We've been having an interesting discussion at work about the best way to improve the overall rate of progress in decoding brain signals. As a community, we've been making progress, but improvements have been painfully slow. Typically, one group will announce a big breakthrough and publish it in a splashy journal, but the reality is always that "the devil is in the details" - these experiments become awfully hard to replicate since experimental details are rarely divulged. For example, if you are conducting an EEG-based BMI experiment, you might have kept the lights dim or the room temperature cool or some other detail. You might have had to reject certain trials for some reason or another - these details are crucially important to making the experiment work. And therefore, having one lab build on the success of another is damn near impossible. As a corollary, it is nearly impossible to say which lab is making the most progress or which decoding technique is the best, because there is no such thing as an apples to apples comparison in this field as of yet.&lt;br /&gt;&lt;br /&gt;I'd like to change that.&lt;br /&gt;&lt;br /&gt;I learned from my department chair that human language technology research had a similar problem about 30 years ago - various labs were making outrageous claims about transcribing text to speech, but since everyone was using their own proprietary data set, the claims were very hard to sort out. The solution came from the National Institute of Standards and Technology (NIST). NIST decided to institute an annual challenge to the community: transcribe these phone conversations, detect speaker language, etc. NIST provided the data sets, so that everyone was working off the same data, and finally it became possible to objectively compare the performances of various labs and algorithms. As the project grew year after year, it became necessary to set up the Linguistics Data Consortium (&lt;a href="http://www.ldc.upenn.edu/"&gt;LDC&lt;/a&gt;) to design and create ever more sophisticated data sets. Part of the challenge is to properly design a data set such that all the control cases are properly addressed and that the desired algorithms can be properly tested. Once the data set is designed, LDC collects and disseminates the data. LDC will also archive and disseminate data from independent laboratories. The LDC is hosted by the University of Pennsylvania and currently has about 50 employees and has amassed about 500 data libraries in over 60 languages.&lt;br /&gt;&lt;br /&gt;The advantages are manifold. First, by having a community-wide competition, attention and energy is focussed on the most important problems. Program managers from federal funding agencies can be instrumental in setting these goals. Secondly, by having common data libraries, the community is able to effectively ferret out the real differences between various algorithms and techniques - this is a boon for overall progress. And finally, relative to the overall amount of money being spent by funding agencies to fuel all this research, the cost of collecting and distributing the data is relatively minor by comparison.&lt;br /&gt;&lt;br /&gt;The following graphic shows how the Common Evaluations paradigm of NIST and LDC has propelled progress in the human language technology field. As time has progressed, the challenges have become progressively harder and yet progress is always forthcoming. As a bonus, these data libraries have also become a real boon for industry players who wish to incorporate language technology into their products: these companies now have "industry-standard" data sets to build their algorithms around. So its not just good for progress in research, but also in industry.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EhI5UubEBxk/TrlVremYpfI/AAAAAAAAAjg/om_smXo1MV8/s1600/nist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-EhI5UubEBxk/TrlVremYpfI/AAAAAAAAAjg/om_smXo1MV8/s640/nist.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The challenges in making such a data consortium work are also manifold. First, it won't work without the consensus of the scientific community that this is a valuable exercise. If the main labs and key players refuse to participate, then the whole exercise becomes less useful. The main way to resolve this potential problem is to (a) directly engage the community and sell them on the importance of the concept and (b) to convince program managers at funding agencies to insist that their PIs participate in the consortium. Beyond the engagement issue, there are secondary problems such as funding, scope, organization, and so on. But none of these issues are show-stoppers. We believe there is a need for an LDC-like operation in the neural engineering world, and we are pursuing efforts to start such an endeavor, to be hosted (naturally) at Temple University.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-321717477041302654?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/321717477041302654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/11/common-evaluations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/321717477041302654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/321717477041302654'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/11/common-evaluations.html' title='Common Evaluations'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-EhI5UubEBxk/TrlVremYpfI/AAAAAAAAAjg/om_smXo1MV8/s72-c/nist.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4353586208544615567</id><published>2011-11-04T10:05:00.000-07:00</published><updated>2011-11-04T10:06:00.401-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>Convolution</title><content type='html'>It seems that no matter how long I teach signal processing, I always learn something new. Last week I thought of an interesting experiment regarding convolution and I was pretty surprised by the results. Consider a first order low pass filter with system response H(s) = wc / (s+wc) [where wc is the cutoff frequency in rads/sec]. The impulse response of this system is h(t) = wc*exp(-wc * t), and the corresponding differential equation is y' + wc*y = wc*x.&lt;br /&gt;&lt;br /&gt;Suppose we are interested in using a computer to determine the system output y(t) in response to an input x(t). I reasoned that there are two ways of solving this problem. The first is to apply convolution: x(t) [conv] h(t). The second is to use numerical approximation such as Forward Euler to solve the differential equation. In this case, FE could be used to arrive at y[i] = y[i-1](1-wc*dt) + x[i-1](wc*dt), where "dt" is the timestep.&lt;br /&gt;&lt;br /&gt;My big "aha" was the realization that there are two competing methods for numerically solving y(t), and in theory they should both give the same answer. However it seems reasonable that one method should be more "efficient" than the other in that it would work better with a larger value of dt (generally speaking you want to use the largest dt you can get away with to reduce your simulation time).&lt;br /&gt;&lt;br /&gt;So I decided to test the two methods against each other. My results for simulating a first order step response are shown here:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Dc3hmssRaZQ/TrQZpePbAnI/AAAAAAAAAjY/_pjbxAQCYmw/s1600/fig2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="341" src="http://3.bp.blogspot.com/-Dc3hmssRaZQ/TrQZpePbAnI/AAAAAAAAAjY/_pjbxAQCYmw/s400/fig2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;I've used a pretty large dt in order to accentuate weaknesses of the two approaches. The input step x(t) is in blue and the true (expected) step response y(t) is in black. The green signal shows the answer as computed via convolution whereas the red signal is the answer as computed using Forward Euler. In this case, you can easily see that that Forward Euler/differential equation approach is much more accurate than the convolution method. Of course, if you make dt get smaller and smaller, eventually, both the green and red signals converge onto the true "black" signal.&lt;br /&gt;&lt;br /&gt;So then I decided to repeat this experiment with a second order low underdamped low pass filter. Amazingly, the results were reversed!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-I-pB3ptZDos/TrQZmr1G1iI/AAAAAAAAAjQ/p4XJOlBcnZk/s1600/fig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="341" src="http://4.bp.blogspot.com/-I-pB3ptZDos/TrQZmr1G1iI/AAAAAAAAAjQ/p4XJOlBcnZk/s400/fig.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;In this case, the convolution method was much more accurate at low dts than the Forward Euler method. What's going on here? My suspicion is that it has to do with the complexity of the impulse response, which in this case is rather oscillatory, especially as compared to the first order case. My feeling is that the convolution method is better suited for capturing all those oscillations than the Forward Euler method, which is using an estimate of the derivative to capture those oscillations - I think that estimate becomes less accurate for large dt faster than the corresponding calculation of h(t) used in the convolution.&lt;br /&gt;&lt;br /&gt;So I thought all this was really interesting! Based on my observations, I hypothesize that (a) for an overdamped 2nd order system, the Euler method would be more accurate than convolution, and (b) for anything higher than a 2nd order system, the convolution method would be more accurate. I've run out of time to test either of these but let me know if you'd like to give it a try. I'd be happy to post your solutions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4353586208544615567?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4353586208544615567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/11/convolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4353586208544615567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4353586208544615567'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/11/convolution.html' title='Convolution'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Dc3hmssRaZQ/TrQZpePbAnI/AAAAAAAAAjY/_pjbxAQCYmw/s72-c/fig2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-38527845447631930</id><published>2011-10-31T11:01:00.000-07:00</published><updated>2011-10-31T11:01:31.405-07:00</updated><title type='text'>DBS for Alzheimer's Disease</title><content type='html'>DBS looks like its going to be indicated for yet another type of neural dysfunction: Alzheimers:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://neurotechzone.com/posts/912"&gt;http://neurotechzone.com/posts/912&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-38527845447631930?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/38527845447631930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/10/dbs-for-alzheimers-disease.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/38527845447631930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/38527845447631930'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/10/dbs-for-alzheimers-disease.html' title='DBS for Alzheimer&apos;s Disease'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1026967653568177180</id><published>2011-10-14T10:31:00.000-07:00</published><updated>2011-10-14T10:32:00.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Dennis Ritchie</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://spectrum.ieee.org/image/1947135" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://spectrum.ieee.org/image/1947135" width="148" /&gt;&lt;/a&gt;&lt;/div&gt;Unix and C pioneer Dennis Ritchie has passed away. Bummer. This &lt;a href="http://spectrum.ieee.org/tech-talk/computing/software/dennis-ritchie-1941-2011"&gt;IEEE Spectrum&lt;/a&gt; article gives the full details on his amazing career. I'll remember him for being one of the authors of the world's best C programming book, best known as "K+R" or "Kernighan and Ritchie". I had the pleasure of hearing Kernighan speak at Temple University a couple of years ago... pretty cool stuff. Anyways, thanks for the phenomenal tool, Dr. Ritchie. You've probably touched more lives that even Steve Jobs did!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1026967653568177180?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1026967653568177180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/10/dennis-ritchie.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1026967653568177180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1026967653568177180'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/10/dennis-ritchie.html' title='Dennis Ritchie'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2647826690622921579</id><published>2011-10-14T10:14:00.000-07:00</published><updated>2011-10-14T10:14:57.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><title type='text'>Memristors Going Commercial</title><content type='html'>A neat article at &lt;a href="http://spectrum.ieee.org/nanoclast/semiconductors/nanotechnology/memristors-go-biological"&gt;IEEE Spectrum&lt;/a&gt; about new technologies that will lead to the commercialization of the memristor. Recall that a memristor is like a resistor with memory - it changes its resistance as a function of current flow, and then remembers that resistance even if the part is then idle. This has magnificent potential to revolutionize computing because, like the amazing neurons in our brains, memristors can both process and store information at the same time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2647826690622921579?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2647826690622921579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/10/memristors-going-commercial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2647826690622921579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2647826690622921579'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/10/memristors-going-commercial.html' title='Memristors Going Commercial'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2320816208486806991</id><published>2011-10-14T10:04:00.000-07:00</published><updated>2011-10-14T10:15:25.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><title type='text'>Virtual Tactile Sensation</title><content type='html'>A new article was published last week in &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/21976021"&gt;Nature&lt;/a&gt;, written by none other than Dr. Joseph O'Doherty, a fellow grad student with me at Duke. O'Doherty's doctoral research was performed in the famed Nicolelis lab and focused on providing virtual vibrotactile sensation to a monkey performing a reaching task. Using implanted brain electrodes, series of stimuli were applied, intending to encode the feeling of different surface materials. The monkey was able to discriminate between different surface textures in order to receive juice rewards. The experiment had the monkey controlling the movements of a virtual "avatar" monkey, with the the tactile sensations experienced by the avatar being sent back to the real monkey's brain.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is stunning work because it represents the first time that a primate has been able to interpret microstimulations in the brain as tactile textures. Other investigators have performed related tasks such as teaching a rat to move left or right depending on which of two different stimulus patterns were delivered. But O'Doherty's work moves the field to a whole new level.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The video below shows the monkey avatar virtually "feeling" his three targets to determine which is the one that leads to a juice reward.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/WTTTwvjCa5g" width="420"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2320816208486806991?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2320816208486806991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/10/virtual-tactile-sensation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2320816208486806991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2320816208486806991'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/10/virtual-tactile-sensation.html' title='Virtual Tactile Sensation'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/WTTTwvjCa5g/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8747869696133498300</id><published>2011-09-06T08:05:00.000-07:00</published><updated>2011-09-06T08:05:24.140-07:00</updated><title type='text'>EMBS 2011 Conference</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yyBN8M_0VY8/TmY2eGe0vbI/AAAAAAAAAjM/dW-vj8Zl8c4/s1600/photo.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="238" src="http://1.bp.blogspot.com/-yyBN8M_0VY8/TmY2eGe0vbI/AAAAAAAAAjM/dW-vj8Zl8c4/s320/photo.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Last week, eight members of the Neural Instrumentation Lab travelled to Boston for the 2011 Engineering in Medicine and Biology Society's annual meeting. We had a great time - there were talks from top researchers in all the biomedical engineering fields. My students had a great chance to talk to and interact with faculty and students from around the world.&lt;br /&gt;&lt;br /&gt;One highlight was hearing Dean Kamen, the legendary inventor and engineer, give a keynote address. My undergraduates even stuck around to meet him!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8747869696133498300?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8747869696133498300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/09/embs-2011-conference.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8747869696133498300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8747869696133498300'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/09/embs-2011-conference.html' title='EMBS 2011 Conference'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-yyBN8M_0VY8/TmY2eGe0vbI/AAAAAAAAAjM/dW-vj8Zl8c4/s72-c/photo.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8430389772854253271</id><published>2011-08-30T22:58:00.000-07:00</published><updated>2011-08-30T22:58:33.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Video: The Future of Cyborgs</title><content type='html'>This is a neat little video where users of prosthetic limbs are interviewed. In my opinion, most of the people in the video don't actually meet the definition of cyborg. Not to worry - still plenty interesting:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/TW78wbN-WuU" width="640"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8430389772854253271?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8430389772854253271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/video-future-of-cyborgs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8430389772854253271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8430389772854253271'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/video-future-of-cyborgs.html' title='Video: The Future of Cyborgs'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/TW78wbN-WuU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3959260433592396564</id><published>2011-08-29T14:36:00.001-07:00</published><updated>2011-08-29T14:36:42.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEA'/><title type='text'>Fluorescent Lights</title><content type='html'>Just learned the hard way that fluorescent lights operate at 25kHz. Our first attempt at neuronal recordings yielded a giant power spike at 25kHz which we discovered (by trial and error) was due to the lights in the lab. Thank goodness for the real-time FFT feature on the oscilloscope.&lt;br /&gt;&lt;br /&gt;No sign of action potentials. I think we need to work out some grounding issues and try again tomorrow...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3959260433592396564?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3959260433592396564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/fluorescent-lights.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3959260433592396564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3959260433592396564'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/fluorescent-lights.html' title='Fluorescent Lights'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8529207888892827365</id><published>2011-08-23T07:05:00.000-07:00</published><updated>2011-08-23T07:05:47.443-07:00</updated><title type='text'>The Science of Speech Recognition</title><content type='html'>We have recently become quite interested in speech recognition because (a) our department chair is a recognized expert in the field (b) it is a classical paradigm for signal processing and (c) we feel there are some important parallels to neural signal decoding. I found this graphic online and thought it was interesting and relevant!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.medicaltranscription.net/speech-recognition"&gt;&lt;img alt="Speech Recognition" border="0" src="http://images.medicaltranscription.net.s3.amazonaws.com/speech-recognition.jpg" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;Created by: &lt;a href="http://www.medicaltranscription.net/"&gt;Medical Transcription&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8529207888892827365?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8529207888892827365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/science-of-speech-recognition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8529207888892827365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8529207888892827365'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/science-of-speech-recognition.html' title='The Science of Speech Recognition'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3163343327599384783</id><published>2011-08-19T08:29:00.000-07:00</published><updated>2011-08-19T08:29:17.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Hilbert Transform</title><content type='html'>We are learning how to analyze EEG signals for a project we are working on regarding traumatic brain injury in rats. It seems that one of the best methods for analyzing phase in a signal is to look at the Hilbert Transform. I invested a good deal of time yesterday learning about this process and I was pretty impressed. The two videos below are lectures from the Indian Institute of Technology about the underlying math. I summarized the videos in a short set of notes which is linked &lt;a href="http://www.box.net/shared/tybkjvro9qghvqvcplbi"&gt;here&lt;/a&gt;. I'll update again later once we have a better idea on how to apply this technique to EEG analysis.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="345" src="http://www.youtube.com/embed/QdUez83xz2k" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="345" src="http://www.youtube.com/embed/yssVLZEyNis" width="420"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3163343327599384783?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3163343327599384783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/hilbert-transform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3163343327599384783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3163343327599384783'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/hilbert-transform.html' title='Hilbert Transform'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/QdUez83xz2k/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5078244207970662516</id><published>2011-08-19T07:58:00.000-07:00</published><updated>2011-08-19T07:58:58.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEA'/><title type='text'>Multi-Electrode Arrays</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hnJHKeef9Rw/Tk554YOwuZI/AAAAAAAAAi0/jdINFirmPXc/s1600/pic6.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/-hnJHKeef9Rw/Tk554YOwuZI/AAAAAAAAAi0/jdINFirmPXc/s320/pic6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;This summer we've embarked on a new project. Based on some conversations that arose during my Neural Engineering graduate course, we've decided to try growing neurons in multi-electrode array (MEA) dishes to record from them. The dish where we grow the neurons is set up with a series of electrodes built right into the dish. We are growing rat neurons in the dish and they are doing quite well - they have spontaneously started growing axons to interact with each other and we expect they will be sufficiently &amp;nbsp;mature to record from within ten days.&lt;br /&gt;&lt;br /&gt;The picture at right shows our neurons under the microscope in the MEA dish. The black traces are the wires and electrodes of the dish. The neurons are the dark spots and the little dark lines between neurons are the axons. This picture was taken on August 19, 2011.&lt;br /&gt;&lt;br /&gt;Once we have this procedure established, we plan to explore whether these arrays of neurons can be 'trained' via stimulus protocols. In theory, repeated electrical stimuli can force the neurons to rearrange their connectivity in predictable patterns. In that sense the network can be said to "learn" the stimuli. This is effectively similar to creating a biological neural network.&lt;br /&gt;&lt;br /&gt;In order to save money, we are developing our own in-house circuit for amplifying and digitizing the neural signals (as opposed to buying an off-the-shelf rig). The circuit is based off the amplifier I published in my dissertation (in 2004). We have designed a 10-channel PCB which we hope to send today to the fabrication facility.&lt;br /&gt;&lt;br /&gt;More details to come as they emerge!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5078244207970662516?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5078244207970662516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/multi-electrode-arrays.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5078244207970662516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5078244207970662516'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/multi-electrode-arrays.html' title='Multi-Electrode Arrays'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-hnJHKeef9Rw/Tk554YOwuZI/AAAAAAAAAi0/jdINFirmPXc/s72-c/pic6.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-7955259270563878704</id><published>2011-08-12T10:11:00.000-07:00</published><updated>2011-08-12T10:12:43.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><title type='text'>More Lousy EEG Headcaps</title><content type='html'>Just awful - what do they expect to be able to measure?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.engadget.com/2010/12/26/neurosky-sticks-eeg-sensors-in-a-golf-visor-sells-it-to-japanes/"&gt;http://www.engadget.com/2010/12/26/neurosky-sticks-eeg-sensors-in-a-golf-visor-sells-it-to-japanes/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have an older post discussing a range of available products &lt;a href="http://obeidlab.blogspot.com/2011/05/eeg-headsets.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-7955259270563878704?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/7955259270563878704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/more-lousy-eeg-headcaps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7955259270563878704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7955259270563878704'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/more-lousy-eeg-headcaps.html' title='More Lousy EEG Headcaps'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-459344702703520854</id><published>2011-08-09T13:10:00.000-07:00</published><updated>2011-08-09T13:10:06.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><title type='text'>Mass Exodus Roils Brazilian Neuroscience Institute</title><content type='html'>&lt;a href="http://news.sciencemag.org/scienceinsider/2011/08/mass-exodus-roils-brazilian.html?ref=ra"&gt;This&lt;/a&gt; just came across my desk ... looks like some upheaval at Dr. Nicolelis' Brazillian institute...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-459344702703520854?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/459344702703520854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/08/mass-exodus-roils-brazilian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/459344702703520854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/459344702703520854'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/08/mass-exodus-roils-brazilian.html' title='Mass Exodus Roils Brazilian Neuroscience Institute'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1391523767563931202</id><published>2011-07-01T11:45:00.000-07:00</published><updated>2011-07-01T11:45:25.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy, Ctd</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yEadXWVXD2M/Tg4Vr6U6U2I/AAAAAAAAAic/MjKpwsgGlN0/s1600/football-hit-253x300.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-yEadXWVXD2M/Tg4Vr6U6U2I/AAAAAAAAAic/MjKpwsgGlN0/s200/football-hit-253x300.jpg" width="168" /&gt;&lt;/a&gt;&lt;/div&gt;CNN has an &lt;a href="http://www.cnn.com/2011/US/07/01/nfl.concussions.bell.rung/index.html?hpt=hp_c1"&gt;interesting report&lt;/a&gt; about retired NFL player &lt;a href="http://en.wikipedia.org/wiki/Dorsey_Levens"&gt;Dorsey Levens&lt;/a&gt; who is making a documentary about the situation with concussions in professional football. The basic gist of it is that football is built around a culture of toughness and survival; any admission of weakness can lead to reduced playing time and reduced salaries and endorsement deals. I suppose this is not a big surprise, but its still interesting to see that a documentary is being made by an actual former player who will hopefully be getting current players to speak on the record about a topic they are usually very reticent over.&lt;br /&gt;&lt;br /&gt;The article also mentions Dr. McKee at BU, who found evidence of CTE in 14 of the 15 brains of professional football players she studied. Apparently there will be a new publication out this summer with as many as 80 brains cataloged.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1391523767563931202?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1391523767563931202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/07/chronic-traumatic-encephalopathy-ctd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1391523767563931202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1391523767563931202'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/07/chronic-traumatic-encephalopathy-ctd.html' title='Chronic Traumatic Encephalopathy, Ctd'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-yEadXWVXD2M/Tg4Vr6U6U2I/AAAAAAAAAic/MjKpwsgGlN0/s72-c/football-hit-253x300.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5451164086907547140</id><published>2011-06-30T19:27:00.000-07:00</published><updated>2011-06-30T19:27:23.672-07:00</updated><title type='text'>The Ising Model, Quantum Mechanics, and a Very Fast Computer</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rSvzAPPIRno/Tg0weSYNRjI/AAAAAAAAAiY/rg3EHFskux0/s1600/ising.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="190" src="http://3.bp.blogspot.com/-rSvzAPPIRno/Tg0weSYNRjI/AAAAAAAAAiY/rg3EHFskux0/s200/ising.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;As I &lt;a href="http://obeidlab.blogspot.com/2011/06/quantum-computing.html"&gt;mentioned last week&lt;/a&gt;, we took a meeting with representatives from a quantum computing company based out of Canada. After all the explanations of quantum physics sailed right over my head, they said that their computer offers the ability to sample numbers from a Markov Random Field that has been simulated to steady state. In theory, this can also be done on a conventional computer, but it takes an impractical (damn near infinite) amount of time to reach steady state, before which the results don't mean much. The DWave gizmo can apparently do this in milliseconds.&lt;br /&gt;&lt;br /&gt;So I started to cast around for some sort of explanation for what a Markov Random Field is, and I found this &lt;a href="http://www.ams.org/publications/online-books/conm1-index"&gt;really neat book&lt;/a&gt; from 1980 which not only explains MRFs but also puts them in context of the Ising Model. The Ising Model is a statistical model that captures how the spins of ferromagnetic materials interact with each other and with an external field. The model then predicts the statistical likelihood of the overall distribution of those spins. A key element of this analysis is that system tries to reach a state of minimum energy, which means that as many spins as possible line up with each other and with the external field (if any).&lt;br /&gt;&lt;br /&gt;Any&amp;nbsp;stochastics&amp;nbsp;problem that can be formulated into an expression of a MRF can be solved at great speed by the DWave quantum computer (or so it is claimed). My goal is to keep reading the book and then to develop a simple narrative and explanation (in Matlab, naturally) that captures the essence and power of this technique.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5451164086907547140?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5451164086907547140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/06/ising-model-quantum-mechanics-and-very.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5451164086907547140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5451164086907547140'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/06/ising-model-quantum-mechanics-and-very.html' title='The Ising Model, Quantum Mechanics, and a Very Fast Computer'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rSvzAPPIRno/Tg0weSYNRjI/AAAAAAAAAiY/rg3EHFskux0/s72-c/ising.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-425292132809426557</id><published>2011-06-24T09:57:00.000-07:00</published><updated>2011-06-24T09:57:50.495-07:00</updated><title type='text'>Northeast Bioengineering Conference</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-22KVGSXa5g8/TgTAzTIR6cI/AAAAAAAAAhk/ssurVu_iU_Y/s1600/bmetlogo.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-22KVGSXa5g8/TgTAzTIR6cI/AAAAAAAAAhk/ssurVu_iU_Y/s200/bmetlogo.gif" width="198" /&gt;&lt;/a&gt;&lt;/div&gt;I am pleased to announce that the 2012 Northeast Bioengineering Conference will be held at Temple University. We are expecting around 500 attendees ranging from undergraduates through faculty to spend three days in Philadelphia discussing the full spectrum of bioengineering topics. We are also hoping to attract interest from regional bioengineering companies. This will be a wonderful opportunity for Temple. Stay tuned for more details as they emerge.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first challenge will be nailing down a date sometime in late March / early April 2012 and then securing a facility on campus to hold the event.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Previous sites of the NEBEC have been:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;2011: RPI&lt;/li&gt;&lt;li&gt;2010: Columbia&lt;/li&gt;&lt;li&gt;2009: MIT&lt;/li&gt;&lt;li&gt;2008: Brown&lt;/li&gt;&lt;li&gt;2007: SUNY Stony Brook&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;You can read more about last year's conference &lt;a href="http://www.nebec.org/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-425292132809426557?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/425292132809426557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/06/northeast-bioengineering-conference.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/425292132809426557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/425292132809426557'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/06/northeast-bioengineering-conference.html' title='Northeast Bioengineering Conference'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-22KVGSXa5g8/TgTAzTIR6cI/AAAAAAAAAhk/ssurVu_iU_Y/s72-c/bmetlogo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4758511412119752101</id><published>2011-06-23T10:23:00.000-07:00</published><updated>2011-06-23T10:23:15.209-07:00</updated><title type='text'>Quantum Computing</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.popsci.com/files/imagecache/article_image_large/articles/lef-plate-tunnel.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://www.popsci.com/files/imagecache/article_image_large/articles/lef-plate-tunnel.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Yesterday, I sat in on a meeting with representatives from &lt;a href="http://www.dwavesys.com/en/dw_homepage.html"&gt;DWave&lt;/a&gt;, makers of the world's first commercially available quantum computer. It was, to say the least, pretty impressive. The machine solves graph theory problems by minimizing quantum spin energy over an interconnected matrix of 128 qubits, and it does this very very quickly. The trick to making this technology useful is to figure out how to take existing problems and reformulate them as a graph theory task. They have their own research staff working on applications but they are also seeking outside collaborators such as Temple. We discussed whether quantum computing can improve performance in some long-standing problems in &lt;a href="http://en.wikipedia.org/wiki/Natural_language_processing"&gt;Human Language Technology&lt;/a&gt; (the field of our ECE Chair &lt;a href="http://www.temple.edu/engineering/academic-programs/ece/faculty-staff-directory/picone"&gt;Joe Picone&lt;/a&gt;) or in neural decoding. Did I mention you can program this thing using Matlab? Nerd heaven.&lt;br /&gt;&lt;br /&gt;Its been a long time since I was up to speed on graph theory, so it looks like I'll be hitting the books over the next week. Hopefully I'll post a primer after I do that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4758511412119752101?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4758511412119752101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/06/quantum-computing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4758511412119752101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4758511412119752101'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/06/quantum-computing.html' title='Quantum Computing'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2775819710924090951</id><published>2011-06-01T13:14:00.000-07:00</published><updated>2011-06-01T13:14:02.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>Dirichlet Distribution</title><content type='html'>I'm taking part in a journal club on data modeling comprised of faculty and graduate students. We have started with the paper, "&lt;a href="http://www.ams.org/mathscinet/search/publdoc.html?arg3=2006&amp;amp;co4=AND&amp;amp;co5=AND&amp;amp;co6=AND&amp;amp;co7=AND&amp;amp;dr=pubyear&amp;amp;pg4=AUCN&amp;amp;pg5=TI&amp;amp;pg6=PC&amp;amp;pg7=ALLF&amp;amp;pg8=ET&amp;amp;review_format=html&amp;amp;s4=navarro&amp;amp;s5=&amp;amp;s6=&amp;amp;s7=&amp;amp;s8=All&amp;amp;vfpref=html&amp;amp;yearRangeFirst=&amp;amp;yearRangeSecond=&amp;amp;yrop=eq&amp;amp;r=22&amp;amp;mx-pid=2215141"&gt;Modeling individual differences using Dirichlet Processes&lt;/a&gt;" by Navarro et al. Part of the paper reading process is to delve into the mathematical background that underpins the authors' research, which is how we wound up having a lively discussion on what the Dirichlet Process is and why its important.&lt;br /&gt;&lt;br /&gt;In order to help the graduate students visualize the Dirichlet Process, I made a widget in Matlab that plots the joint PDF of a third order Dirichlet Process. The density is colormapped onto a three dimensional representation of the sample space, which for this case is the plane x+y+z=1, confined to the first quadrant.&lt;br /&gt;&lt;br /&gt;A third order Dirichlet Process deals with a random process that has three discrete outcomes, but the probabilities for those outcomes are unknown. The Dirichlet Process quantifies the possible spread of probabilities for the outcomes. Note that each of the three unknown probabilities x, y, and z have to be between 0 and 1, and that x + y + z = 1 (because the sum of probabilities in a sample space &lt;i&gt;always&lt;/i&gt; equals one).&lt;br /&gt;&lt;br /&gt;You can download the widget (including another version for the 2nd order Dirichlet Process) &lt;a href="http://www.box.net/shared/bm9ju0qk6y"&gt;by clicking here&lt;/a&gt;. From within Matlab, just run "dirch_3" or "dirch_2". The smaller plots at the bottom show the marginal densities for the individual variables.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FJv3TgpqYBw/TeadKFkwRxI/AAAAAAAAAhY/_AIN0dda0F8/s1600/dirich.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="416" src="http://3.bp.blogspot.com/-FJv3TgpqYBw/TeadKFkwRxI/AAAAAAAAAhY/_AIN0dda0F8/s640/dirich.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;These demos show 2nd and 3rd order processes only because we can physically render them on a computer. Of course mathematics allows us to expand the Dirichlet Process up to n dimensions using all the same concepts and intuition that apply to the 2nd and 3rd order cases, even though creating visualizations of them is impossible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2775819710924090951?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2775819710924090951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/06/dirichlet-distribution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2775819710924090951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2775819710924090951'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/06/dirichlet-distribution.html' title='Dirichlet Distribution'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-FJv3TgpqYBw/TeadKFkwRxI/AAAAAAAAAhY/_AIN0dda0F8/s72-c/dirich.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8409126629441636349</id><published>2011-05-31T12:47:00.000-07:00</published><updated>2011-05-31T12:47:14.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Formatting Cout</title><content type='html'>I just found a neat solution to a common but vexing problem: formatting cout in C++. Turns out its pretty simple. This sample program shows how to enforce two decimal places of precision:&lt;br /&gt;&lt;hr /&gt;&lt;span style="color: #00aa66;"&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;iomanip&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;double x = 800000.0/81.0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;double y = 1.2345;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cout &amp;lt;&amp;lt; setiosflags(ios::fixed);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cout &amp;lt;&amp;lt; setprecision(2);&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cout &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="color: #3399cc;"&gt;&lt;br /&gt;&gt;&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;9876.54&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;1.23&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr/&gt;The first formatting command enforces a fixed-point output, and the second enforces two decimal places of precision.&lt;br /&gt;&lt;br /&gt;A much more complete explanation of options can be found at &lt;a href="http://www.arachnoid.com/cpptutor/student3.html"&gt;this blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8409126629441636349?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8409126629441636349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/formatting-cout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8409126629441636349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8409126629441636349'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/formatting-cout.html' title='Formatting Cout'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2653985082851059230</id><published>2011-05-30T13:32:00.000-07:00</published><updated>2011-05-31T16:18:42.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Neat Coding Trick # 3</title><content type='html'>Here's the final useful coding trick I learned last week. While Matlab is unparalleled for rapid prototyping, there are any number of reasons why you might want to deploy your code in another language such as C/C++. For example, you might be&amp;nbsp;targeting&amp;nbsp;an embedded device that requires C/C++. Or you might just want to port and compile certain functions you've written in Maltab. This would be the case if you've written a function that is slow to execute in Matlab but that will run very quickly once compiled. Just about anything that is loop-intensive will fall into this category.&lt;br /&gt;&lt;br /&gt;For a while now I've known about "mex" functions. Mex functions are C/C++ routines which you compile at the Matlab command line; mex functions must include a special function called mexFunction which specifies how data is passed back and forth between Matlab and the C routine. Once the code is compiled, you call the function from Matlab just as if it were a Matlab function and hopefully you realize huge savings in execution time. This technique works pretty well but the downsides are (a) You have to write the code yourself from scratch and (b) you have to write the mexFunction interface which is tricky at best.&lt;br /&gt;&lt;br /&gt;Happily, I discovered "emlc"which generates C code from Matlab code. Here's how it works.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Write a function in Matlab&lt;/li&gt;&lt;li&gt;Use emlc to convert that code to C from the command line.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Wasn't that easy? There are a few important options that are worth being aware of. Suppose your function is "myFunc.m". You could go to the command line and type:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;emlc -T MEX myFunc&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;In this case, &amp;nbsp;your myFunc.m would be converted into myFunc.mexmaci64 (or some other extension depending on your operating system). Your code is automatically ported over and compiled. So you can do all your prototyping in Matlab and then use this simple command to get a high speed executable.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are targeting an embedded system and you just need the raw C code, you can instead try using:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;emlc -T RTW&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;There are a host of options; I recommend reading the emlc documentation to be aware of all the options.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are a couple of useful tricks I've learned by trial and error. Most importantly, whereas Matlab will dynamically allocate memory for you on the fly, C/C++ is not set up to do the same and must be explicitly instructed on how to handle memory. For example, suppose you've written a function that takes as input an array "y" which will have two elements in it. Whereas Matlab will give you the benefit of the doubt that "y" will in fact have two elements at run time, C will not. To avoid a compile-time error, you must include the following statement just after your Matlab function heading:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;assert(all(size(y)==[2,1]));&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This command tells the compiler to throw a run-time error if the "y" input to the function is not exactly of dimensions two rows and one column.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Along the same lines, you must also pre-allocate all output variables. If your output variable is "dy" and you expect it to have two elements, you can't just say:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(1) = &amp;nbsp;... ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(2) = &amp;nbsp;... ;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Instead, you have to say:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy = zeros(2,1); % preallocate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(1) = &amp;nbsp;... ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(2) = &amp;nbsp;... ;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I also learned that its not good enough to preallocate with an indefinite number. For example, this will cause a compile-time error:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;function dy = myFunc(y,tmax)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;int nPts = tmax/0.001;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy = zeros(nPts,1);&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The problem is that the compiler has no idea how many points nPts will be. The workaround is to preallocate up to some maximum worst-case array length and then to truncate it as necessary:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;function dy = myFunc(y,tmax)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;int nPts = tmax/0.001;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;int ptsMax = 1e6;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy = zeros(ptsMax,1);&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(1) = ... ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy(2) = ... ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;dy = dy(1:nPts);&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Finally, you need to include the following comment next to your function heading: %#eml. This facilitates the creation of the compilation report:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;function dy = myFunc(y,tmax) %#eml&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Just for kicks, I coded up a single-cell Hodgkin-Huxley simulation using Forward Euler. The point was to create something slow and lumbering so that I could really see the speed difference. You can download the mFile by clicking &lt;a href="http://www.box.net/shared/ajp5to1mkj"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used the following command at the Matlab prompt:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;clear; tic; [v,t] = hodgkin_huxley(10,1,100); toc; plot(t,v);&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Over five trials, the average elapsed time is 62ms.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I converted the m file to a mex file using the steps outlined above and reran it using exactly the same command line command:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;emlc -T MEX hodgkin_huxley&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;clear; tic; [v,t] = hodgkin_huxley(10,1,100); toc; plot(t,v);&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Now the average elapsed time is 14ms. Thats an execution-time reduction of over 75%, and all it cost me was typing in a single line a the command prompt.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2653985082851059230?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2653985082851059230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2653985082851059230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2653985082851059230'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-3.html' title='Neat Coding Trick # 3'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-536024782715391899</id><published>2011-05-30T11:38:00.000-07:00</published><updated>2011-06-13T07:31:01.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Matlab'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Neat Coding Trick # 2</title><content type='html'>My Day of Coding last Friday turned up a really useful trick for passing data between Matlab and C/C++ during execution. Suppose you have some C++ code and lots of data, and you want to visualize or otherwise examine your data during runtime either to debug your code or just to make sure that things are happening the way you think they are. Matlab has provided tools to allow you to do just that: pass data from C/C++, during runtime, to Matlab. There, the data can be visualized or otherwise manipulated, and even sent back to C++. Not too bad.&lt;br /&gt;&lt;br /&gt;The basic steps are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;include engine.h - this is an include file that automatically installs with Matlab&lt;/li&gt;&lt;li&gt;define an "engine" pointer, which opens up a portal between C++ and Matlab&lt;/li&gt;&lt;li&gt;define Matlab-friendly data elements (mxArrays) for porting your data to Matlab&lt;/li&gt;&lt;li&gt;stuff data into the Matlab-friendly data elements&lt;/li&gt;&lt;li&gt;instruct C++ to send the Matlab-friendly data elements to Matlab&lt;/li&gt;&lt;li&gt;instruct C++ what commands to execute on the data&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;There are of course more sophisticated options; see Matlab online documentation for more details.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've put together a brief video outlining the technique. The code shown in the video can be downloaded from here:&amp;nbsp;&lt;a href="http://www.box.net/shared/xmazi14uv2"&gt;http://www.box.net/shared/xmazi14uv2&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/3zdVQf1MotY" width="425"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-536024782715391899?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/536024782715391899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/536024782715391899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/536024782715391899'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-2.html' title='Neat Coding Trick # 2'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/3zdVQf1MotY/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-751930412553170553</id><published>2011-05-30T09:38:00.000-07:00</published><updated>2011-05-31T16:32:24.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>Neat Coding Trick # 1</title><content type='html'>Last Friday, I learned three neat coding tricks which I'm going to try to share here. The first one involves inherited classes in C++ and the use of virtual functions to create run-time decisions about which versions of a function to run. This is a very powerful trick because it simplifies function calls and data handling in situations where you have a number of related classes.&lt;br /&gt;&lt;br /&gt;I've put together a little demonstration here to illustrate how useful this technique is:&lt;br /&gt;&lt;hr /&gt;&lt;span style="color: #00aa66;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #00aa66;"&gt;#include&amp;lt;iostream&amp;gt; &lt;iostream&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;class base {&lt;br /&gt;protected:&lt;br /&gt; int x;&lt;br /&gt;public:&lt;br /&gt; void setX(int val){x = val;};&lt;br /&gt; int getX(){return x;};&lt;br /&gt; virtual void incrX() = 0;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;class derived1 : public base {&lt;br /&gt;public:&lt;br /&gt; void incrX(){x+=1;};&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;class derived2 : public base {&lt;br /&gt;public:&lt;br /&gt; void incrX(){x+=2;};&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;&lt;br /&gt; base *myVars[2];&lt;br /&gt;&lt;br /&gt; myVars[0] = new derived1;&lt;br /&gt; myVars[1] = new derived2;&lt;br /&gt;&lt;br /&gt; myVars[0]-&amp;gt;setX(0);&lt;br /&gt; myVars[1]-&amp;gt;setX(0);&lt;br /&gt;&lt;br /&gt; myVars[0]-&amp;gt;incrX();&lt;br /&gt; myVars[1]-&amp;gt;incrX();&lt;br /&gt;&lt;br /&gt; cout &amp;lt;&amp;lt; myVars[0]-&amp;gt;getX() &amp;lt;&amp;lt; endl;&lt;br /&gt; cout &amp;lt;&amp;lt; myVars[1]-&amp;gt;getX() &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;br /&gt; delete myVars[0];&lt;br /&gt; delete myVars[1];&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/iostream&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: #00aa66;"&gt; &lt;/span&gt; &lt;br /&gt;&lt;hr /&gt;We can think of this code as implementing two versions of a common class. The "common" portions of the class are in the base class. The base stipulates a private variable named x, as well as functions for setting and retrieving x. The base also stipulates an undefined virtual function named incrX. The way I've coded, this, any derived class that inherits base must define its own implementation of incrX. In the "derived1" class, incrX increments the value of "x" by 1, whereas in "derived2", incrX increments the value of x by 2.&lt;br /&gt;&lt;br /&gt;In the main function, I create an array of pointers of type *base. I can then create new instances of the derived class and have those pointers stored in the array of type *base. This is a pretty amazing trick. Because derived1 and derived2 both inherit base, I am allowed to define a pointer of type *base and point it to either of the derived classes.&lt;br /&gt;&lt;br /&gt;The second remarkable part of this code is that when I run the myVars[0]-&amp;gt;incrX() command, the code is clever enough to realize that myVars[0] actually points to an object of class "derived1"; it then runs the appropriate version of incrX.&lt;br /&gt;&lt;br /&gt;This trick is very handy because it is going to allow us to solve a few nasty problems in our neuron simulator. We have models for about five basic neuron types. In many ways, those neuron types are similar: all must keep track of who their pre-synaptic neurons are and all must have a function for numerically updating the state variables. However in other ways, those neurons are quite different: the differential equations and state variables are all different from neuron to neuron.&lt;br /&gt;&lt;br /&gt;The elegant solution to this model is to create a "base" neuron which contains all the elements that are common to all neurons. The base neuron will also stipulate a virtual "update" function which will need to be redefined by each specific neuron type. Then we can create five "derived" classes which inherit the base and add the individual update functions and state variables. The great part is that in the "main" function, I only have to maintain a single array of neurons. I do this by creating an array of pointers of type *base. Then I can populate that array with any combination of the five neurons. When I tell a neuron to "update", the program makes sure that the update function appropriate to the specific neuron is called.&lt;br /&gt;&lt;br /&gt;Another neat upshot of this technique is that the base neuron class can contain a vector of pointers to base which can be populated with pointers to presynaptic neurons, regardless of their specific type.&lt;br /&gt;&lt;br /&gt;Thanks to Chris for figuring most of this out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-751930412553170553?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/751930412553170553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/751930412553170553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/751930412553170553'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/neat-coding-trick-1.html' title='Neat Coding Trick # 1'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2344843192138459218</id><published>2011-05-20T11:53:00.000-07:00</published><updated>2011-05-20T11:53:51.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><title type='text'>Spinal Cord Bypass</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://news.bbcimg.co.uk/media/images/52846000/jpg/_52846481_robstanding.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://news.bbcimg.co.uk/media/images/52846000/jpg/_52846481_robstanding.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This has been making the rounds today. Very impressive!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bbc.co.uk/news/health-13444036"&gt;Paralysed man can stand and walk again&lt;/a&gt; (BBC News)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2344843192138459218?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2344843192138459218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/spinal-cord-bypass.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2344843192138459218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2344843192138459218'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/spinal-cord-bypass.html' title='Spinal Cord Bypass'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8286160311771331321</id><published>2011-05-20T08:12:00.000-07:00</published><updated>2011-05-20T08:12:07.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>C++ Performance Benchmarking</title><content type='html'>We are in the process of developing computational models of neural structures with the eventual goal of studying the effects of deep brain stimulation on dystonia. We are starting by reproducing the results of one of the best-recognized models of neural tissue in the deep-brain, published in 2004 by &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/15114047"&gt;Rubin and Terman&lt;/a&gt;. That paper draws heavily from an earlier &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/11923461"&gt;2002 paper&lt;/a&gt; which describes some of the basic neural cell models. I have an exceptionally capable student who has been working with these models for a while now and has successfully re-created each of the individual cell types; we are now working on linking those cells together synaptically and optimizing the simulation process.&lt;br /&gt;&lt;br /&gt;The neural models used by Rubin and Terman are Hodgkin-Huxley-type which means that each of the voltage-gated membrane proteins is modelled by one or more differential equations. For example, in the case of the Subthalamic Neuron cells, there are seven first-order differential equations that must be solved in parallel.&lt;br /&gt;&lt;br /&gt;Numerically, there are any number of methods for solving these differential equations. The most simple are Forward Euler and Runge-Kutta, each of which use a mathematical approximation of the derivative to iteratively determine the next value of the solution, given the current value of the solution. More advanced methods such as Runge-Kutta-Fehlberg and Runge-Kutta Prince-Dormand use adaptive time-stepping, which means they exploit the fact that you can solve the differential equation less often when the signal isn't changing so much in time. Of course, there is a computational overhead involved with calculating what the optimal time-step is, which &amp;nbsp;might temper some of the advantage of adaptive-timestepping.&lt;br /&gt;&lt;br /&gt;I decided to run a sample simulation on a few different computers to determine how fast the simulations are running. I ran an array of 100 subthalamic neurons (each with seven differential equations) for 2500ms under a variety of conditions. Not that it matters, but the neurons were independent; there was no interneuron connectivity for this test. All code was written in C++ using the GSL library for solving the differential equations.&lt;br /&gt;&lt;br /&gt;I ran two tests: (1) which simulation method is better, and (2) how fast are the various computers we are using.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #6fa8dc;"&gt;Test 1&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Using our fastest computer (a dedicated processing-only workstation; see below for more details) I simulated the 100-neuron model using three different differential equation solvers.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Method&lt;/th&gt; &lt;th&gt;Timestep Type&lt;/th&gt; &lt;th&gt;Execution Time&lt;/th&gt; &lt;th&gt;Points Generated&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Runge-Kutta 4&lt;/td&gt; &lt;td&gt;Fixed&lt;/td&gt; &lt;td&gt;147.7s&lt;/td&gt; &lt;td&gt;250,000&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Ruge-Kutta-Fehlberg&lt;/td&gt; &lt;td&gt;Adaptive&lt;/td&gt;&lt;td&gt;4.86s&lt;/td&gt;&lt;td&gt;10,237&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Runge-Kutta Prince-Dormand&lt;/td&gt;&lt;td&gt;Adaptive&lt;/td&gt;&lt;td&gt;5.7s&lt;/td&gt;&lt;td&gt;4,558&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The RKPD method produces by far the fewest number of data points, but takes about 17% longer to execute that the fastest method, RKF.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #6fa8dc;"&gt;Test 2&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The simulation was repeated of five different computers; the RKF simulation was used in every case.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Computer&lt;/th&gt; &lt;th&gt;Specs&lt;/th&gt; &lt;th&gt;Execution Time&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dedicated Linux Workstation&lt;/td&gt;&lt;td&gt;3.2GHz Quad Core i7, 6GB RAM&lt;/td&gt;&lt;td&gt;4.86s&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;iMac (2009)&lt;/td&gt;&lt;td&gt;3.06GHz Core 2 Duo, 4GB RAM&lt;/td&gt;&lt;td&gt;5.40s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mac Mini (2011)&lt;/td&gt;&lt;td&gt;2.4GHz Core 2 Duo, 2GB RAM&lt;/td&gt;&lt;td&gt;6.88s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Macbook Pro (2007)&lt;/td&gt;&lt;td&gt;2.4GHz Core 2 Duo, 4GB RAM&lt;/td&gt;&lt;td&gt;7.21s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Old Laptop*&lt;/td&gt;&lt;td&gt;2.2GHz Core 2 Duo, 4GB RAM&lt;/td&gt;&lt;td&gt;17.45s&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;*The "old laptop" simulation was actually run on virtual Ubunutu box running on the old laptop under Windows...&lt;br /&gt;&lt;br /&gt;The first test is interesting because it emphasizes the tradeoff between fewer number of points versus longer simulation time. The second test demonstrates that our new dedicated Linux machine is actually quite fast, even when compared with other reasonably fast machines.&lt;br /&gt;&lt;br /&gt;Its important to work through some of these issues while the simulations are still relatively small; understanding the tradeoffs now will be very helpful when the simulations get up to thousands or even tens of thousands of neurons.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7RTEDygia-I/TdaEs0O1N8I/AAAAAAAAAhU/Bl5Ll9axgZU/s1600/stn.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="234" src="http://3.bp.blogspot.com/-7RTEDygia-I/TdaEs0O1N8I/AAAAAAAAAhU/Bl5Ll9axgZU/s640/stn.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8286160311771331321?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8286160311771331321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/c-performance-benchmarking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8286160311771331321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8286160311771331321'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/c-performance-benchmarking.html' title='C++ Performance Benchmarking'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7RTEDygia-I/TdaEs0O1N8I/AAAAAAAAAhU/Bl5Ll9axgZU/s72-c/stn.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6821439777144753584</id><published>2011-05-13T10:51:00.001-07:00</published><updated>2011-05-13T10:51:55.579-07:00</updated><title type='text'>Graduation Day</title><content type='html'>Congrats Karth (and John, not pictured)!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ArNefqEPiP4/Tc1vpfnqwDI/AAAAAAAAAhI/oKuL97VNjG0/s1600/DSC00629.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://4.bp.blogspot.com/-ArNefqEPiP4/Tc1vpfnqwDI/AAAAAAAAAhI/oKuL97VNjG0/s640/DSC00629.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6821439777144753584?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6821439777144753584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/graduation-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6821439777144753584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6821439777144753584'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/graduation-day.html' title='Graduation Day'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ArNefqEPiP4/Tc1vpfnqwDI/AAAAAAAAAhI/oKuL97VNjG0/s72-c/DSC00629.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4264182246427720750</id><published>2011-05-11T14:36:00.000-07:00</published><updated>2011-05-13T13:51:42.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Intro to Neural Engineering - The Last Assignment</title><content type='html'>The Neural Engineering course has come to an end and I'm ready to declare it a success. The students seemed to enjoy it and I got a lot out of the course too. The key element to making the course succeed was the mix of students: we had a great mix of biologists and engineers which allowed everyone to exceed their comfort zone and learn something new. I would go so far as to say that in the future I'll need to cross-list the course with the Biology and Neuroscience programs in order to ensure sufficient enrollment from those areas.&lt;br /&gt;&lt;br /&gt;The students had to hand in three assignments this term. The first was a report describing research projects that use neural decoding, beyond the scope of the applications we'd discussed in class. The second assignment was a computational biology assignment: students could either code up the Hodgkin-Huxley model (which also required them to generate the strength-duration curve) or they could attempt to replicate the basic neural model of Hansel 1998 which was discussed earlier in the semester.&lt;br /&gt;&lt;br /&gt;The final assignment, which I just graded today, was to write the first two pages of an NIH proposal for the next great neural engineering experiment. The two pages had to encompass Specific Aims and Significance as outlined in the NIH &lt;a href="http://grants.nih.gov/grants/funding/phs398/phs398.html"&gt;PHS 398&lt;/a&gt; application guidelines. I encouraged students to view the entire scope of neural engineering which we'd covered in the course, and to think about what would constitute a viable new research angle. The results were marvelous - reading these papers this afternoon was a real treat. Here are some of the topics:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Brain-controlled articulatory speech&lt;/li&gt;&lt;li&gt;Multi-electrode arrays that can receive "biological" input such as vision and audio&lt;/li&gt;&lt;li&gt;Enhanced visual prosthetics (I got a couple of these... One student had the neat idea to create virtual retinal electrodes by co-stimulating pairs of adjacent "real" electrodes, as if sometimes done with auditory prostheses)&lt;/li&gt;&lt;li&gt;Optogenetics: using light to facilitate brain-derived neurotrophic factor release in order to ameliorate symptoms of Parkinsons&lt;/li&gt;&lt;li&gt;Spine-Machine Interface&lt;/li&gt;&lt;li&gt;Magnetogenetics: like optogenetics but using a magnetic field to activate ion channels instead of light&lt;/li&gt;&lt;li&gt;Bionic Sphincter: controlled autonomously via nerves of the viscera.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Clearly we have lots of future Nobel Laureates at Temple. Thanks to everyone for a great semester!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4264182246427720750?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4264182246427720750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/intro-to-neural-engineering-last.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4264182246427720750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4264182246427720750'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/intro-to-neural-engineering-last.html' title='Intro to Neural Engineering - The Last Assignment'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-930749378285895025</id><published>2011-05-04T08:27:00.000-07:00</published><updated>2011-05-04T08:27:40.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lab Publications'/><title type='text'>Fuzzy Logic-Based Spike Sorting, Ctd.</title><content type='html'>Our new manuscript is now available online!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Balasubramanian K, Obeid I (2011) "&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/21463653"&gt;Fuzzy logic-based spike sorting system"&lt;/a&gt;&amp;nbsp;&lt;i&gt;J Neurosci Methods.&lt;/i&gt; [Epub ahead of print]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-930749378285895025?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/930749378285895025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/fuzzy-logic-based-spike-sorting-ctd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/930749378285895025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/930749378285895025'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/fuzzy-logic-based-spike-sorting-ctd.html' title='Fuzzy Logic-Based Spike Sorting, Ctd.'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-9127621922775104028</id><published>2011-05-04T08:21:00.000-07:00</published><updated>2011-05-04T08:21:00.813-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><category scheme='http://www.blogger.com/atom/ns#' term='Lab Publications'/><title type='text'>Common Spatial Patterns</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JtpoG340d3k/TcFtzCoVcvI/AAAAAAAAAhE/kpHkIbnWGhA/s1600/Poster_Cancun.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-JtpoG340d3k/TcFtzCoVcvI/AAAAAAAAAhE/kpHkIbnWGhA/s320/Poster_Cancun.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;Congratulations to lab member Alessandro Napoli who presented a poster titled, "Combined Spatial Pattern and Spectral Filtering for EEG-Based BCIs" at last week's Conference on Neural Engineering in Cancun.&lt;br /&gt;&lt;br /&gt;Alessandro is studying methods of de-noising EEG signals for brain machine interface applications. We now have an IRB in place to study his proposed technique in quite a few people, so hopefully his summer should be quite productive and we'll have some good results to publish come fall.&lt;br /&gt;&lt;br /&gt;The technique he proposes combines Common Spatial Patterns (CSP) filtering with spectral analysis to look for areas of high activity in the brain during BMI tasks. His preliminary data is encouraging.&lt;br /&gt;&lt;br /&gt;We are learning that acquiring high-quality EEG signals is as much art as it is science. We'll put together a blog post later this summer with some of our newly-acquired wisdom.&lt;br /&gt;&lt;br /&gt;You can download the full-sized poster &lt;a href="http://www.box.net/shared/shkqxpy6li"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-9127621922775104028?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/9127621922775104028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/common-spatial-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/9127621922775104028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/9127621922775104028'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/common-spatial-patterns.html' title='Common Spatial Patterns'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JtpoG340d3k/TcFtzCoVcvI/AAAAAAAAAhE/kpHkIbnWGhA/s72-c/Poster_Cancun.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3607864640790786761</id><published>2011-05-04T07:58:00.000-07:00</published><updated>2011-05-04T07:58:53.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><title type='text'>EEG Headsets</title><content type='html'>A while ago I wrote about &lt;a href="http://obeidlab.blogspot.com/2011/03/brain-games.html"&gt;limitations in the EEG Headset market.&lt;/a&gt;&amp;nbsp;I thought I might post an updated list of whats on the market these days. These are a combinations of products and research endeavors.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #c27ba0;"&gt;Developed for gaming - Lack signal integrity for actual EEG research&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.emotiv.com/"&gt;Emotiv&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.neurosky.com/"&gt;Neurosky&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #c27ba0;"&gt;Prohibitively Expensive&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/21096892"&gt;IMEC Group&lt;/a&gt;: Dry electrodes, ASIC front end, 8 channels (not available for purchase, but ASICs are very expensive)&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/19164053"&gt;Quasar&lt;/a&gt;: Custom dry electrodes, up to 23 channels (recently quoted at $50k)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #c27ba0;"&gt;Not available for purchase&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/21419826"&gt;Advanced Brain Monitoring&lt;/a&gt;: 20 channels&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #c27ba0;"&gt;Low Channel Count / Not available for purchase&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/21075716"&gt;Halifax Consciousness Scan:&lt;/a&gt; 3 channels&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/20097606"&gt;University of Sydney&lt;/a&gt;: Dry conductive silicone electrodes, 3 channels&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/20590254"&gt;Aalto Univ (Finland)&lt;/a&gt;: 8 channels&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #c27ba0;"&gt;Developed for NeuroMarketing; No published performance data / Not available for purchase&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.engadget.com/2011/03/23/neurofocus-makes-first-wireless-eeg-sensor-headset-dont-call-i/"&gt;Neurofocus/Mynd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So there is without question a lot of interest in developing wireless ambulatory EEG, but it appears that no one has quite yet gotten a plug-and-play off-the-shelf system going for a somewhat reasonable price. Opportunity knocks?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3607864640790786761?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3607864640790786761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/eeg-headsets.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3607864640790786761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3607864640790786761'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/eeg-headsets.html' title='EEG Headsets'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-7305533339782874567</id><published>2011-05-03T20:05:00.000-07:00</published><updated>2011-05-04T07:28:33.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Brain Controlled Angry Birds</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/WDgkZZYSVPo" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;Emotiv ... Hmmm. We've heard nothing but negative comments about the emotiv as a research tool. God knows how they got this working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-7305533339782874567?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/7305533339782874567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/brain-controlled-angry-birds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7305533339782874567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7305533339782874567'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/brain-controlled-angry-birds.html' title='Brain Controlled Angry Birds'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/WDgkZZYSVPo/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4563109167030804157</id><published>2011-05-03T19:30:00.000-07:00</published><updated>2011-05-20T11:55:02.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy - Ctd</title><content type='html'>Boston University is reporting that former NFL player Dave Duerson, who commit suicide in February at age 50, had indisputable evidence of CTE. Duerson's case is unique, if not a little bizarre, in that he shot himself in the chest in order to preserve his brain for scientific inquiry; a suicide note directed that his brain be studied at BU. He played in the NFL for 11 years. The story can be found in detail &lt;a href="http://sportsillustrated.cnn.com/2011/football/nfl/05/02/duerson.ap/index.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4563109167030804157?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4563109167030804157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/05/chronic-traumatic-encephalopathy-ctd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4563109167030804157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4563109167030804157'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/05/chronic-traumatic-encephalopathy-ctd.html' title='Chronic Traumatic Encephalopathy - Ctd'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2355528469324345224</id><published>2011-04-29T08:02:00.000-07:00</published><updated>2011-05-20T11:55:54.003-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><title type='text'>Lindback Distinguished Teaching Award</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lyymqo0zU0E/TbrS4Xpu6XI/AAAAAAAAAg4/QAJSuBJ8T6k/s1600/Obeid.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-lyymqo0zU0E/TbrS4Xpu6XI/AAAAAAAAAg4/QAJSuBJ8T6k/s320/Obeid.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;So I won a Lindback distinguished teaching award! I got a nice certificate and got fed a fancy lunch with the President of the University. All is good. There's a nice writeup in the Temple newspaper which you can read &lt;a href="http://www.temple.edu/newsroom/2010_2011/04/stories/Iyad_Obeid.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2355528469324345224?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2355528469324345224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lindback-distinguished-teaching-award.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2355528469324345224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2355528469324345224'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lindback-distinguished-teaching-award.html' title='Lindback Distinguished Teaching Award'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lyymqo0zU0E/TbrS4Xpu6XI/AAAAAAAAAg4/QAJSuBJ8T6k/s72-c/Obeid.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5836027041746295232</id><published>2011-04-28T17:17:00.000-07:00</published><updated>2011-04-28T17:17:10.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 14 - Optogenetics</title><content type='html'>This week was the 14th and final installment of my graduate Neural Engineering course. This week we discussed Optogenetics - the new breakthrough field that introduces light-sensitive components into cells. These can be used in at least two ways&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A light-sensitive membrane protein can be added to a cell. When a specific frequency of light is shined on that cell, it will depolarize and fire.&lt;/li&gt;&lt;li&gt;By adding light sensitivity to gene promotors, it is/will be possible to up- or down- regulate the production of specific genes under the control a light source.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The genetic material needed to affect these changes is introduced via a standard (or so I'm told) technique called viral transfection in which RNA vectors are placed in a virus (i.e. &lt;a href="http://en.wikipedia.org/wiki/Lentivirus"&gt;Lentivirus&lt;/a&gt;) which infects cells with the RNA. The cell then uses the foreign RNA to manufacture the desired protein. There are genes which are apparently unique to each individual cell type; by modifying the RNA to only work in conjunction with specific genes, it becomes possible to functionally introduce the desired changes to very specific cell types.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The two papers we read were&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/16116447"&gt;Boyden 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/17375185"&gt;Han 2007&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The class was excited about this technique and we worked our way through some of the finer grained technical issues such as how complicated is it to put a fiber optic cable into someone's brain, how large of a light beam would one want (i.e. would you like to turn on one neuron at a time, or entire sections of the brain), and so on.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MtGbuos2j5g/TboDJ86aziI/AAAAAAAAAg0/0n4oSDsIz-c/s1600/optogen.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-MtGbuos2j5g/TboDJ86aziI/AAAAAAAAAg0/0n4oSDsIz-c/s1600/optogen.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;One interesting question that arose was whether it might be possible to genetically modify the RNA vectors to produce proteins that were sensitive to specific frequencies: i.e. can you program the light sensitivity of a protein? If that were possible, it might be useful to stimulate neurons using wavelengths outside of the visible band, perhaps even radio waves. By using wavelengths of the electromagnetic spectrum that can penetrate the brain, it might be possible to use spatial surface electrodes to target specific brain regions non-invasively.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll submit a final report on the class after the student's final projects are due: the first two pages of a grant proposal in which students pitch their idea for the next great neural engineering research project. Students are to submit Specific Aims and Significance sections ala NIH PHS 398 guidelines.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5836027041746295232?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5836027041746295232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-14-optogenetics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5836027041746295232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5836027041746295232'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-14-optogenetics.html' title='Lecture 14 - Optogenetics'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MtGbuos2j5g/TboDJ86aziI/AAAAAAAAAg0/0n4oSDsIz-c/s72-c/optogen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8936528033672466846</id><published>2011-04-27T14:00:00.000-07:00</published><updated>2011-04-27T14:00:13.681-07:00</updated><title type='text'>Congrats Jeremy Gerard</title><content type='html'>Congrats to NIL student Jeremy Gerard who placed 3rd in this year's Neuroscience Undergraduate Research Expo. Jeremy has been exploring how to design and calibrate a pneumatically actuated robot arm for use with the adaptive cerebellar motor model of NIL friend Prof. &lt;a href="http://www.shef.ac.uk/psychology/staff/academic/john-porrill"&gt;John Porrill&lt;/a&gt;. We are all very proud of Jeremy!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Kh2KyTniWcc/TbiDvvM9e9I/AAAAAAAAAgM/IHBT-LVnm6E/s1600/DSC00553.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-Kh2KyTniWcc/TbiDvvM9e9I/AAAAAAAAAgM/IHBT-LVnm6E/s400/DSC00553.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8936528033672466846?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8936528033672466846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/congrats-jeremy-gerard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8936528033672466846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8936528033672466846'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/congrats-jeremy-gerard.html' title='Congrats Jeremy Gerard'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Kh2KyTniWcc/TbiDvvM9e9I/AAAAAAAAAgM/IHBT-LVnm6E/s72-c/DSC00553.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5820497117332658026</id><published>2011-04-27T13:45:00.000-07:00</published><updated>2011-04-27T13:45:05.556-07:00</updated><title type='text'>Senior Design 2011</title><content type='html'>My senior design team create a video game that supposedly could be controlled by brain signals. Results were mixed. Our chair, &lt;a href="http://www.temple.edu/engineering/academic-programs/ece/faculty-staff-directory/picone"&gt;Dr. Picone&lt;/a&gt;, had a go at playing the game. These pictures are priceless!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-q6OWpHwaXBo/TbiAKUdTxrI/AAAAAAAAAgE/RULoXxQGC8E/s1600/DSC00500.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-q6OWpHwaXBo/TbiAKUdTxrI/AAAAAAAAAgE/RULoXxQGC8E/s400/DSC00500.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UQIbTJwxUPM/TbiALiwvnRI/AAAAAAAAAgI/bjecxUOWv68/s1600/DSC00508.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-UQIbTJwxUPM/TbiALiwvnRI/AAAAAAAAAgI/bjecxUOWv68/s400/DSC00508.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5820497117332658026?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5820497117332658026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/senior-design-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5820497117332658026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5820497117332658026'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/senior-design-2011.html' title='Senior Design 2011'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-q6OWpHwaXBo/TbiAKUdTxrI/AAAAAAAAAgE/RULoXxQGC8E/s72-c/DSC00500.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4188429958270748991</id><published>2011-04-25T18:15:00.000-07:00</published><updated>2011-04-25T18:15:05.914-07:00</updated><title type='text'>Congratulations Karth and John</title><content type='html'>The Neural Instrumentation Lab is proud to announce the graduation of Dr. Karthikeyan Balasubramanian and Dr. John Mountney, who defended their dissertations last Wednesday and today, respectively. These are the first two PhD graduates from the lab, so this is a big milestone for everyone involved.&lt;br /&gt;&lt;br /&gt;Karth's dissertation is titled, "Reconfigurable System-on-Chip Architecture for Neural Signal Processing."&lt;br /&gt;&lt;br /&gt;John's is titled, "Particle Filtering Programmable Gate Array Architecture for Brain Machine Interfaces."&lt;br /&gt;&lt;br /&gt;We are very proud of our two new graduates! I will post links to the dissertations once they make it online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4188429958270748991?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4188429958270748991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/congratulations-karth-and-john.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4188429958270748991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4188429958270748991'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/congratulations-karth-and-john.html' title='Congratulations Karth and John'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3108808327442859572</id><published>2011-04-25T09:52:00.000-07:00</published><updated>2011-04-25T09:52:56.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Modeling'/><title type='text'>GNU Science Library</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6QEL8Q6qfps/TbWm1GtvVeI/AAAAAAAAAgA/jY7mEDU234I/s1600/GNU_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/-6QEL8Q6qfps/TbWm1GtvVeI/AAAAAAAAAgA/jY7mEDU234I/s200/GNU_logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;In our quest to get better and running simulations of networks of neurons, we've been trying to replicate a number of papers covering a variety of techniques. For example, we looked at the integrate-and-fire model of &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/9472491"&gt;Hansel 1998&lt;/a&gt; and the modified Hodgkin &amp;amp; Huxley approach of &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/15114047"&gt;Rubin and Terman 2004&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Part of the problem in running these simulations is developing and properly understanding the numerical methodology responsible for cranking through the differential equations. There are a number of available techniques, and up until now we'd been basically hand coding them (we're developing our simulations in GNU C/C++ since we want these sims to run quickly over tens of thousands of neurons, which basically rules out Matlab). Forward Euler is pretty easy to code but is numerically very limited and requires small step sizes (meaning large numbers of calculations). More advanced methods such as Runge-Kutta and the adaptive step-size method of Runge-Kutta-Fehlberg can get away with far fewer calculations but require more coding and are therefore more prone to coding mistakes. All that extra code has to be tested and validated, a time consuming process.&lt;br /&gt;&lt;br /&gt;We were pleased then to discover that the &lt;a href="http://www.gnu.org/software/gsl/"&gt;GNU Science Library &lt;/a&gt;(or GSL for short) has built in support for &lt;a href="http://www.gnu.org/software/gsl/manual/html_node/Ordinary-Differential-Equations.html"&gt;Ordinary Differential Equations&lt;/a&gt;. Although I'd used GSL before because of its matrix library (which its cumbersome to use - I now prefer to use openCV's matrix library instead), I hadn't been aware of its ODE capabilities. The solver supports a range of algorithms including the embedded Runge-Kutta Prince-Dormand method and the august Bulirsch-Stoer method that actually required a Jacobian in addition to the actual&amp;nbsp;differential&amp;nbsp;equations themselves.&lt;br /&gt;&lt;br /&gt;If I have some time later this week I'll post some benchmarks to give an idea on the savings of computation time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3108808327442859572?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3108808327442859572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/gnu-science-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3108808327442859572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3108808327442859572'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/gnu-science-library.html' title='GNU Science Library'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-6QEL8Q6qfps/TbWm1GtvVeI/AAAAAAAAAgA/jY7mEDU234I/s72-c/GNU_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4985936218146050894</id><published>2011-04-25T09:36:00.001-07:00</published><updated>2011-04-25T09:36:37.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 13 - Vagus Nerve Stimulation</title><content type='html'>&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-x5RpD_Bj6EY/TbWd40D8nII/AAAAAAAAAf8/chmhnDsZx4g/s1600/vns.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-x5RpD_Bj6EY/TbWd40D8nII/AAAAAAAAAf8/chmhnDsZx4g/s1600/vns.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This week was devoted entirely to Vagus Nerve Stimulation (VNS), which is an electrophysiology technique in which pulses of electrical activity are supplied to the vagal nerve (via implanted system) in order to address a growing number of medical problems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;VNS technology has been in place for about 20 years but its medical applicability has been accelerating in recent years. It was originally designed to treat pharmacologically intractable epilepsy and was shown to reduce both the frequency and severity of seizures.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In the process of studying VNS in epilepsy, patients reported that the VNS was improving their moods. It was therefore discovered that VNS can also be used to treat depression in certain intractable cases. From there the list goes on and on: migraines, chronic pain, eating disorders, multiple sclerosis, and inflammatory diseases such as rheumatoid arthritis. The literature is generally positive and not much in the way of side-effects are reported.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The vagus nerves "wonder" throughout the body, innervating the stomach and heart, as well as any number of structures in the head and neck. It strongly connects to the structures of the limbic system (largely responsible for emotion, memory, and smell), which provides a strong candidate for&amp;nbsp;mechanism&amp;nbsp;of action; despite widespread use,&amp;nbsp;mechanisms&amp;nbsp;of VNS functionality are not well understood.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The articles we read were&amp;nbsp;&lt;a href="http://www.ncbi.nlm.nih.gov/sites/entrez?db=pubmed&amp;amp;cmd=search&amp;amp;term=beekwilder+jp%2C+2010"&gt;Beekwilder 2010&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://www.ncbi.nlm.nih.gov/sites/entrez?db=pubmed&amp;amp;cmd=search&amp;amp;term=zitnik+rj%2C+2011"&gt;Zitnik 2011&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4985936218146050894?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4985936218146050894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-13-vagus-nerve-stimulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4985936218146050894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4985936218146050894'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-13-vagus-nerve-stimulation.html' title='Lecture 13 - Vagus Nerve Stimulation'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-x5RpD_Bj6EY/TbWd40D8nII/AAAAAAAAAf8/chmhnDsZx4g/s72-c/vns.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-914143010245519072</id><published>2011-04-25T09:09:00.000-07:00</published><updated>2011-08-19T08:01:47.489-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEA'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 12 - Neuron Modeling</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tY_htgLb8-U/TbWcsUxTSvI/AAAAAAAAAf0/lmNEsxgWVk8/s1600/animat1.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-tY_htgLb8-U/TbWcsUxTSvI/AAAAAAAAAf0/lmNEsxgWVk8/s320/animat1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;In Week 12 we focussed on two papers. The first was "Quadratic Leaky Integrate-and-Fire Neural Network tuned with an Evolution-Strategy for a Simulated 3D Biped Walking Controller" (by Wiklendt) which can be found &lt;a href="http://portal.acm.org/citation.cfm?id=1442635"&gt;here&lt;/a&gt;. This paper developed a modified leaky integrate and fire neural network model to control a simulated biped. The model effectively used a three-layer neural model to control ten degrees of freedom in the simulated biped. Although the model was effectively an integrate and fire model, the authors made two nice simplifications that cleaned up the math enough that spike times could be calculated exactly, as opposed to being simulated numerically. The network learned using a (mu plus lambda) evolution strategy (ES) which was beyond the scope of our reading; I think next year this would make for a good reading. We were able to understand that essentially the evolution model is a cellular automaton that uses a fitness strategy to assess which neurons are weighted optimally for the desired outcome.&lt;br /&gt;&lt;br /&gt;Overall the class seemed pretty down on this article since it used a virtual neural network to control a virtual biped: since neither the controller nor the network was "real", the class wondered what the practical application of this knowledge was.&lt;br /&gt;&lt;br /&gt;The second article we read was the highly creative "&lt;a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?tp=&amp;amp;arnumber=1556108&amp;amp;tag=1"&gt;Adaptive Flight Control with Living Neuronal Networks on Microelectrode Arrays&lt;/a&gt;" by DeMarse and Dockendorf at the University of Florida. The paper describes a setup in which a population of neurons is grown in a specially instrumented petri dish which can record electrical activity from the cells as they fire. The neural population is used to provide pitch and roll control for a virtual aircraft in a flight simulator game. Network training is achieved by providing the network with trains of high frequency pulses that force the network connectivity to change with respect to the stimulating electrode. What was neat about this paper was that the authors used the fact that the network could simultaneously encode two different control signals (pitch and roll) and that these could be assessed simultaneously by providing a single stimulus pulse to each of the control electrodes and then measuring the speed and extent of neural activations in response. The size and speed of the response was taken to encode the controls to the flight simulator. The class was generally positive on this paper (especially in comparison to the previous one, since the control signals were coming from a real source.&lt;br /&gt;&lt;br /&gt;We also discussed whether this technology would make sense to bring to Temple University. There is some interest in my lab about growing neurons in vitro and measuring and manipulating their connectivity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-914143010245519072?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/914143010245519072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-12-neuron-modeling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/914143010245519072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/914143010245519072'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-12-neuron-modeling.html' title='Lecture 12 - Neuron Modeling'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-tY_htgLb8-U/TbWcsUxTSvI/AAAAAAAAAf0/lmNEsxgWVk8/s72-c/animat1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2429345963716091786</id><published>2011-04-07T19:02:00.000-07:00</published><updated>2011-04-07T19:02:19.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 11 - The Izhikevitch Brain</title><content type='html'>Lecture 11 covered &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/15142958"&gt;Izhikevitch (2004)&lt;/a&gt; which discusses a gigantic simulation encompassing 100,000 neurons. The neurons themselves are modeled using the &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/18244602"&gt;Izhikevich neuron model&lt;/a&gt;, which is a hybrid Hodgkin-Huxley/IAF neuron. The neurons were spatially distributed in a single layer across the surface of a virtual sphere and interconnected using local and projecting connections with synapses exhibiting potentiation and depression. The paper's key finding is that, as long as you provide random noise to stimulate the neurons occasionally, the neurons will cluster themselves into fairly stable functional groups that tend to fire together in sequence. Furthermore, coherent input stimuli can cause virtual receptive fields to change over time. These results are all reasonably biologically plausible and seem to bolster the theory of neural darwinism favored by co-author (and 1972 Nobel laureate) &lt;a href="http://en.wikipedia.org/wiki/Gerald_Edelman"&gt;Gerald Edelman&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Amazingly, even using the lowly forward Euler with a timestep of 0.5 ms, their simulations worked at 60x realtime, meaning one second of simulated time required 60 seconds of real time to compute. They ran their simulation for 24 simulated hours, meaning the program actually required 60 days to run! Not bad for a 1GHz pentium. I wonder how long that simulation would take on a new top of the line work station these days...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2429345963716091786?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2429345963716091786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-11-izhikevitch-brain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2429345963716091786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2429345963716091786'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-11-izhikevitch-brain.html' title='Lecture 11 - The Izhikevitch Brain'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5632806203619423078</id><published>2011-04-07T18:47:00.000-07:00</published><updated>2011-04-07T18:48:11.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 10 - The Hodgepodge Lecture</title><content type='html'>Lecture 10 was an interesting mix of a number of different topics. First, I presented work from my 2004-2005 postdoc in the optic nerve visual prosthesis lab of Professor Claude Veraart in Brussels, Belgium. The basic literature relevant to this area is:&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/12676250"&gt;Delbeke (2003) Vision Res. 43(9)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/14616518"&gt;Verarart (2004) Artif Organs 27(11)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/16619664"&gt;Brelen (2006) J Neurosurg. 104(4)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Following that, we went back to Computational Neuroscience, looking at Numerical Integration methods for neural modeling. Specifically, we looked at &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/9472491"&gt;Hansel (1998)&lt;/a&gt;, which is a really interesting paper that we've replicated in our lab. The paper puts together a population of interconnected integrate and fire neurons with variable synaptic strength and network 'cohesion' factor. Then they simulate the network using (a) exact integration and (b) numerical methods. By comparing the exact results against the numerical methods, it is possible to deduce which numerical methods produce acceptable results. Having run this simulation in the lab, I was able to show the students the code and discuss specific results. We found that switching from floating point to double precision floats didn't improve precision at all, but the value of "dt" made a huge difference.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hopefully, at least a few students will elect to replicate Hansel for their next assignment (due 4/21). Its a real challenge but its cool once you get it to work...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5632806203619423078?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5632806203619423078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-10-hodgepodge-lecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5632806203619423078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5632806203619423078'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lecture-10-hodgepodge-lecture.html' title='Lecture 10 - The Hodgepodge Lecture'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6445585782725439613</id><published>2011-04-07T18:27:00.000-07:00</published><updated>2011-04-07T18:27:08.532-07:00</updated><title type='text'>Lots of New Reading</title><content type='html'>Lots of interesting reading material came online today. The Journal of Neural Engineering has a new special issue out with contributions from the Fourth International Brain-Computer Interface Meeting. Over 25 new articles covering a range of contributions across the BCI spectrum. The table of contents is &lt;a href="http://iopscience.iop.org/1741-2552/8/2"&gt;here&lt;/a&gt;. (NIL members, I've archived all the files on the shared drive for you...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6445585782725439613?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6445585782725439613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lots-of-new-reading.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6445585782725439613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6445585782725439613'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/lots-of-new-reading.html' title='Lots of New Reading'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6915110350795063922</id><published>2011-04-03T02:19:00.000-07:00</published><updated>2011-05-20T11:55:02.509-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy, ctd</title><content type='html'>A recent &lt;a href="http://www.nytimes.com/2011/04/03/sports/football/03madden.html?src=recg"&gt;NYTimes story&lt;/a&gt; describes how the Madden NFL '12 video game will start sidelining players who receive concussions in-game. It will also not display the types of hits (i.e. helmet-to-helmet) that most often lead to concussion. I think this is another interesting sign that sports-related TBI has reached its 'tipping point.'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6915110350795063922?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6915110350795063922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/chronic-traumatic-encephalopathy-ctd_03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6915110350795063922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6915110350795063922'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/chronic-traumatic-encephalopathy-ctd_03.html' title='Chronic Traumatic Encephalopathy, ctd'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-7759711711281930903</id><published>2011-04-02T11:50:00.000-07:00</published><updated>2011-08-19T08:00:39.147-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEA'/><title type='text'>Multi-Electrode Arrays</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://sites.google.com/site/neurorighter/_/rsrc/1252455088552/config/app/images/customLogo/customLogo.gif?revision=1" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://sites.google.com/site/neurorighter/_/rsrc/1252455088552/config/app/images/customLogo/customLogo.gif?revision=1" /&gt;&lt;/a&gt;&lt;/div&gt;We are considering learning to use cultures of neural cells in a multielectrode array (MEA) to simulate functional neural tissue including feedback and LTP/LTD. We were amazed to stumble across &lt;a href="http://sites.google.com/site/neurorighter/"&gt;this site&lt;/a&gt;, which offers a complete open source solution for MEA recording and stimulation. This is courtesy of the &lt;a href="http://www.neuro.gatech.edu/groups/potter/"&gt;Potter group&lt;/a&gt; at &lt;a href="http://www.gatech.edu/"&gt;Georgia Tech&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-7759711711281930903?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/7759711711281930903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/multi-electrode-arrays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7759711711281930903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7759711711281930903'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/multi-electrode-arrays.html' title='Multi-Electrode Arrays'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6400831201292274999</id><published>2011-04-01T08:05:00.000-07:00</published><updated>2011-05-20T11:55:02.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy, ctd</title><content type='html'>Here's &lt;a href="http://www.cnn.com/2011/HEALTH/04/01/brain.concussion.dronett/index.html?hpt=C1"&gt;another sad story&lt;/a&gt; about a former professional football player whose brain deteriorated after a lifetime of hits:&lt;br /&gt;&lt;br /&gt;This guy was young, sadly. Just 38 years old.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6400831201292274999?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6400831201292274999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/04/chronic-traumatic-encephalopathy-ctd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6400831201292274999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6400831201292274999'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/04/chronic-traumatic-encephalopathy-ctd.html' title='Chronic Traumatic Encephalopathy, ctd'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1514691176427734692</id><published>2011-03-31T17:20:00.000-07:00</published><updated>2011-03-31T17:21:05.129-07:00</updated><title type='text'>Dr. O'Doherty !!</title><content type='html'>Please join me in welcome the world's newest PhD, Dr. Joey O'Doherty of Duke University! Dr. O'Doherty has graduated from Miguel Nicolelis' lab and has been doing all the work recently with cortical micro-stimulation as artificial sensory feedback.&amp;nbsp;Congratulations, Doc!&lt;br /&gt;&lt;br /&gt;Read more about Joey &lt;a href="http://www.duke.edu/~jeo4/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1514691176427734692?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1514691176427734692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/dr-odoherty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1514691176427734692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1514691176427734692'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/dr-odoherty.html' title='Dr. O&apos;Doherty !!'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5029877801892125296</id><published>2011-03-30T07:46:00.000-07:00</published><updated>2011-03-30T08:06:32.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Miguel Nicolelis on The Daily Show with Jon Stewart</title><content type='html'>I think the part that amazes me the most is that Miguel's publicist talked him into a nice collared shirt and a blazer. I'm not sure I've ever seen him wearing anything that wasn't a Brazil soccer shirt...&lt;br /&gt;&lt;br /&gt;&lt;object height="288" width="512"&gt;&lt;param name="movie" value="http://www.hulu.com/embed/EbMnvZTitP6UoAZ47wl69w"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.hulu.com/embed/EbMnvZTitP6UoAZ47wl69w" type="application/x-shockwave-flash" width="512" height="288" allowFullScreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5029877801892125296?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5029877801892125296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/miguel-nicolelis-on-daily-show-with-jon.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5029877801892125296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5029877801892125296'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/miguel-nicolelis-on-daily-show-with-jon.html' title='Miguel Nicolelis on The Daily Show with Jon Stewart'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-8128170392082840090</id><published>2011-03-24T19:28:00.000-07:00</published><updated>2011-03-24T19:28:14.288-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 9 - Computational Neuroscience</title><content type='html'>This week we continued last week's discussion by focussing in on some of the details of modeling neuronal spiking using a computer. The gold-standard model is Hodgkin Huxley - although we'd talked about it last week, we worked in more detail this week to understand how the Markov model of subunit state leads to a first order differential equation describing the dynamics of opening and closing membrane proteins. For example, suppose we are discussing the "n" gates comprising the potassium channel. Suppose "n" percent of them are open and (1-n) percent are closed. The probability of transitioning from closed to open in any instant is "alpha" and the probability of transitioning from open back to closed is "beta". The subunit dynamics can be described by dn/dt = (1-n)*alpha - n*beta. This states that the change in percentage of open "n" subunits is the number of closed subunits times the probability that each one will open, minus the number of open subunits time the probability that each one will close. If we solve dn/dt numerically, we will come up with a function n(t) that describes the proportion of n subunits open as a function of time. The potassium conductance is then given by gk_max * n^4, where the n^4 indicates that each K+ ion channel has four n subunits and all four must be open for the channel to conduct. It turns out that the dn/dt equation is just a first order differential equation with time constant 1/(alpha + beta) and n_infinity given by alpha / (alpha + beta). What makes Hodgkin Huxley a real challenge is that alpha and beta are both functions of membrane voltage!&lt;br /&gt;&lt;br /&gt;Afterwards, we discussed simpler models that are easier and faster to implement that don't sacrifice too much precision. The basic model is integrate-and-fire. We looked at how to model synaptic input into an IAF neuron: essentially we extend our ion channel model to include an ion channel that opens and closes according to some post-synaptic conductance model, of which there are several. Using this configuration, it is easy to construct arbitrarily large networks of neurons that synapse onto each other and exhibit any number of behaviors.&lt;br /&gt;&lt;br /&gt;Next we talked about the Izhikevitch neuron model, which is an integrate-and-fire type neuron but that includes two differential equations. The first models membrane voltage and the 2nd models membrane inactivation; the two equations work in opposition so that the more the membrane voltage increases, the more the inactivation increases to counter it. The dv/dt equation includes a quadratic equation that has been fitted based on empirical measurements from live tissue. The beauty of Izhikevitch is that it includes four parameters that can be varied to produce all sorts of different neural spiking patterns that actually occur in real life. In this way it is possible to build a network of neurons with an impressively rich palate of properties; the synaptic models (previous paragraph) can be used to interconnect these neurons.&lt;br /&gt;&lt;br /&gt;Finally, we had an impromptu mini-lecture from one of our Neuroscience grad students who taught us about how G-protein modulated ion channel up-regulation is responsible for late phase synapse potentiation. This is something I know very little about and was very interested to learn! The Wikipedia entry on &lt;a href="http://en.wikipedia.org/wiki/Long-term_potentiation"&gt;Long Term Potentiation&lt;/a&gt; covers this subject nicely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-8128170392082840090?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/8128170392082840090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-9-computational-neuroscience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8128170392082840090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/8128170392082840090'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-9-computational-neuroscience.html' title='Lecture 9 - Computational Neuroscience'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1778629000677323111</id><published>2011-03-23T07:35:00.001-07:00</published><updated>2011-03-23T07:36:29.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funny'/><title type='text'>Sensory Cortices - XKCD</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://imgs.xkcd.com/comics/trapped.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://imgs.xkcd.com/comics/trapped.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1778629000677323111?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1778629000677323111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/sensory-cortices-xkcd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1778629000677323111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1778629000677323111'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/sensory-cortices-xkcd.html' title='Sensory Cortices - XKCD'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3599568098521959434</id><published>2011-03-19T07:30:00.000-07:00</published><updated>2011-03-19T07:31:57.210-07:00</updated><title type='text'>Miguel Nicolelis on the Radio</title><content type='html'>Everyone's favorite Brain Machine Interface scientist was on the Diane Rehm Show recently discussing his research. Click &lt;a href="http://thedianerehmshow.org/shows/2011-03-16/miguel-nicolelis-beyond-boundaries"&gt;here&lt;/a&gt; to listen to the show.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3599568098521959434?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3599568098521959434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/miguel-on-radio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3599568098521959434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3599568098521959434'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/miguel-on-radio.html' title='Miguel Nicolelis on the Radio'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5898733468772950843</id><published>2011-03-17T21:58:00.000-07:00</published><updated>2011-03-17T21:58:22.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 8</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-CA5kTpqyn0M/TYLbkm0ErXI/AAAAAAAAAfA/hTro7KfIiKA/s1600/dayan.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-CA5kTpqyn0M/TYLbkm0ErXI/AAAAAAAAAfA/hTro7KfIiKA/s1600/dayan.png" /&gt;&lt;/a&gt;&lt;/div&gt;This week we moved on to some new material, taking a look at how we can write accurate mathematical descriptions of the electrical properties of neurons. In particular, what goes into modeling membrane dynamics? What can we infer about membrane structure from the models? And can those models be simplified without sacrificing too much accuracy?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our reading was Chapter 5 of &lt;a href="http://www.amazon.com/Theoretical-Neuroscience-Computational-Mathematical-Modeling/dp/0262541858/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1300421418&amp;amp;sr=8-1"&gt;Dayan and Abbott&lt;/a&gt;, which does an excellent job discussing the physical underpinnings of membrane capacitance and resistance. The chapter also discusses the &lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1392413/?tool=pubmed"&gt;Hodgkin-Huxley&lt;/a&gt;&amp;nbsp;model of electrically excitable cells, which is perhaps one of the finest basic science experiments of the 20th century. Hodgkin and Huxley did a series of painstaking experiments from which they deduced the microscopic structure and function of the membranes of electrically excitable cells. They determined how ions such as sodium and potassium flow across cell membranes in order to effect flow of current, and how this leads to action potential formation. Although there are a number of details to keep track of, the essential mechanics of membrane behavior are not more sophisticated that first-order differential equations. The Hodgkin-Huxley membrane model simplifies to four interconnected first-order diff-eqs that can be easily solved by any number crunching software (we prefer Matlab, although C/C++ will work in a pinch ;). My Matlab implementation of the Hodgkin-Huxley code can be found &lt;a href="http://www.box.net/shared/uugv9m75nr"&gt;here&lt;/a&gt;. Next week we'll discuss some of the simplified models in detail, such as Integrate and Fire, as well as the notorious &lt;a href="http://www.izhikevich.org/"&gt;Izhikevitch&lt;/a&gt; model.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There was an interesting question about whether alternative computing platforms can be used to accelerate neural modeling. It turns out some at Georgia Tech have been trying to use FPGAs for neural modeling. Interesting papers can be found &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/15800372"&gt;here&lt;/a&gt; and &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/17436880"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Someone brought up the really fun question of why even bother writing mathematical models of neural activation. Fair question! Answering this question led to a lively discussion on improving medical devices such as pacemakers by trying to predict how changes to the device (or its placement) would affect functionality. Cardiac pacemakers are a great example actually: high quality electrical models of cardiac tissue are routinely used to make predictions about how to optimize performance by changing either the properties of the electrical stimuli or perhaps the locations in the cardiac muscle where those stimuli are delivered. Along those same lines, we discussed deep brain stimulation, which is commonly used to treat movement disorders such as Parkinsons and Essential Tremor. I brought up the point that despite its efficacy, there is much debate on how exactly DBS works. Neural models are being used to study DBS and to make predictions about how stimulating various parts of the brain can curb the effects of these diseases. Some incredible before-and-after video of DBS patients can be found &lt;a href="http://www.neuro.jhmi.edu/dbs/cases.htm"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5898733468772950843?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5898733468772950843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5898733468772950843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5898733468772950843'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-8.html' title='Lecture 8'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-CA5kTpqyn0M/TYLbkm0ErXI/AAAAAAAAAfA/hTro7KfIiKA/s72-c/dayan.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5779834511419424156</id><published>2011-03-14T10:14:00.000-07:00</published><updated>2011-03-14T10:14:08.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 7</title><content type='html'>This week we really swung for the fences! We read Sections 4.2 and 4.3 from &lt;a href="http://www.amazon.com/Spikes-Exploring-Neural-Computational-Neuroscience/dp/0262681080/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1299966757&amp;amp;sr=8-1"&gt;Spikes&lt;/a&gt; (by Rieke) which cover neural coding of hyper-acuity in the bat and the fly. The fly visual system is pretty amazing - the fly can detect very small changes in its visual field far faster than can be explained by the raw speed of the visual system. It does this by integrating over a large number of broad receptive fields, thereby obviating the need for spatial oversampling. Pretty neat stuff!&lt;br /&gt;&lt;br /&gt;The experiment described in the book goes like this: a fly is shown a random pattern and then that pattern is shifted by some small amount. The fly's H1 neuron is then monitored by dividing time from t=15-40ms post stimulus into 2ms bins and assigning a "one" (spike) or "zero" (no spike) to each of the 13 bins. (it takes 15ms for the signal to reach H1, and after 40ms, the fly has already reacted to the stimulus, meaning the signal has already been interpreted). There are therefore 2^13 possible outcomes of this experiment. The trick is to examine the contents of those 13 bits and determine whether the fly observed a pattern shift of x degrees or y degrees.&lt;br /&gt;&lt;br /&gt;Spiking is, of course, a stochastic event - spike trains are probabilistic, not deterministic. We learned how to use signal-to-noise ratio to quantify the separability between two populations of spiking patterns, spiking patterns contributed to signal to noise ratio, and, most interestingly, that most of the information separating two populations comes in the timing of the first spike.&lt;br /&gt;&lt;br /&gt;In general, this was a good conversation and a very tough piece of reading. I think next year this lecture could stand to be better developed, perhaps with some external readings and some simulated Matlab code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5779834511419424156?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5779834511419424156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5779834511419424156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5779834511419424156'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-7.html' title='Lecture 7'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6385807050748286072</id><published>2011-03-12T13:46:00.000-08:00</published><updated>2011-03-12T13:47:02.444-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 6</title><content type='html'>In Week 6, we focussed on specific methods of spike decoding, spending most of our time on linear decoding methods as spelled out in &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/16705271"&gt;Kim 2006&lt;/a&gt;. We started by discussing the general concept of linear decoding, specifically that the firing rate of each neuron (at a specific time lag) is linearly related to the kinematic parameter of interest. Mathematically speaking we might say:&lt;br /&gt;&lt;br /&gt;x(t) = Sum{wij * nij(t)}&lt;br /&gt;&lt;br /&gt;where x(t) is the kinematic parameter being predicted and nij(t) is the number of times neuron "i" fired at the "j"th time-lag. The "wij" terms are the linear coefficients; these weights can be any real number, positive or negative. In reality, no known neuron actually fires linearly with respect to a kinematic parameter, but if we include enough lags and enough neurons in the model, we should be able to approximate reasonable kinematic behavior.&lt;br /&gt;&lt;br /&gt;The trouble becomes finding acceptable combinations of weights, "wij". If our experiment includes 300 neurons at ten lags each, then there are 3000 weights altogether that must be approximated. This problem is poorly formed numerically and lends itself to non-singular matrices and non-optimal solutions.&lt;br /&gt;&lt;br /&gt;The Kim paper essentially discusses methods of solving for the filter weights. The most basic is the optimal Wiener filter, and its closely related cousin the normalized least mean squares filter (which converges to the Wiener solution, at least in theory). The Kim paper also discussed the Kalman filter (which models both filter weights and their uncertainty), as well as the gamma filter (which condenses the neural signal in time) and the principal component filter (which condenses the neural signal in channel-space, with respect to maximal variance).&lt;br /&gt;&lt;br /&gt;We also looked at some Matlab code I wrote that duplicated much of the math in the paper. One lesson that we observed off the bat is that the models all work reasonably well provided that the kinematic parameter always stays in the same range of values used during the training phase.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-ibkxANOER9Y/TXvpnu-yzCI/AAAAAAAAAe8/hZ2vFlRJ2HI/s1600/tracking.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="356" src="https://lh4.googleusercontent.com/-ibkxANOER9Y/TXvpnu-yzCI/AAAAAAAAAe8/hZ2vFlRJ2HI/s640/tracking.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We also set out to look at &lt;a href="http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0006243"&gt;Li 2009&lt;/a&gt;, which uses a modified unscented kalman filter to track neurons. Their UKF system uses a non-linear (quadratic) neural firing model and also takes temporal correlations into account. Unfortunately, we didn't get to spend as much time on this paper as I would have hoped, but at least everyone read it ;)&lt;br /&gt;&lt;br /&gt;I didn't get as far as I would have liked with my neural decoding simulator - I would still like to code up the gamma filter and the extended kalman filter, but those will have to wait for a rainy day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6385807050748286072?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6385807050748286072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6385807050748286072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6385807050748286072'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/lecture-6.html' title='Lecture 6'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-ibkxANOER9Y/TXvpnu-yzCI/AAAAAAAAAe8/hZ2vFlRJ2HI/s72-c/tracking.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4490902094265877400</id><published>2011-03-09T04:21:00.000-08:00</published><updated>2011-03-09T04:21:46.221-08:00</updated><title type='text'>Blind Spots</title><content type='html'>I'm reading On Intelligence, by Hawkins. He argues that our brains are always making predictions about what our senses are going to tell us, and that this in part explains why we don't notice our blind spots. We don't notice them because our brain "fills in" whatever it predicts to see. So that got me wondering: what about babies? Without a lifetime of experience to tell them what to fill in to those blind spots, do they have a big gapin hole in their visual field? How would you even test this? How long after birth does the blind spot persist?&lt;br /&gt;&lt;br /&gt;Any thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4490902094265877400?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4490902094265877400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/blind-spots.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4490902094265877400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4490902094265877400'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/blind-spots.html' title='Blind Spots'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1665130147874780601</id><published>2011-03-04T18:52:00.000-08:00</published><updated>2011-03-04T18:52:43.614-08:00</updated><title type='text'>Spring Break Reading List</title><content type='html'>Its going to be a busy nine days! In addition to my many domestic responsibilities, I hope to tackle/complete:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Fundamentals-Computational-Neuroscience-Thomas-Trappenberg/dp/0199568413/ref=sr_1_1?ie=UTF8&amp;amp;qid=1299293242&amp;amp;sr=8-1"&gt;Fundamentals of Computational Neuroscience&lt;/a&gt;, by Trappenberg&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Adaptive-Filter-Theory-Simon-Haykin/dp/0130901261/ref=sr_1_1?ie=UTF8&amp;amp;qid=1299293284&amp;amp;sr=8-1"&gt;Adaptive Filter Theory&lt;/a&gt;, by Haykin&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Intelligence-Jeff-Hawkins/dp/0805078533/ref=sr_1_1_title_2_p?s=books&amp;amp;ie=UTF8&amp;amp;qid=1299293346&amp;amp;sr=1-1"&gt;On Intelligence&lt;/a&gt;, by Hawkins&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Theoretical-Neuroscience-Computational-Mathematical-Modeling/dp/0262541858/ref=sr_1_1?ie=UTF8&amp;amp;qid=1299293445&amp;amp;sr=8-1"&gt;Theoretical Neuroscience&lt;/a&gt;, by Dayan and Abbott&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Should be fun!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1665130147874780601?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1665130147874780601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/spring-break-reading-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1665130147874780601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1665130147874780601'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/spring-break-reading-list.html' title='Spring Break Reading List'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6540143793567865193</id><published>2011-03-02T19:56:00.000-08:00</published><updated>2011-05-20T11:55:02.511-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy, Ctd.</title><content type='html'>Here's an &lt;a href="http://www.nytimes.com/2011/03/03/sports/hockey/03fighter.html?_r=1&amp;amp;hp"&gt;NYTimes article&lt;/a&gt; about hockey player Bob Probert who died at 45 and was posthumously diagnosed with CTE. Another big win for the Boston University center studying all these brains. Are we heading (no pun intended) towards a gentler era of sport?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6540143793567865193?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6540143793567865193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/chronic-traumatic-encephalopathy-ctd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6540143793567865193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6540143793567865193'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/chronic-traumatic-encephalopathy-ctd.html' title='Chronic Traumatic Encephalopathy, Ctd.'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4123062589189623103</id><published>2011-03-02T18:54:00.000-08:00</published><updated>2011-05-20T11:55:36.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='EEG'/><title type='text'>Brain Games</title><content type='html'>I came across this &lt;a href="http://spectrum.ieee.org/tech-talk/consumer-electronics/gadgets/demo-spring-2011-brain-control"&gt;blog entry&lt;/a&gt; from IEEE Spectrum about a video game based on the $100 Mindwave headset from Neurosky. The reviewer is clearly impressed!&lt;br /&gt;&lt;br /&gt;We are starting to investigate new techniques for creating wireless EEG headsets. The two leading companies in this area (&lt;a href="http://www.emotiv.com/"&gt;Emotiv&lt;/a&gt; and &lt;a href="http://www.neurosky.com/"&gt;Neurosky&lt;/a&gt;) have a reputation in the community for being insufficiently high-fidelity to suppor research grade recordings. The Emotiv only has a handful of channels and none of them are over brain regions correlated to motor planning or execution. The Neurosky (at least as of this writing) only has a single electrode over the forehead (FP1). Its not even clear that these devices are recording pure EEG - its more likely they record a combination of EEG and muscle artifacts.&lt;br /&gt;&lt;br /&gt;In our lab, we've been trying to develop our own EEG-based brain computer interface system. For our first attempt, we used the Clevemed Bioradio to acquire EEG signals using an old EEG-cap we had lying around. The signal to noise ratio was a mess and we could barely get enough signal fidelity to move a cursor in one dimension. Since then we've upgraded to a higher quality EEG amplifier (a mint-condition 20-year old Grass Model 12 Amp with 22 channels that was donated to us by a very kind emeritus professor in Psych) as well as a snugger-fitting EEG cap. These two upgrades have improved the signal to noise ratio but we have persistent problems with the impedance between the electrodes and the scalp (the Model 12 allows us to measure the impedance). We are learning that even the world's nicest EEG amp won't do you much good if your electrode impedance is too high (say, greater than 10k Ohm).&lt;br /&gt;&lt;br /&gt;Ultimately we'd like to design a research-grade wireless EEG system. Our biggest challenge (and one we feel hasn't been solved by either Emotiv of Neurosky) is to reduce the electrode/scalp impedance down to a more manageable level.&lt;br /&gt;&lt;br /&gt;Happy gaming!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4123062589189623103?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4123062589189623103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/03/brain-games.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4123062589189623103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4123062589189623103'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/03/brain-games.html' title='Brain Games'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2622613066204523586</id><published>2011-02-28T08:48:00.000-08:00</published><updated>2011-05-20T11:55:02.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News Articles'/><category scheme='http://www.blogger.com/atom/ns#' term='CTE'/><title type='text'>Chronic Traumatic Encephalopathy</title><content type='html'>It looks like the tipping point for Chronic Traumatic Encephalopathy (CTE) has arrived, thanks to a number of recent events that have garnered public attention. &lt;a href="http://en.wikipedia.org/wiki/Chronic_traumatic_encephalopathy"&gt;CTE&lt;/a&gt; is a neural disease caused by repeated blows to the head, as might be the case with a contact sport athlete such as a football player or boxer. The symptoms vary, but appear to include memory loss, headaches, depression, and agression. Former professional football players in their 40s are experiencing symptoms that might otherwise be expected from Alzheimer's patients.&lt;br /&gt;&lt;br /&gt;My first introduction to this area was &lt;a href="http://www.newyorker.com/reporting/2009/10/19/091019fa_fact_gladwell"&gt;this excellent Malcolm Gladwell article&lt;/a&gt; in the New Yorker, that described the lives of some former football players, as well as the work of &lt;a href="http://www.bu.edu/alzresearch/team/faculty/mckee.html"&gt;Dr. McKee&lt;/a&gt; at Boston University, who studies chronic brain trauma. Based on some conversations I had with colleagues after reading this article, I recently submit a grant to NIH to study how EEG can be used to study chronic brain trauma (our model will study rats, not people). It seems that very little is known at the neuronal level about how minute head impacts accumulate over time to produce serious damage. We are hoping to develop a rat model that will (a) allow us to understand the underlying biological processes and (b) whether the progression of injury can be correlated with EEG markers.&lt;br /&gt;&lt;br /&gt;The real story however has been the &lt;a href="http://www.time.com/time/arts/article/0,8599,2055437,00.html"&gt;recent suicide of former Chicago Bear Dave Duerson&lt;/a&gt;. In case you've somehow missed this story, Mr. Duerson recently shot himself in the chest after starting to experience some symptoms consistent with chronic traumatic encephalopathy. His shot to the chest ensured that his brain would remain intact for post mortem scientific study my Dr. McKee's lab, as was his final wish. This story seems to have been the tipping point - the past few weeks have been rife with stories in the mass media about the long term cognitive effects of contact sports such as football, including former athletes with obvious brain issues as well as the &lt;a href="http://www.nfl.com/news/story/09000d5d81e76bed/article/standardized-concussion-tests-coming-to-the-nfl"&gt;NFL's announcement of a formal sideline testing policy&lt;/a&gt; following potentially concussive events.&lt;br /&gt;&lt;br /&gt;The Neural Instrumentation Lab is following these developments with great interest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2622613066204523586?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2622613066204523586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/chronic-traumatic-encephalopathy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2622613066204523586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2622613066204523586'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/chronic-traumatic-encephalopathy.html' title='Chronic Traumatic Encephalopathy'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6121157498322437888</id><published>2011-02-25T14:15:00.000-08:00</published><updated>2011-02-25T14:15:57.168-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>iPad Programming</title><content type='html'>A while ago I brought a new face to the lab to start developing some iPad programming infrastructure. Our eventual goal is to integrate the iPad into some neural engineering applications. For now we are learning some of the low-level odds-and-ends associated with creating code in the iOS environment. Today, Vince finally had a nice breakthrough and managed to get his first 'hello world' program installed on the iPad. We were quite pleased!&lt;br /&gt;&lt;br /&gt;Here's a pic of Vince with his creation:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--fyKtTiAYBM/TWgp6S96NWI/AAAAAAAAAe0/dXJCCmIGXAg/s1600/DSC00337.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/--fyKtTiAYBM/TWgp6S96NWI/AAAAAAAAAe0/dXJCCmIGXAg/s320/DSC00337.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And here's a video of Vince's program running on his iPad:&lt;br /&gt;&lt;br /&gt;&lt;object height="390" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0xOe-j-PUcc&amp;rel=0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0xOe-j-PUcc&amp;rel=0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;We're finally making progress!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6121157498322437888?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6121157498322437888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/ipad-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6121157498322437888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6121157498322437888'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/ipad-programming.html' title='iPad Programming'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--fyKtTiAYBM/TWgp6S96NWI/AAAAAAAAAe0/dXJCCmIGXAg/s72-c/DSC00337.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6958728878840584807</id><published>2011-02-25T14:10:00.000-08:00</published><updated>2011-02-25T14:10:32.864-08:00</updated><title type='text'>Temple Engineering Poster Day</title><content type='html'>Congratulations to Neural Instrumentation Lab students Allie Tierney, Yuri Apel, and Alessandro Napoli for competing in this year's Temple College of Engineering poster contest. Our lab has an excellent track record in this contest, with lab members Karthikeyan Balasubramanian and John Mountney taking first prize in the graduate division last year and the year before.&lt;br /&gt;&lt;br /&gt;Here are pictures of Allie and Alessandro with their posters.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-5aOoMAXfmFU/TWgoiJVVYuI/AAAAAAAAAew/qzO_ItlWgzQ/s1600/poster_day.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-5aOoMAXfmFU/TWgoiJVVYuI/AAAAAAAAAew/qzO_ItlWgzQ/s640/poster_day.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6958728878840584807?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6958728878840584807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/temple-engineering-poster-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6958728878840584807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6958728878840584807'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/temple-engineering-poster-day.html' title='Temple Engineering Poster Day'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-5aOoMAXfmFU/TWgoiJVVYuI/AAAAAAAAAew/qzO_ItlWgzQ/s72-c/poster_day.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-7952635343995522156</id><published>2011-02-24T10:15:00.001-08:00</published><updated>2011-02-24T20:37:51.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Neural Instrumentation Lab on CBS</title><content type='html'>&lt;script type='text/javascript' src='http://video.philadelphia.cbslocal.com/global/video/videoplayer.js?rnd=278608;hostDomain=video.philadelphia.cbslocal.com;playerWidth=620;playerHeight=465;isShowIcon=true;clipId=5596381;flvUri=;partnerclipid=;adTag=News;advertisingZone=CBS.PHILLY/worldnowplayer;enableAds=false;landingPage=http%253A%252F%252Fphiladelphia.cbslocal.com%252Fcategory%252Fwatch-listen%252Fvideo-on-demand%252F;islandingPageoverride=false;playerType=STANDARD_EMBEDDEDscript'&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-7952635343995522156?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/7952635343995522156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/neural-instrumentation-lab-on-cbs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7952635343995522156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/7952635343995522156'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/neural-instrumentation-lab-on-cbs.html' title='Neural Instrumentation Lab on CBS'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-992825028984899633</id><published>2011-02-24T10:14:00.000-08:00</published><updated>2011-02-24T10:14:21.412-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Temple Engineering on CBS</title><content type='html'>&lt;script type='text/javascript' src='http://video.philadelphia.cbslocal.com/global/video/videoplayer.js?rnd=507542;hostDomain=video.philadelphia.cbslocal.com;playerWidth=620;playerHeight=465;isShowIcon=true;clipId=5597753;flvUri=;partnerclipid=;adTag=News;advertisingZone=CBS.PHILLY/worldnowplayer;enableAds=false;landingPage=http%253A%252F%252Fphiladelphia.cbslocal.com%252Fcategory%252Fwatch-listen%252Fvideo-on-demand%252F;islandingPageoverride=false;playerType=STANDARD_EMBEDDEDscript'&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-992825028984899633?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/992825028984899633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/temple-engineering-on-cbs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/992825028984899633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/992825028984899633'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/temple-engineering-on-cbs.html' title='Temple Engineering on CBS'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5662602021775950642</id><published>2011-02-22T11:36:00.000-08:00</published><updated>2011-05-04T08:22:15.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lab Publications'/><title type='text'>Fuzzy Logic-Based Spike Sorting</title><content type='html'>We've just received word that a manuscript authored by my graduate student Karthikeyan Balasubramanian will be published in the Journal of Neuroscience Methods. The paper, titled, "Fuzzy Logic-based Spike Sorting System" looks at how fuzzy logic can be used as an autonomous feature extraction algorithm for spike sorting. Its a pretty neat concept: spike features are measured and fuzzified, and then fuzzy logic is used to calculate a "fuzziness" index for each spike that identifies how similar that spike is to an ideal spike waveform. The fuzziness indicies can be clustered directly for a complete spike sorting solution. There are several advantages of our system. The first is that the fuzzy rules don't ever need to be modified, meaning that the system doesn't need any channel-by-channel calibration every day. Secondly, the sorter does not require that spikes be spatially aligned, as with principal component analysis. Spike alignment is computationally expensive. Finally, our system is computationally negligible to implement and can be built in an FPGA with hundreds of channels in parallel for a nice clean low-power solution.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oM3SiLnUlgY/TWQQF-4mdHI/AAAAAAAAAes/kXGPRgJVT-M/s1600/fuzzy_sorting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://1.bp.blogspot.com/-oM3SiLnUlgY/TWQQF-4mdHI/AAAAAAAAAes/kXGPRgJVT-M/s400/fuzzy_sorting.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5662602021775950642?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5662602021775950642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/fuzzy-logic-based-spike-sorting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5662602021775950642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5662602021775950642'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/fuzzy-logic-based-spike-sorting.html' title='Fuzzy Logic-Based Spike Sorting'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oM3SiLnUlgY/TWQQF-4mdHI/AAAAAAAAAes/kXGPRgJVT-M/s72-c/fuzzy_sorting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4175651936095780684</id><published>2011-02-20T21:46:00.000-08:00</published><updated>2011-02-20T21:50:25.696-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 5 - Spike Decoding</title><content type='html'>Lecture 5 was a lively one! This week we started talking about neural decoding algorithms. These are methods for trying to estimate what large numbers of neurons are 'thinking' about in real time. We started with an old standard, &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/3749885"&gt;Georgopoulos 1986&lt;/a&gt;, which presented the concept of population vectors. The article was relatively easy for everyone to understand although we did note that most of the results validating their method were not published in that article. Still, the paper represents a landmark bit of thinking and we gave it its due.&lt;br /&gt;&lt;br /&gt;The next article we discussed was at the request of one of our classmates who was in the process of reviewing a Schwartz paper for some other journal club she attends. The paper,&amp;nbsp;&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/19047633"&gt;Jarosiewicz 2008&lt;/a&gt;, discussed strategies monkeys undertake to compensate their brain machine interfaces when the preferred directions used in the population vector are rotated out of synch with the monkey's true preferred directions. It turns out the monkeys use a combination of three strategies: (1) changing their 'aim' to offset for the mis-tuned neurons, (2) reducing the relevance of the affected neurons on the BMI control, and (3) retuning those neurons to match the rotated preferred directions. It was an interesting and well done paper, but there was some interesting debate about whether the experiment revealed anything that wasn't already fairly obvious. Someone raised the point that what would really be interesting is to understand the mechanisms that underly the observed changes (as opposed to just knowing what those changes were).&lt;br /&gt;&lt;br /&gt;The final paper we discussed was &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/19229240"&gt;Quiroga 2009&lt;/a&gt;, which gives a solid background into the fundamental statistical issues underlying neural decoding. Everyone seemed to praise this paper for its readability and scope. The paper explained the difference between neural decoding and information theory. The take-home message was that, while a BMI can implement a successful neural decoder, there is still a lot of information encoded in the neurons that is simply being discarded. The concept of information theory (i.e. mutual information) allows us to calculate numerically exactly how much information the decoder misses. Such an objective measure is a vital tool for comparing the efficacy of different decoders. The Wikipedia page on &lt;a href="http://en.wikipedia.org/wiki/Mutual_information"&gt;mutual information&lt;/a&gt; gives a nice introduction into the math underlying that technique. We also discussed a &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/17873434"&gt;paper&lt;/a&gt; written by my old lab mate Debbie Won where they used mutual information to quantify how much information is lost when neurons are mis-detected and mis-sorted. Its a great (albeit quite dense) paper. We finished off the class by creating an Excel spreadsheet that calculated some basic information theory numbers for a simple example; we changed the prior probabilities and tried to predict how the information content would change.&lt;br /&gt;&lt;br /&gt;Next week we will tackle two more spike decoding papers that go into a lot more mathematical depth than anything we've dealt with so far. Stay tuned for the report!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4175651936095780684?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4175651936095780684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4175651936095780684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4175651936095780684'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-5.html' title='Lecture 5 - Spike Decoding'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3354852511210669992</id><published>2011-02-12T11:16:00.000-08:00</published><updated>2011-02-12T11:24:09.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 4 - Neural Engineering</title><content type='html'>This week we started to get into specific signal processing issues. Our reading was the excellent technical BMI summary by &lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4408439"&gt;Linderman et al&lt;/a&gt;&amp;nbsp;(published in IEEE Signal Processing&amp;nbsp;Magazine) from &lt;a href="http://www.stanford.edu/~shenoy/Group.htm"&gt;Dr. Shenoy's lab&lt;/a&gt; at Stanford University. The article discusses in some technical depth the signal processing stages of a BMI and then discusses their efforts to implement these steps as wireless and/or implantable electronics.&lt;br /&gt;&lt;br /&gt;Our main topics of discussion were (a) electrode longevity, (b) spike sorting, (c) neuron tuning, and (d) statistical models of neural behavior. The electrode longevity question was especially interesting since its such a substantial obstacle and there are very few concrete ideas about how to extend the life of electrodes in the brain. The primary issue is that the brain eventually treats electrodes like foreign objects and initiates an immune response that results in the electrodes becoming coated with microglia and other scar-like tissue. &amp;nbsp;We also discussed electrode movement in the brain, what the ramifications are for the stability of recorded neurons (its not good) and how it might be overcome. We had some good discussion about whether larger electrodes might be the solution, since they would have a wider "listening" radius and would therefore be more resilient to micro-movements. It would seem like the flip side of the equation is that larger electrodes would record from more neurons which would increase the incidence of overlapped spikes. Decoding overlapped spikes is certainly possible but perhaps not in a computationally efficient manner.&lt;br /&gt;&lt;br /&gt;Finally we spent a solid hour discussing spike sorting. We started by introducing the concept of neural tuning functions, since this motivates the need for spike sorting in the first place. We quickly looked at &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/7143039"&gt;Georgopoulos' landmark 1982 paper&lt;/a&gt; in which he discovered that motor neurons were tuned to arm movement direction in a roughly cosinusoidal manner. Following that, we looked at some demo Matlab code I put together to demonstrate the concept and the math behind spike sorting. We started with some very simple methods (thresholding and windowing) and moved on to more sophisticated methods such as feature extraction (we tried spike amplitude and width) followed by principal component analysis (which is basically just another feature extraction technique). We discussed the concept of clustering, in which spikes with similar features are automatically clustered together. In particular, we examined the k-means clustering method (a built-in Matlab function!) which works pretty well provided you tell it ahead of time how many clusters you are looking for. We discussed some of the pros and cons, including the need for at least partial supervision in determining thresholds and cluster shapes and numbers. The figure below shows our sample data set thats been sorted using PCA and k-means clustering.&lt;br /&gt;&lt;br /&gt;Next week we'll be looking at neuron decoding. I'm off now to find a good reading for next week and to develop a good chunk of Matlab demo code!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dpS0Ws6o-Do/TVbeDHEngfI/AAAAAAAAAek/m42w9gVHKHc/s1600/spikeSorting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-dpS0Ws6o-Do/TVbeDHEngfI/AAAAAAAAAek/m42w9gVHKHc/s400/spikeSorting.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3354852511210669992?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3354852511210669992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-4-neural-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3354852511210669992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3354852511210669992'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-4-neural-engineering.html' title='Lecture 4 - Neural Engineering'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dpS0Ws6o-Do/TVbeDHEngfI/AAAAAAAAAek/m42w9gVHKHc/s72-c/spikeSorting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-6803904491204065025</id><published>2011-02-07T10:37:00.000-08:00</published><updated>2011-02-07T10:37:20.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 3 - Brain Machine Interfaces</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA7ZJesbfI/AAAAAAAAAec/99EItsu4ZEs/s1600/spikes.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="135" src="http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA7ZJesbfI/AAAAAAAAAec/99EItsu4ZEs/s200/spikes.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;In Week 3 we started to get into the specifics of neural engineering - in this case we looked at brain machine interfaces, focussing on work of the &lt;a href="http://www.nicolelislab.net/"&gt;Nicolelis Lab&lt;/a&gt; at &lt;a href="http://www.duke.edu/"&gt;Duke &amp;nbsp;University&lt;/a&gt;. In the first half of the class, we finished discussing Chapter 3 of my dissertation (see my&amp;nbsp;&lt;a href="http://obeidlab.blogspot.com/2011/01/lecture-2-acquiring-bioelectrical.html"&gt;Lecture 2&lt;/a&gt; post). This chapter gives a good general overview of biomedical data acquisition. We discussed technical details such as input impedance, gain, filtering, analog to digital conversion, bit-rates, and spike detection.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Following that, we delved into the very helpful review paper by &lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/16859758"&gt;Lebedev and Nicolelis&lt;/a&gt; (2006 Trends in Neurosciences). This paper outlines the different types of Brain Machine Interfaces, discusses their relative strengths, and goes into some detail about the roadblocks moving forwards. These roadblocks are summarized as: implantable data acquisition devices, developing real-time computational algorithms, design realistic artificial prostheses, and incorporating sensorimotor feedback.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Upcoming this week, we will be discussing "&lt;a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4408439&amp;amp;tag=1"&gt;Signal Processing Challenges for Neural Prostheses&lt;/a&gt;" by Linderman et al., in which we will finally start to delve into some mathematics.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-6803904491204065025?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/6803904491204065025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-3-brain-machine-interfaces.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6803904491204065025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/6803904491204065025'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/lecture-3-brain-machine-interfaces.html' title='Lecture 3 - Brain Machine Interfaces'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA7ZJesbfI/AAAAAAAAAec/99EItsu4ZEs/s72-c/spikes.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4313196429596546718</id><published>2011-02-02T04:25:00.000-08:00</published><updated>2011-02-07T10:20:30.376-08:00</updated><title type='text'>Neural Interfaces Fiction!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA3wzfBPQI/AAAAAAAAAeQ/Q_3XY7wPzzA/s1600/crap.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: left;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA3wzfBPQI/AAAAAAAAAeQ/Q_3XY7wPzzA/s200/crap.jpg" width="132" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;A student put a copy of "&lt;a href="http://www.amazon.com/Fools-Experiments-Edward-M-Lerner/dp/076535862X/ref=cm_cr_pr_pb_t"&gt;Fools' Experiments&lt;/a&gt;" by Edward Lerner in my hands. Its a sci-fi novel about neural interfaces and artificial intelligence. The book is horribly written with cheesy dialog and weakly developed characters, but there are a few interesting ideas bouncing around in there. In the book, the characters have developed a brain machine interface helmet which reads your thoughts and allows you to subconsciously interact with a computer. The helmets include a neural network layer that adapts the helmets on the fly to optimize the bi-directional flow of information between the user and the computer. The fun part came when the computer became infected with a worm-type virus: the virus saw the user's brain as just another computer to infect, effectively bricking the user's brain. Of all the reactionary concerns I've heard about for avoiding brain computer interface research, that is definitely a first! Still, kinda interesting to think about...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4313196429596546718?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4313196429596546718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/02/neural-interfaces-fiction.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4313196429596546718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4313196429596546718'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/02/neural-interfaces-fiction.html' title='Neural Interfaces Fiction!'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CBQU5iEgp0E/TVA3wzfBPQI/AAAAAAAAAeQ/Q_3XY7wPzzA/s72-c/crap.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2292232107282612394</id><published>2011-01-26T11:47:00.000-08:00</published><updated>2011-01-27T09:55:51.249-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technical Talks'/><title type='text'>Lecture Announcement</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CBQU5iEgp0E/TUGxhQmvGmI/AAAAAAAAAdw/3-fAmZaLNyc/s1600/flyer.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_CBQU5iEgp0E/TUGxhQmvGmI/AAAAAAAAAdw/3-fAmZaLNyc/s320/flyer.png" width="247" /&gt;&lt;/a&gt;&lt;/div&gt;Next week I will be hosting &lt;a href="http://www.sheffield.ac.uk/psychology/staff/academic/john-porrill.html"&gt;Dr. John Porrill&lt;/a&gt; from the University of Sheffield. He studies mathematical models of motor control loops in the cerebellum and tries to apply these to solving sophisticated robotics control problems. By nature, this work is multidisciplinary and is applicable to researchers in fields such as engineering, computer science, neuroscience, statistics, and biology.&lt;br /&gt;&lt;br /&gt;Dr. Porrill will be giving a lecture on Thursday 2/3 at 12:30pm in Temple's engineering building, room 126. All are welcome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2292232107282612394?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2292232107282612394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/lecture-announcement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2292232107282612394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2292232107282612394'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/lecture-announcement.html' title='Lecture Announcement'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CBQU5iEgp0E/TUGxhQmvGmI/AAAAAAAAAdw/3-fAmZaLNyc/s72-c/flyer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3751071974473179912</id><published>2011-01-25T22:24:00.000-08:00</published><updated>2011-01-25T22:27:13.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Funny'/><title type='text'>Paying attention in class</title><content type='html'>This Doonesbury comic just about sums up the mysteries of undergraduate teaching! (click the thumbnail below for the full strip)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.doonesbury.com/strip/archive/2011/01/23" target="_new"&gt;&lt;img border="0" height="65" src="http://1.bp.blogspot.com/_CBQU5iEgp0E/TT-9nZV9O7I/AAAAAAAAAdk/Z0hKexwxzu0/s200/Screen+shot+2011-01-26+at+1.21.31+AM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3751071974473179912?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3751071974473179912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/paying-attention-in-class.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3751071974473179912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3751071974473179912'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/paying-attention-in-class.html' title='Paying attention in class'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CBQU5iEgp0E/TT-9nZV9O7I/AAAAAAAAAdk/Z0hKexwxzu0/s72-c/Screen+shot+2011-01-26+at+1.21.31+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-1025469422815870855</id><published>2011-01-25T20:24:00.000-08:00</published><updated>2011-01-25T22:17:26.257-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Lecture 2 - Acquiring Bioelectrical Signals</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right; width: 150px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CBQU5iEgp0E/TT-hlsES-bI/AAAAAAAAAdg/KlSbZjPJap0/s1600/chip_design.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_CBQU5iEgp0E/TT-hlsES-bI/AAAAAAAAAdg/KlSbZjPJap0/s320/chip_design.png" width="138" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;A custom integrated circuit that I designed in grad school for conditioning neural signals.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;This week's class will be focused on the problem of how one acquires bioelectrical signals from the body. This necessitates an understanding of electrodes and their interactions with the body's electrolytes, as well as analog signal conditioning and digitization. We will use the brain machine interface as an example data acquisition system, since the concepts involved are fairly general and are hence applicable in other domains. Readings include chapters 1 and 3 from my dissertation(!) as well as Chapter 5 from the venerable book "Medical Instrumentation" by Webster.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the discussion topics I emailed to the class:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.box.net/shared/42dr4ykgsm"&gt;Dissertation Chapter 1&lt;/a&gt;&lt;br /&gt;What are the things you typically have to do when making a biological recording? Describe the pathway from electrode to computer. What are the details along the way that affect design constraints for the engineer?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.box.net/shared/iuhygzz5f2"&gt;Dissertation Chapter 3&lt;/a&gt;&lt;br /&gt;You can focus your reading on sections 3.1 - 3.3.&lt;br /&gt;Relate the design that I present in this chapter to the general design constraints laid out in Chapter 1. How do the properties of the neural signals I'm trying to capture impact the design of the data acquisition hardware?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/0471676004/ref=s9_simh_gw_p14_d0_i2?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-2&amp;amp;pf_rd_r=1S0179G67KRC7PBP9SEX&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=470938631&amp;amp;pf_rd_i=507846"&gt;Webster Chapter 5&lt;/a&gt; (Electrode/Electrolyte Interface)&lt;br /&gt;Sections 5.6-5.9 can be skimmed (or skipped if you're pressed for time)&lt;br /&gt;What is the electrode/electrolyte interface? How do the chemical processes involved drive electrode designs? What are polarized and non-polarized electrodes? What are the pros and cons of each? What is motion artifact and how do we protect against it? What is the circuit model for the electrode/electrolyte interface and what does it tell us?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-1025469422815870855?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/1025469422815870855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/lecture-2-acquiring-bioelectrical.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1025469422815870855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/1025469422815870855'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/lecture-2-acquiring-bioelectrical.html' title='Lecture 2 - Acquiring Bioelectrical Signals'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CBQU5iEgp0E/TT-hlsES-bI/AAAAAAAAAdg/KlSbZjPJap0/s72-c/chip_design.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5856421757655521576</id><published>2011-01-21T08:42:00.000-08:00</published><updated>2011-01-21T08:45:34.141-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Funny'/><title type='text'>Complex Conjugates</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://xkcd.com/849/"&gt;&lt;img border="0" src="http://imgs.xkcd.com/comics/complex_conjugate.png" /&gt;&lt;/a&gt;&lt;/div&gt;From &lt;a href="http://www.blogger.com/xkcd.com"&gt;xkcd.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5856421757655521576?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5856421757655521576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/complex-conjugates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5856421757655521576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5856421757655521576'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/complex-conjugates.html' title='Complex Conjugates'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-2684474893877805599</id><published>2011-01-20T21:52:00.000-08:00</published><updated>2011-01-20T21:52:34.447-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>EEG Brain Machine Interface</title><content type='html'>A couple of years ago, I mentored a Senior Design team whose project was to create an EEG-based Brain Machine Interface. They replicated the methods of &lt;a href="http://www.pnas.org/content/101/51/17849.full"&gt;Wolpaw and McFarland&lt;/a&gt; (2004) that were published in the prestigious Proceedings of the National Academy of Science. At the time it was published, that article was quite cutting edge, and yet only three years later, my seniors managed to replicate a good portion of it. Even more impressive was the fact that, instead of using a sophisticated commercial EEG data acquisition system, my seniors built their own EEG amplifier and digitizer, using the freely available &lt;a href="http://openeeg.sourceforge.net/doc/"&gt;OpenEEG&lt;/a&gt; design.&lt;br /&gt;&lt;br /&gt;The students were only able to get cursor control working in one dimension (up/down) - they ran out of time to implement left/right. Even getting up/down to work was a pretty impressive accomplishment given the poor signal to noise ratio of the homegrown EEG system.&lt;br /&gt;&lt;br /&gt;The video below shows their system doing its thing:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/dh5fGITJNk0" title="YouTube video player" type="text/html" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Credit goes to my 2007 Senior Design team: Jesse Krigelman, Matt Brooks, Drew Taylor, and Lee Chavous.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-2684474893877805599?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/2684474893877805599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/eeg-brain-machine-interface.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2684474893877805599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/2684474893877805599'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/eeg-brain-machine-interface.html' title='EEG Brain Machine Interface'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/dh5fGITJNk0/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3923364511805744512</id><published>2011-01-20T19:56:00.000-08:00</published><updated>2011-01-26T19:58:38.886-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical Talks'/><title type='text'>Conference Lecture</title><content type='html'>This is a talk I gave at the 2010 IEEE Engineering in Medicine and Biology Conference in Buenos Aires, Argentina. The topic is&amp;nbsp;Reconfigurable Embedded System Architecture for Neural Signal Processing:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/V3flqYcZTJk" frameborder="0" allowFullScreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3923364511805744512?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3923364511805744512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/conference-lecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3923364511805744512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3923364511805744512'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/conference-lecture.html' title='Conference Lecture'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/V3flqYcZTJk/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-5303405226207346632</id><published>2011-01-20T19:43:00.000-08:00</published><updated>2011-01-26T19:58:38.887-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Technical Talks'/><title type='text'>TEDxPhilly</title><content type='html'>Some shameless self-promotion ... I gave a TEDx talk recently about engineering the brain machine interface:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/HV-k7EwZVNQ" title="YouTube video player" type="text/html" width="640"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-5303405226207346632?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/5303405226207346632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/tedxphilly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5303405226207346632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/5303405226207346632'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/tedxphilly.html' title='TEDxPhilly'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/HV-k7EwZVNQ/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-4339827469393705638</id><published>2011-01-20T19:31:00.000-08:00</published><updated>2011-01-21T08:45:34.141-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>First Lecture</title><content type='html'>The first lecture was mostly a success, although I'm as nervous as ever about the variety of backgrounds in the classroom. Adapting to the strengths of the class will be key. I'm also going to have to work to make sure the class has the desired feel of being a journal club and not a lecture. This might be hard considering that as many as 14 students will be taking the course.&lt;br /&gt;&lt;br /&gt;Today we covered the basics of electrical engineering circuit and linear systems theory. And on top of that we covered the very basics of neuroanatomy. Not too shabby for one 2.5 hour session. The ECE theory came from a &lt;a href="http://www.box.net/shared/0ktb7hf1mf"&gt;powerpoint presentation&lt;/a&gt; I gave a couple of years ago to some Neurology residents. The neuroanatomy review came from Chapter 1 of "&lt;a href="http://www.amazon.com/Neuroscience-Fourth-Dale-Purves/dp/0878936971/ref=ntt_at_ep_dpi_1"&gt;Neuroscience&lt;/a&gt;" by Purves et al. The bio-types in the room didn't complain too much at my review of neurons and synapses, so either they are too polite to complain or I got most of the details at least partially correct ;)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CBQU5iEgp0E/TTj9dR9i5kI/AAAAAAAAAdc/tr8wBG2IJ40/s1600/homunculus_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://2.bp.blogspot.com/_CBQU5iEgp0E/TTj9dR9i5kI/AAAAAAAAAdc/tr8wBG2IJ40/s320/homunculus_1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There were many good questions - for example we talked in detail about why differential recordings are so important in biomedical settings (big offset voltages that need rejecting...). We also had a marginally uncomfortable chuckle over why the ears are so heavily represented in the homunculus - yes, they are very sensitive, but why should that be the case? Its not like they are fingers with their abundant dexterity. Hmm. We left that question open for a later date.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Next week we'll tackle instrumentation in more detail, including the electrode-electrolyte interface and common types of electrodes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-4339827469393705638?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/4339827469393705638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/first-lecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4339827469393705638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/4339827469393705638'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/first-lecture.html' title='First Lecture'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CBQU5iEgp0E/TTj9dR9i5kI/AAAAAAAAAdc/tr8wBG2IJ40/s72-c/homunculus_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3331563262701117271.post-3409848087996504382</id><published>2011-01-20T11:26:00.001-08:00</published><updated>2011-01-21T08:45:34.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro to Neural Engineering'/><title type='text'>Intro to Neural Engineering</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CBQU5iEgp0E/TTih3Dw0ZyI/AAAAAAAAAdQ/MWSg1XMc5tQ/s1600/imgres.jpeg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5564375306891192098" src="http://3.bp.blogspot.com/_CBQU5iEgp0E/TTih3Dw0ZyI/AAAAAAAAAdQ/MWSg1XMc5tQ/s400/imgres.jpeg" style="float: center; height: 137px; margin-bottom: 10px; margin-left: 10px; margin-right: 0px; margin-top: 0px; width: 367px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This week I'm kicking off my new graduate course "Intro to Neural Engineering". The goal is to introduce students to the concepts of neural engineering including both the scope of the field as well as some of the specific techniques. Since I've never taught this course before (indeed, I don't even think its been taught elsewhere all that much) it should be a real seat of the pants experience.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm going to have students treat this like a glorified journal club - every week one or two students will be responsible for guiding a discussion on a reading. Readings will come from textbooks, peer-review literature, and possibly even general-interest non-fiction. Additionally, students are going to have to roll up their sleeves and actually try implementing some of the techniques we'll be reading about. This could involve coding up a particular mathematical technique or building a circuit to do data acquisition of some sort.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of my main challenges will be the range of students. Of the 11 students registered, I have two PhD students in Electrical Engineering, about six MS students in EE, two neuroscience students, and a physical therapy student. Thats a bit of a mixed bag! Figuring out how to keep all these abilities interested will be a real challenge...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3331563262701117271-3409848087996504382?l=obeidlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://obeidlab.blogspot.com/feeds/3409848087996504382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://obeidlab.blogspot.com/2011/01/intro-to-neural-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3409848087996504382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3331563262701117271/posts/default/3409848087996504382'/><link rel='alternate' type='text/html' href='http://obeidlab.blogspot.com/2011/01/intro-to-neural-engineering.html' title='Intro to Neural Engineering'/><author><name>doc</name><uri>http://www.blogger.com/profile/04161354219540180195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CBQU5iEgp0E/TTih3Dw0ZyI/AAAAAAAAAdQ/MWSg1XMc5tQ/s72-c/imgres.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
