For the first three months of my internship at the Sudha Gopalakrishnan Brain Centre, I worked as a full-stack developer. During this period, I contributed to both the frontend and backend development of NeuroVoyager. I used Django for the backend and Angular for the frontend to create a seamless and efficient brain research platform.
After my initial period, I transitioned to the AI/ML team. Here, I have been involved in implementing advanced features such as the Data Base Query Engine, NeuroGuardrails, and the Analytics Generator. These components are essential for interacting with our massive datasets, ensuring safe and relevant queries, and generating detailed analytics for various brain regions.
It's been a rewarding experience working here, especially with the weekly guidance and support from NVIDIA, which has been invaluable in advancing our projects.
Recently, we had the opportunity to present our work on NeuroVoyager at the IIT Madras Student Fest. During this event, we showcased the various features of NeuroVoyager to the students, highlighting the innovative tools and technologies we have developed for brain research.
We demonstrated how the platform facilitates high-resolution brain imaging, comprehensive data analysis, and advanced query handling. The response from the students was overwhelmingly positive, and it was a great chance to share our work and inspire future neuroscientists and engineers.
The Sudha Gopalakrishnan Brian Centre (SGBC) at IIT Madras has developed a brain research platform called Neuro Voyager. This platform focuses on high-resolution brain imaging at the cellular level, generating massive datasets for comprehensive brain analysis. In collaboration with NVIDIA, we have created a system capable of processing and visualizing data from hundreds of brains, facilitating groundbreaking research in neuroscience by making this data accessible globally
A simple easy to use query engine Where you can interact with the database in natural language
There are four parameters.
- species
- organ
- stain
- age
import requests
from IPython.display import Markdown, display
baseUrl = "https://apollo2.humanbrain.in/iipsrv/"
url = "https://apollo2.humanbrain.in/analytics/dbBrainQuery"
response = requests.post(url, json={"query": "fetal brain age less than 20 weeks NISL"})
if response.status_code == 200:
response_data = response.json()
markdown_content = ""
markdown_content += f"**Species**: {response_data['res']['species']}\n"
markdown_content += f"**Organ**: {response_data['res']['organ']}\n"
markdown_content += f"**Age Operator**: {response_data['res']['operator']} {response_data['res']['age']} weeks\n"
markdown_content += "\n**Images:**\n\n"
for item in response_data['msg']:
image_url = baseUrl + item['pngPathLow']
image_html = f'<img src="{image_url}" alt="{item["name"]}" style="max-width:200px">'
details_html = f'<br>Name: {item["name"]}<br>Biosample: {item["biosample"]}<br>'
markdown_content += f"{image_html}<br>{details_html}\n\n"
display(Markdown(markdown_content))
else:
print(f"Request failed with status code: {response.status_code}")
Species: Human fetus Organ: brain Age Operator: < 20 weeks
Images:
Developed an agent who blocks queries that are unsafe and irrelevant to Neuroscience and brain anatomy using Nemoguardrails framework from NVIDIA and models from Meta
Frameworks used | NemoGuardrails, VLLM |
Model used | meta-llama/Meta-Llama-Guard-2-8B |
import requests
from utils import stream_text
url = "http://dgx3.humanbrain.in:1947/neuroguardrail"
response = requests.get(url, params={"query":"how to brain wash?"})
guard_eval = response.json()
stream_text(guard_eval['msg'])
Our system specializes in answering questions and providing information about the brain and neuroscience. Regrettably, your query doesn't align with our focus.
To offer accurate and relevant information, please ask about topics such as:
- Neuroanatomy
- Brain functions
- Neuroscience research
- Cognitive processes
For questions within these areas, feel free to ask. For other topics, please consult relevant resources or services.
import requests
from utils import stream_text
url = "http://dgx3.humanbrain.in:1947/neuroguardrail"
response = requests.get(url, params={"query":"what is neuroscience?"})
guard_eval = response.json()
stream_text(guard_eval['msg'])
YES
When the explorer asks about a brain region or asks question based on function of the region, this feature returns the brain region name their area, perimeter and overall area it occupies for all the brains.
Analytics can also be generated for a particular region of a particular brain id
import requests
from IPython.display import display, Markdown
from utils import show_analytics, get_markdown
url = "http://dgx3.humanbrain.in:1947/get_stats"
# response = requests.get(url, params={"query":"describe the brain region responsible for memory"})
response = requests.get(url, params={"query":"describe the cerebellum?"})
if response.status_code == 200:
data = response.json()
else:
print(f"Failed to retrieve data: {response.status_code}")
data_list, overall_area = show_analytics(data)
tables_view = get_markdown(data_list, overall_area)
Markdown(tables_view)
## ANALYTICS GENERATOR
Damage to the cerebellum can result in symptoms such as ataxia (loss of coordination and balance), tremors, slurred speech, and difficulty with fine motor skills. Conditions that can affect the cerebellum include stroke, multiple sclerosis, tumors, and genetic disorders.
Treatment for cerebellar disorders typically involves physical therapy to improve coordination and balance, as well as medications to manage symptoms such as tremors. In some cases, surgery may be necessary to remove tumors or alleviate pressure on the cerebellum.
Overall, the cerebellum is a crucial part of the brain that plays a vital role in movement and coordination, and damage to this region can have significant impacts on a person's quality of life.
Biosample id | Overall area in mm2 |
---|---|
142 | 5.97 |
222 | 0.24 |
id | section | region | area | perimeter |
---|---|---|---|---|
222 | 1273 | Cerebellum | 4.03 | 8.09 |
142 | 889 | Cerebellum | 42.96 | 72.45 |
142 | 955 | Cerebellum | 56.55 | 103.17 |
import requests
from IPython.display import display, Markdown
from utils import show_analytics, get_markdown
url = "http://dgx3.humanbrain.in:1947/get_stats"
# response = requests.get(url, params={"query":"describe the brain region responsible for memory"})
response = requests.get(url, params={"query":"describe the region responsible for memory?"})
if response.status_code == 200:
data = response.json()
else:
print(f"Failed to retrieve data: {response.status_code}")
data_list, overall_area = show_analytics(data)
tables_view = get_markdown(data_list, overall_area)
Markdown(tables_view)
ANALYTICS GENERATOR
The Hippocampal formation is located in the medial temporal lobe and consists of the hippocampus, the dentate gyrus, and the subiculum. It is involved in the encoding, consolidation, and retrieval of memories. The hippocampus is particularly important for spatial memory and navigation, while the dentate gyrus is involved in pattern separation, which is the ability to distinguish between similar memories.
Damage to the hippocampal formation can result in memory deficits, such as anterograde amnesia, which is the inability to form new memories, and retrograde amnesia, which is the loss of memories that were formed before the damage occurred. Patients with damage to this region may have difficulty remembering recent events or forming new memories, while older memories may remain intact.
Overall, the hippocampal formation is a critical region for memory processing and plays a key role in our ability to remember past events, learn new information, and navigate our environment.
Biosample id | Overall area in mm2 |
---|---|
141 | 11.24 |
142 | 39.79 |
213 | 37.55 |
222 | 13.44 |
244 | 10.95 |
id | section | region | area | perimeter |
---|---|---|---|---|
244 | 1078 | Dentate gyrus | 1.23 | 5.12 |
244 | 739 | Dentate gyrus | 1.38 | 5.72 |
244 | 739 | Dentate gyrus | 2.44 | 8.00 |
244 | 751 | Dentate gyrus | 2.02 | 6.80 |
141 | 1012 | Hippocampal formation | 1.97 | 7.16 |
141 | 1021 | Hippocampal formation | 3.59 | 11.96 |
141 | 1021 | Hippocampal formation | 1.54 | 6.57 |
141 | 991 | Hippocampal formation | 2.40 | 10.47 |
141 | 991 | Hippocampal formation | 1.48 | 6.26 |
141 | 1075 | Dentate gyrus | 2.22 | 13.47 |
141 | 1075 | Hippocampal formation | 1.54 | 7.17 |
141 | 1075 | Hippocampal formation | 1.96 | 8.50 |
141 | 367 | Dentate gyrus | 1.04 | 5.03 |
141 | 367 | Dentate gyrus | 0.43 | 2.51 |
import requests
from IPython.display import display, Markdown
from utils import show_analytics, get_markdown
url = "http://dgx3.humanbrain.in:1947/get_stats"
# response = requests.get(url, params={"query":"describe the brain region responsible for memory"})
response = requests.get(url, params={"query":"describe the region responsible for attention?"})
if response.status_code == 200:
data = response.json()
else:
print(f"Failed to retrieve data: {response.status_code}")
data_list, overall_area = show_analytics(data)
tables_view = get_markdown(data_list, overall_area)
Markdown(tables_view)
ANALYTICS GENERATOR
Additionally, the Cingulate cortex is connected to other regions of the brain involved in attention, such as the prefrontal cortex and the parietal cortex. These connections allow for the coordination of attentional processes and the integration of information from different sources.
Damage or dysfunction in the Cingulate cortex can lead to difficulties in maintaining attention, regulating emotions, and making decisions. Conditions such as attention deficit hyperactivity disorder (ADHD), depression, and anxiety disorders have been linked to abnormalities in the Cingulate cortex.
Overall, the Cingulate cortex plays a crucial role in attentional processes and is essential for our ability to focus, make decisions, and regulate our emotions.
Biosample id | Overall area in mm2 |
---|---|
213 | 0.02 |
id | section | region | area | perimeter |
---|---|---|---|---|
213 | 1060 | Cingulate cortex | 0.28 | 3.29 |
213 | 1060 | Cingulate cortex | 0.13 | 3.80 |
The simple yet powerful i-feature can be used to know the histology and digitalization details of the biosample which is live from database.
import requests
from IPython.display import display, Markdown
from utils import show_analytics, get_markdown
url = "http://dgx3.humanbrain.in:1947/api/v1/describe"
# response = requests.get(url, params={"query":"describe the brain region responsible for memory"})
response = requests.get(url, params={"biosample_id":"242"})
data = None
if response.status_code == 200:
data = response.json()
else:
print(f"Failed to retrieve data: {response.status_code}")
Markdown(data['response'])
- The specimen referred to as Human Brain 1 NIMHANS is a biological sample aged 50.0 years.
- The gender of the specimen is identified as male.
- The specimen consists of sample of the Brain of the species Human.
- The specimen acquisition was external from laboratory NIMMHANS.
- The sample was created on 2023-06-14 at 06:40.
- Block Face Image count: 1902
- MRI Image count: 0
- List of stains: None.
- No. of sections digitized
Quality Check (QC) details- NISSL - Total QC Passed: 0.
- HEOS - Total QC Passed: 0.