Wolfram Computation Meets Knowledge

Brain, Neurons, Cognition: Computational Neuroscience

Brain image and brain flow graph

As the next phase of Wolfram Research’s endeavor to make biology computable, we are happy to announce the recent release of neuroscience-related content.

The most central part of the human nervous system is the brain. It contains roughly 100 billion neurons that act together to process information, subdivided functionally and structurally into areas specialized for certain tasks. The brain’s anatomy, the characteristics of neurons and cognitive maps are used to represent some key aspects of the functional organization and processing abilities of our nervous system. Our new neuroscience content will give you a sneak peek into the amazing world of neuroscience with some facts about brains, neurons and cognition.

Brain Anatomy and Network

A primal part of the brain, the amygdala, is the well-studied cognitive area responsible for the emotional process circuitry and has active roles in emotional state, memory, face recognition and decision making. The amygdala is located near the brainstem, close to the center of the brain and, as its name suggests, is shaped like an almond:

light = Join[{{"Ambient", Black}}, Table[{"Directional", Hue[.58, .5, 1], ImageScaled[{Sin[x], Cos[x], -.5}], Pi/2}, {x, 0, 2 Pi - 2 Pi/8, 2 Pi/8}]]; AnatomyPlot3D[{AnatomyForm[ Directive[Specularity[White, 30], Hue[.58, 0, 1, .12], Lighting -> light], Entity["AnatomicalStructure", "Amygdala"] -> Glow[Red]|>], Entity["AnatomicalStructure", "Amygdala"], Entity["AnatomicalStructure", "Brain"], Entity["AnatomicalStructure", "Skin"]}, Background -> Hue[.58, 1, .3], ViewPoint -> Right, SphericalRegion -> True, PlotRange -> {{Automatic, 0}, Automatic, {1400, Automatic}}, BaseStyle -> {RenderingOptions -> {"DepthPeelingLayers" -> 20}}, ImageSize -> 500]

Outgoing connections from the amygdala can be found with the "NeuronalOutput" property:

output = Entity["AnatomicalStructure", "Amygdala"]["NeuronalOutput"]

Here we see a visualization of the output connectivity of the amygdala in two layers:

