What is the Kymata Atlas?

Imagine that someone gave you a computer and said,

Tell me how this object works.

What would you aim to give them? A list of components? The position of the memory cards and processors within the device?

This may be a good start to describing how the computer works. But the computer also contains a list of instructions (called programs) that transform incoming information (from the touch-screen, keyboard, mouse, camera, motion-detector etc.) to new information, which is presented to the user on the device's screen or through its speakers.

To someone interested in how a computer works, these instructions are also of interest. It is useful to know where the chips and wires are inside the device, but that is not going to tell you what the device will actually do when it is fed information.

Computer instructions take a very specific form. For example, the following computer program takes a word, given though the keyboard, and prints 'yes' onto the screen if the first and last letters are the same, and 'no' if they are not:

Here, KEYBOARD_INPUT stands for the word typed at the keyboard (the input), and SCREEN_OUTPUT is the value printed out to the screen. Each instruction consist of a variable a, b, c and d and a function get_input(), the transforming part of the instruction.

If we knew this bit of code, it would tell us how information is processed in the computer, but if we really want to know how the computer works, we also need to link this to where in the computer the variables, the inputs and outputs of each function, are stored. While the program is running, each variable is stored in a specific location in the computer.

We can add the location of each variable into the list of instructions (hold your mouse over each of the variables to view their location when the program is running):

Therefore the knowledge we need to describe how the computer works is, the instructions it uses (the variables and the functions) and the locations of the variables. This gives us a very clear understanding of the computer — how information enters it, how information is transformed, and where and how this information is stored.

We can represent this computer program in another way:

Now, the set of instructions is expressed as a flow diagram. The variables are still one after the other (left to right), but the functions are now represented by arrows.

We call this representation of the computer's set of instructions the information processing pathways map. This representation emphasises that the values in b and c are both a consequence of a, and their values affect d, and the values of b and c cannot influence each other.

Provided there are no search loops in our code, we can add yet another source of information into this graph: latencies — that is, the time at which the information takes to be stored to a variable, relative to when the information entered the system.

while, in our processing pathways map representation, it would look like this:

The latency is on the horizontal axis. As the cursor is moved left and right over the map, the timer displays the latency at which the variable is transformed. The latency is 0 ms when the input enters the system, and it takes 48 ms for the answer of the subsequent calculation to reach the SCREEN_OUTPUT. We have also added the physical locations of KEYBOARD_INPUT and SCREEN_OUTPUT to the map, in the same way we did for variables.

Information processing pathway maps are an important characterisation of computers because they map out how the computer handles incoming information. Of course, given the task of inferring these pathways from nothing but the behaviour of the computer would be very difficult. Imagine a computer which does nothing but accept a number between 0 and 1 million, and then gives you a new, seemingly random, number, also between 0 and 1 million. Determining what function, or sequence of functions, govern the creation of this new number — for instance by typing in different numbers and recording the answers to narrow down the possible candidates — would be so difficult as to be near impossible.[1]

The problem of determining a modern computer's processing map would be more difficult still: the more instructions in the device, the bigger the processing map:

McCandless, Doughty-White and Quick (2014) [2]

The map of a modern computer would contain many millions of pathways.

Keeping the computer example in mind, let's imagine that someone gives you a healthy human adult and says to you,

Tell me how their brain works.

Could you give them an information processing pathways map of the brain? At first glance it might seem not — the brain does not obviously run a strict list of instructions about what do with incoming information. But our above definitions means that 'list of instructions' is equivalent to 'sequence of transforms'. And inferring the sequence of transforms the brain applies to incoming information might be very useful indeed.

Of course, creating such a map for the brain would be very difficult — far more difficult than doing the same for a computer. To start with, the resulting map would be enormous, containing trillions of pathways. Mapping them all out would be very time consuming.[3]

