File size: 4,251 Bytes
ec5fe32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5665998
4aad7a1
ec5fe32
 
 
 
 
 
04c02e3
 
ec5fe32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4aad7a1
 
ec5fe32
 
4aad7a1
ec5fe32
 
 
 
 
 
4aad7a1
 
ec5fe32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
---
title: "PFC Dashboards"
author: "Cao Lab"
server: shiny
format: 
  dashboard:
    logo: https://zhenghu159.github.io/picx-images-hosting/PFCapp/Logo.1756dx3zx7.webp
    nav-buttons:
      - icon: github
        href: https://github.com/GangCaoLab/mPFC-web
---



# Home

<p style="font-size: 50px; font-weight: bold; text-align: center;">A single-cell resolution spatial-transcriptome-connectome integrated  multi-omic atlas of prefrontal cortex</p>

<br>

<img src="https://zhenghu159.github.io/picx-images-hosting/PFCapp/main.77dcin4jph.webp" style="width: 100%;">

<br>
<br>

<p style="font-size: 30px; font-weight: bold; text-align: left;">
Abstract
</p>

<p style="font-size: 20px; text-align: justify;">
Medial prefrontal cortex (mPFC) is the high-level center of brain cognitive function, which regulates emotion, memory, decision-making, behavior, neuroendocrine and other brain functions. mPFC has a wide range of projections in the cerebral cortex, thalamus, hypothalamus, basal ganglia, midbrain and other brain regions, forms extremely complex projection circuits. Analyzing these numerous projection circuits structures is an urgent problem in neuroscience. The conventional method is using neurotropic viruses to express fluorescent proteins for nucleus labeling. However, due to the limitation of fluorescent protein types and spectral crossover, it is time-consuming and labor-intensive to realize multiple nucleus labeling and tracing. The ideal circuits analysis solution is to break through the limit of fluorescent protein types and can label multiple brain regions. On the basis of multi-brain circuits labeling, it can also analyze the expression of neuron-related genes in the circuits, so as to better interpret the mechanism by which specific circuits perform their functions.
</p>


<br>

<p style="font-size: 30px; font-weight: bold; text-align: left;">
Interactively exploring the data
</p>

<a style="font-size: 20px; font-weight: bold; text-align: left;">
scRNAseq
</a>

- Cell cluster UMAP
- Feature plot in UMAP

<a style="font-size: 20px; font-weight: bold; text-align: left;">
Spatial data
</a>





```{r}
#| context: setup
#| warning: false
#| message: false

library(ggplot2)
library(Seurat)
#library(scCustomize)
library(shiny)
library(rgl)
#library(wholebrain)
#attach(loadNamespace('wholebrain'), warn.conflicts = FALSE)
source("R/Palettes.R")
source('R/includes.R')
Adult.Ex <- readRDS('data/Adult.Ex.rds')
sp.PFC <- readRDS('data/sp.PFC.rds')
options(rgl.useNULL = TRUE)
```



# scRNAseq

## Row

### Column

```{r}
selectInput('cluster', 'Select Cluster', c("SubType_Layer","SubType"))
plotOutput('cluster_plot')
```

### Column

```{r}
selectInput('gene', 'Select Gene', rownames(Adult.Ex))
plotOutput('gene_plot')
```


```{r}
#| context: server

output$cluster_plot <- renderPlot({
  DimPlot(
    Adult.Ex,
    reduction = 'umap',
    group.by = input$cluster,
    cols = col_cluster[[input$cluster]],
    label = T
  ) +
    coord_fixed()
})

output$gene_plot <- renderPlot({
  FeaturePlot(
    Adult.Ex,
    features = input$gene) +
    coord_fixed()
})
```






# Spatial

TO DO ...




# 3D

## Row

### Column

```{r}
selectInput('subtype', 'Select SubType', sort(unique(sp.PFC$SubType)))
rglwidgetOutput('spatial_subtype', width = "100%")
```


```{r}
#| context: server

output$spatial_subtype <- renderRglwidget({
  open3d()
  bg3d(color = "black")
  par3d(userMatrix = rotationMatrix(-pi/6, -1, 1, 0), zoom = 0.6)
  acr.list <- c("MOs","PL","ORBm","ACAd","ILA","DP","ACAv")
  for(acr in acr.list){
    mesh <- mesh3d.allen.annot.from.id(get.id.from.acronym(acr))
    #to.del <- which(mesh$vb[1,] < 0)
    #to.del <- NA
    #mesh$it <- mesh$it[,!is.element(mesh$it[1,], to.del) & !is.element(mesh$it[2,], to.del) & !is.element(mesh$it[3,], to.del)]
    #col <- color.from.acronym(acr)
    col <- "lightgray"
    #col <- col_Region[acr]
    shade3d(mesh, col = col, material = list(lit=FALSE), alpha = 0.1)
  }
  
  df_plot <- [email protected][which(sp.PFC$SubType == input$subtype),]
  
  spheres3d(x = df_plot$ML_new, 
            y = df_plot$DV_new,
            z = df_plot$AP_new,
            col = col_cluster[["SubType"]][input$subtype], radius=0.01, alpha=1)
  rglwidget()
})
```