ag = NestGraph[ Cases[EntityValue[#, EntityProperty["AnatomicalStructure", "NeuronalOutput"]], _Entity] &, Entity["AnatomicalStructure", "Amygdala"], 2, ImageSize -> 700, VertexSize -> 2, EdgeStyle -> LightGray, GraphStyle -> "SmallNetwork", GraphLayout -> "RadialEmbedding", VertexLabels -> Placed["Name", Tooltip], GraphHighlight -> Entity["AnatomicalStructure", "Amygdala"]]

Just as in a simple network, we could do additional computations on other networks. Like many other biological systems, our nervous system is hardwired to receive positive and negative feedback. Feedback is one of the key aspects of the brain’s information processing; it allows the augmentation or decrease of the efficacy of transmission, as well as fine-tuning for the resulting outputs.

Find the loop and highlight in the above graph:

cycle = FindCycle[ag, Infinity, All];

HighlightGraph[ag, cycle]

Or find the specific circuit that comprises the combination amygdala-prefrontal cortex. The prefrontal cortex has the primary role in decision making, and therefore the amygdala-prefrontal cortex connectivity plays an essential role in modulating responses to emotional experiences:

circuit =   FindCycle[{ag, Entity["AnatomicalStructure", "PrefrontalCortex"]}]

HighlightGraph[ag, Join[circuit, VertexList[ Graph[First@circuit]], {Entity["AnatomicalStructure", "AnteriorCingulateGyrus"]}], GraphHighlightStyle -> "Thick"]

We can also identify the minimum-cost flow between the amygdala and the spinal cord. The spinal cord processes signals from the brain and transmits them to other parts of the body to excite motor response:

f = FindMinimumCostFlow[ag, Entity["AnatomicalStructure", "Amygdala"],    Entity["AnatomicalStructure", "SpinalCord"], "OptimumFlowData"]


It is also noteworthy that, in addition to the brain’s connectivity in the central nervous system, we have peripheral innervation integrated in our AnatomyData function. The motor commands from the spinal cord eventually reach the periphery.

Find nerves that innervate the left hand:

nerve = EntityValue[Entity["AnatomicalStructure", "LeftHand"],    "NerveSupply"]

And visualize them in 3D with the AnatomyPlot3D function:

AnatomyPlot3D[{nerve, Opacity[.3], Entity["AnatomicalStructure", "SkeletonOfLeftFreeUpperLimb"], Entity["AnatomicalStructure", "LeftHand"]}] /. Annotation[x_, y_] :> Tooltip[x, "Name" /. y]

Neuron Characteristics

We have looked at macroscopic pictures of our nervous system so far. Now let’s look at the brain’s functional unit, the neuron. Of course, we cannot characterize all the billions of neurons, but key features of a few hundred types of neurons are very similar across various mammalian species; these will be considered in detail.

A variety of properties are available for the "Neuron" entity type to describe physical, electrophysiological and spatial characteristics of individual types of neurons:



We can get information on the types of neurons found in a particular brain region. For example, we can get a listing of neurons in the hippocampus, which is associated with emotional states, conversion of short-term to long-term memories and forming spatial memory:

EntityValue[Entity["AnatomicalStructure", "Hippocampus"], "Neurons"]

Collecting further details, list the set of neurons whose axons arborize at the CA1 alveus area of the hippocampus:

EntityValue[ EntityClass[ "Neuron", {"LocationOfDistantAxonArborization" -> Entity["AnatomicalStructure", "CA1Alveus"]}], "Entities"]

Neurons transmit electrical signals to communicate with one another. Physical characteristics and patterns of their spikes, known as action potentials, differ across different neuron types.

We can obtain experimentally measured electrophysiological properties of hippocampus CA1 pyramidal cells:

Dataset@EntityValue[Entity["Neuron", "HippocampusCA1PyramidalCell"],     "NonMissingPropertyAssociation"][[;; 10]]

Here we can visually recognize how spike characteristics vary across different neuron types:

Histogram[ EntityValue[EntityList["Neuron"], EntityProperty["Neuron", "AverageSpikeAmplitude"], "NonMissingEntityAssociation"], 20, PlotLabel -> "Spike amplitude (mV)"]

A single neuron’s spike propagation can be simulated with the well-known Hodgkin and Huxley model (A. L. Hodgkin and A. F. Huxley, 1952) based on four differential equations involving voltages and currents. Also, there are biologically realistic computational models accommodating Hodgkin and Huxley’s concepts developed to simulate ensembles of spikes in a population of neurons (E. M. Izhikevich, 2004). We can better understand how neurons excite/suppress one another to transmit information by modeling the neurons’ electrical spikes and comparing their patterns of activities with experimentally measured ones:

Spiking neurons

Cognitive Map

After looking at microscopic features in our brain, let us finally explore the brain’s macro-scale executive function. Thanks to recent advances in imaging techniques to visualize brain activity in various cognitive states, we can map out cortical areas that are associated with specific cognitive processes. Brain areas associated with specific functions such as memory, decision making, language, emotional state, visual perception, etc. are well characterized with the appropriate activity-based fMRI analysis.

Using the EntityValue query with the AnatomicalFunctionalConcept entity type, we can find more information on hierarchically categorized brain activities:

Dataset@EntityValue[   Entity["AnatomicalFunctionalConcept",     "DecisionMaking"], {EntityProperty["AnatomicalFunctionalConcept",      "Definition"],     EntityProperty["AnatomicalFunctionalConcept",      "AssociatedAnatomicalSites"],     EntityProperty["AnatomicalFunctionalConcept", "BroaderConcepts"],     EntityProperty["AnatomicalFunctionalConcept", "NarrowerConcepts"],     EntityProperty["AnatomicalFunctionalConcept", "SupersetConcepts"],     EntityProperty["AnatomicalFunctionalConcept", "SubsetConcepts"],     EntityProperty["AnatomicalFunctionalConcept",      "StandardExperimentalTasks"]}, "PropertyAssociation"]

Here we can look up the categories of functions associated with each cerebral lobe and create a simple cortical map:

Cerebral lobe cortical map

We are not limited to the abstract representation of cortical maps; fMRI-based statistical maps of brain activity are also available.

Let’s look at how we perceive the visual world. A key aspect of visual perception is the subprocess (concept) of cognition as our brain categorizes our visually perceived faces, places, words, numbers, etc. with distinctive patterns of activity. The following graph illustrates how these concepts are hierarchically organized. Some areas of brain activation are highlighted (brain images are seen from the rear):

g = NestGraph[Cases[EntityValue[#, "NarrowerConcepts"], _Entity] &, Entity["AnatomicalFunctionalConcept", "VisualPerception"], 2]; act = EntityValue[VertexList[g], "BrainGraphicBack"]; Graph[EdgeList[g], VertexLabels -> MapThread[#1 -> If[MemberQ[{Entity["AnatomicalFunctionalConcept", "VisualPerception"], Entity["AnatomicalFunctionalConcept", "VisualFaceRecognition"], Entity["AnatomicalFunctionalConcept", "VisualNumberRecognition"], Entity["AnatomicalFunctionalConcept", "VisualPlaceRecognition"]}, #1], Placed[Grid[{{Rasterize[#1]}, {#2}}], Center], Placed[Rasterize[#1, ImageSize -> {Automatic, 26}], Center]] &, {VertexList[g], act}], VertexSize -> Small, GraphLayout -> "RadialEmbedding", PlotTheme -> "Monochrome", AspectRatio -> 1.2, ImageSize -> 900, ImagePadding -> 60] // Image

Brain graphic

OK, let’s look further. Visually perceived words, sentences, faces, etc., in turn, affect “language” and “emotion”:

ImageCollage@  EntityValue[   Entity["AnatomicalFunctionalConcept",     "Language"], {EntityProperty["AnatomicalFunctionalConcept",      "BrainGraphicFront"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageCoronalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageHorizontalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageSagittalSlices"]}]

ImageCollage@  EntityValue[   Entity["AnatomicalFunctionalConcept",     "Emotion"], {EntityProperty["AnatomicalFunctionalConcept",      "BrainGraphicFront"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageCoronalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageHorizontalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageSagittalSlices"]}]

ImageCollage@  EntityValue[   Entity["AnatomicalFunctionalConcept",     "Emotion"], {EntityProperty["AnatomicalFunctionalConcept",      "BrainGraphicFront"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageCoronalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageHorizontalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageSagittalSlices"]}]

ImageCollage@  EntityValue[   Entity["AnatomicalFunctionalConcept",     "Emotion"], {EntityProperty["AnatomicalFunctionalConcept",      "BrainGraphicFront"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageCoronalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageHorizontalSlices"],     EntityProperty["AnatomicalFunctionalConcept",      "BrainImageSagittalSlices"]}]

We can confirm that the amygdala (remember, the left and right amygdalae found near the center of the brain) is actively involved in emotions. If you want to learn more about these individual models, they are also available in 3D polygon data and ready to be aligned to our 3D brain model in AnatomyData for further computation.

Here is the brain activation area 3D graphic associated with emotion:

em = Entity["AnatomicalFunctionalConcept", "Emotion"][   "ActivationAreas3DGraphic"]

We can combine that graphic together with the brain model for visual comparison (the amygdala is highlighted in red; the right cerebral hemisphere is shown here for demonstration):

AnatomyPlot3D[{em /. Opacity[_] :> Opacity[.4], {Directive[Specularity[White, 30], Hue[.58, 0, 1, .12], Lighting -> light], Entity["AnatomicalStructure", "RightCerebralHemisphere"]}, {Glow[ Red], Entity["AnatomicalStructure", "RightAmygdala"]}}, PlotRange -> Entity["AnatomicalStructure", "RightCerebralHemisphere"] , Background -> Hue[.58, 1, .3], ViewPoint -> Right, SphericalRegion -> True, BaseStyle -> {RenderingOptions -> {"DepthPeelingLayers" -> 20}}]

It’s fascinating to learn how our brain is organized and how it coordinates the processes in our nervous system. As we know, there is still a lot to be learned about human cognition, and exciting discoveries are being made every day. As we gain additional insights, we continue to expand our knowledgebase to attain a better and deeper understanding of the human nervous system.

Stay tuned for more neuroscience content to come!

Download this post as a Computable Document Format (CDF) file. New to CDF? Get your copy for free with this one-time download.


Join the discussion

!Please enter your comment (at least 5 characters).

!Please enter your name.

!Please enter a valid email address.


  1. This is nice to see. I realize that Alpha+friends ‘curate’ the data and that there are several connectivity databases out there. Before I ‘trust’ anything coming out of WRI/Alpha/Curation Gnomes, I’d like to know the source of the data. I seem to remember that there are some mechanisms to locate that information in some of the WRI databases, but can’t recall off the top of my head.

  2. Awesome post, thanks, I am replicating this work to analyze different areas of the brain. I would like to know if there is a way to represent a different kind of interaction, like inhibitory interaction and if there it is possible to represent the strength of the interaction.

    Also, I wanna know what is the source of the information, Thanks

    • Hello Oscar!

      These are the two sources we used to add information on the brain anatomy:

      For specific interaction across brain areas, we do have information about types of neurons found in areas of the brain and types of neurotransmitter released from those neurons (which, in turn, determines excitatory/inhibitory connection). However, we currently don’t have information about type/strength of interaction in the brain area circuitry level. That’s something we would like to address in the future.