Second, inferring the processing pathways of a computer is much easier than that of a human. Inferring the pathways of a computer may be invasive (opening up a computer to see where the wires lead for instance, or to measure voltage of different components) and the information is encoded, in most computers, as '1's and '0's, which are relatively easy to measure. Human (or animal) brains cannot be easily 'opened up', and measurement error is much higher.

Third, in the long run, it may simply not be possible to map the pathways of the brain completely. The implicit assumption of the reasoning above is that everything that the brain does can be broken down into defined, sequential transforms of information. But many have speculated that those behaviours that make us human — empathy, love, morality — may not be characterizable as such.[5]

The Kymata Atlas is an (incomplete) information processing pathways map of the human brain. The pathways are inferred from terabytes of human brain recordings made by the Cambridge University and the MRC Cognition and Brain Sciences Unit. This documentation explores how to access, interpret and cite the data, and how it was obtained.

Processing Pathways


The aims of Kymata


Documentation > Using Kymata

Quick-start Tutorial

Please read the 'General > Processing Pathways' section of the documentation before continuing.


Processing Pathways Viewer

Please read the 'General > Processing Pathways' section of the documentation before reading this section.


Surface Viewer

The surface viewer allows the user to visualise the location of a function's expression on the cortex, with sources arranged as tessellating hexagons. Latency is expressed present as time, which can be started and paused using the button in the top-right hand corner. The current latency is displayed on the bottom left of the screen.

The expression plot, accessible using the tab at the bottom of the viewer, allows the user to see the degree of expression on the cortical expression for a function, and this expression's latency. The plot shows all sources in the cortex (the left hemisphere on the top and the right hemisphere on the bottom). The further away from the centre the source, the stronger the evidence of expression for that function for that source. Strong expression, passing a high threshold, is coloured a darker grey, turning to coloured if the latency is over it. The current latency is marked by a triangle, and can be moved with the cursor or keyboard arrows.

By default, the expression for the instantaneous_loudness() function (KID: qrlfe) is displayed. The expression for other functions can be loaded from the function browser.

The viewing options, found in the top left hand corner, allow the user to alter various viewing options, including axis display, which hemispheres to display and which surface (pial, grey/white-matter boundary or midline) to project the expression to. The cortical surface can be expanded by using the slider in the bottom left corner of the screen.

Hovering the cursor over a source on the cortical surface will reveal that point's MNI coordinate, hemisphere and anatomical region. The anatomical regions (also known as 'cortical labels') displayed in Kymata are those of the Desikan-Kilkenny-Tourville-40 cortical labelling atlas[6, 7], which can be cited as:

A. Klein, J. Tourville (2012) "101 labeled brain images and a consistent human cortical labeling protocol" Frontiers in Brain Imaging Methods. 6:171. DOI: 10.3389/fnins.2012.00171

Hovering over a location also highlights the corresponding point in the expression plot.

Function Browser

The function browser can be accessed from the surface viewer using the button in the top left-hand corner. The browser lists the entire set of functions tested in Kymata, in alphabetical order of the function names. Each entry has a selection of meta-data associated for that function available for view, including a brief description, the authors, and a basic characterisation of the function itself.

You can search or filter the results using the search bar. Filtering options include the ability to filter by input stream, or by whether the function shows any significant expression.

To view the expression for a function, select the arrow to the right of it's entry.


Citing the Kymata Atlas (as an entity)

This format should be used when you want to cite the atlas as an entity. ie.

... and I found the documentation of the Kymata Atlas (Kymata Atlas, 2016) to be adequate, but not inspirational.

A Kymata Atlas data descriptor is not yet available, please cite the website:

The Kymata Atlas (2016) The Kymata Atlas homepage, https://kymata.org (retrieved 20-08-16)

Citing Kymata pathways and expression data

Warning This atlas is still in beta. We do not recommend citing data in Kymata unless you have spoken to support staff first.

This format should be used when you want to cite the pathways or expression data. Significant expression in Kymata refers to the entrainment of an output of a function at a particular location, 'L', and, by implication, to the existence of the function itself. This does not mean that the function exists at L, as the function characterises the transformation of information between two locations. So

CIELAB A* expression has been reported at MNI co-ordinate (3, -11, 23) at a latency of 45ms (Kymata Atlas, 2016).


Existence of the CIELAB A* function is supported by its expression at MNI co-ordinate (3, -11, 23) at a latency of 45ms (Kymata Atlas, 2016).

are both correct, but

The CIELAB A* function has been reported at MNI co-ordinate (3, -11, 23) at a latency of 45ms (Kymata Atlas, 2016).

is not. The associated reference might look something like this:

Kymata Atlas (2016) "Expression for CIELAB A* [KID:UYBPJ, Dataset 3.01]" Kymata Atlas; Cambridge University. https://kymata-atlas.org/perm/UYBPJ/latest

As well as the function name and KID, the reference also contains the dataset (see datasets section). The name of the dataset currently loaded in the viewer is displayed below the viewer and above the 'how to cite' button.

Also contained in the reference is an URL to the function's expression in Kymata (see sharing section).

For reasons of clarity or changed language use, the co-coordinators of Kymata will occasionally re-name functions, potentially leading to confusion (see the naming conventions section for more details). It is thus a good idea to reference a function's KID (unique identifier) at least once in your text. eg.

CIELAB A* [Kymata ID: UYBPJ] expression has been reported at MNI co-ordinate (3, -11, 23) at a latency of 45ms (Kymata Atlas, 2016).

A function's KID will never change, so by citing the KID you ensure that your readers will always be clear about the function you are referring to.

A list of journal articles containing KIDs can be found on the citations page.

In some instances, you may want to refer to the journal article where the function under discussion was developed, so that readers know where to look if they want to know more about the function itself. In this situation, the relevant journal/author information can be found in the information bar of the Kymata viewing pane, and this can be referenced in your text in the normal way. eg.

The instantaneous loudness function (Kymata ID: QRLFE; Moore, Glasberg & Baer, 1997) has long been suggested as the mechanism by which ...

Citing the Kymata Measurement Datasets

The correct citation for each dataset is given in the dataset's readme file, which can be found on the datasets page.


If you are looking for access to the raw electromagnetic measurements used to generate Kymata's pathways, please see the datasets section.

There are two main ways to share pathways information in Kymata. The first is the ability to create permalinks to pathways generated from specific datasets. Clicking on the 'share' button below the viewer will allow you to generate these.

Warning The ability to share the expression of a specific dataset is still in development, and users are currently only able to reference the latest dataset.

More generally, functions in the latest dataset can be linked to directly by using the adressing convention:




where <KID> is the function's KID. In addition to permalinks, we make all our pathways accessible via the API.


The Application Programming Interface [API] gives users access to the processing pathway graph and supplementary information in .JSON format.

Pathways data can be found at:


Information about each of the hypothesised functions can be found at:


Information about one specific functions can be found at:


where <KID> is the function's KID. The API is currently undergoing development, and more details on the schema will be available when this is complete.


The pathways in Kymata are generated from a single set of electromagnetic measurements of the human cortex, called a dataset.

Periodically, we record a new, bigger dataset, and re-generate the pathway map. Each new dataset is given an ID (1.00, 2.00, 2.01 etc), with higher version numbers denoting that the dataset is more recent. As with each dataset we are trying to reduce the noise, the higher numbered datasets should also generate the more accurate pathway maps. Kymata displays the map generated from the latest dataset by default, so for most users, you will always be accessing the most accurate version of the map. However, the old map is still assessable in Kymata: for instance, when a user shares or cites a permalink, this links back to the archived version of the map, with an alert informing the user that the map they are looking at has been superseded. This ensures that when a user has cites a map result in an academic setting, this (now archived) map is still available to a reader.

The current map changes over time in accordance with the functions that have been fed into it as hypotheses. Thus it is always possible that between citing a current result, and the data being archived, the map may have changed. However, in most cases, these changes are likely to be marginal.

In addition to the pathways being made available for each dataset, the dataset itself (that is, the raw recordings and the stimuli) are also made available for reuse, under a Creative Commons Attribution 4.0 International License. These, together with documentation and information about how the datasets were generated can be accessed on the datasets section of Kymata.

Documentation > Data Conventions

Function meta-data

Although each function is characterised by an equation or algorithm, there are other things we record about it. The first, and most important, is the KID (Kymata ID). This is the intended method for referring to a function. However, these IDs mean very little to a new user, so the name of the function is the function's secondary (although often more common) identifier in papers. For instance a function called 'CIEL*A*B* lightness' is the name given to the function which characterised the dimension of 'lightness' of the average image in the CIEL*A*B* colour space. Unlike KIDs, function names may change due to language usage, so the correct KIDs should always be referenced at least once in academic papers. Each function also has an author and a reference, that is, the individual or individuals who first published this function, and where this was published. This reference may be to a journal article, or the web address of the source code. Some functions have more than one author, or are the combination of several functions by several different authors. The author 'KGH' refers to the 'Kymata Hypothesis Group', which means that the function was generated in-house by the Kymata development team. In many cases, authorship may not be clear or may be convoluted (a function may be the representation of an intuition given in a paper by a different author, or have many authors) and we have tried attribute these functions correctly where possible. Functions that include other functions as subfunctions do not generally have the authors of the subfunctions included, as they are cited in the subfunctions themselves.

Other metadata includes an overview of the function, an equation and an equation explanation. These descriptions and equations are not intended to be exhaustive. Most of the functions in Kymata are very complicated, and the equation and equation explanation are often simplified for reasons of space. It is highly recommended that users consult the provided reference to familiarise themselves with the actual function.

Tags provide a set of keywords that describe a function, but again, are not exhaustive due to the complexity of most functions.

Function naming conventions

Function names are largely arbitrary. In most cases, the function name either relates to the conventional mathematical term (eg. calculate_hilbert_envelope()) or the name given to it by the author (calculate_instantaneous_loudness()). As all functions are 'calculating' or 'transforming' an input, we often leave these two terms out. eg. hilbert_envelope() and instantaneous_loudness().

Unfortunately, these names may be ambiguous to a new user; there here are many competing loudness functions and it may be that, for reasons of clarity, the function name has to be amended, say to cambridge_instantaneous_loudness(). But this means that all publications that have referenced the function using the previous name will now be referring to a function that does not exist or, worse, whose name has been reassigned. To avoid this, we assign all functions a Kymata ID, or KID, a unique identifier which will stay with the function even if its name changes. In the case of instantaneous_loudness(), this KID is qrlfe.

It is always recommended that users use a function's KID to refer to a function. See citing for more details.

Documentation > References


  1. A. Turing (1950) "Computing, Machinery and Intelligence". Mind 49:433-460.
  2. D. McCandless, P. Doughty-White, M. Quick (2014) "Million lines of code" informationisbeautiful.net
  3. A. Turing (1950) "Computing, Machinery and Intelligence". Mind 49:433-460.
  4. A. Turing (1951) "Can digital computers think?: a 1951 BBC radio lecture". The Essential Alan Turing (ed B. J. Copeland), Clanendon Press.
  5. A. Thwaites, E. Wieser, A. Soltan, I. Nimmo-Smith, I. Zulfiqar (in prep.) "Kymata, a directed graph of information processing pathways in the human cortex" TBC
  6. A. Klein, J. Tourville (2012) "101 labeled brain images and a consistent human cortical labeling protocol" Frontiers in Brain Imaging Methods. 6:171. DOI: 10.3389/fnins.2012.00171
  7. A. Klein, E. Neto, S. Ghosh, N. Nichols, F. Bao, J. Giard, Y. Hame, M. Reuter, J. Tourville (2016) "Mindboggle" mindboggle.info