单细胞随机采样
最近单细胞图谱越来越多的涌现,我们经常要用到别人产出的超级高质量的单细胞与自己测的细胞进行比较分析,但是图谱往往具有非常多的细胞数量,正常的计算设备无法带动,以最近发表的Science专刊的单细胞数据为例,动辄便是三四百万的单细胞量级,这个时候我们就需要对数据进行随机采样,以达到我们的计算能力,同时也不会影响我们的分析结果。
以小鼠的单细胞数据为例,The cell type composition of the adult mouse
brain revealed by single cell and spatial
genomics,这篇文章有4388420单核数据,读取下来需要400G+的运行内存,于是需要我们进行下采样,进行后续的分析。
有两种下采样方式,一种是每种细胞类群取N个,另一种是每种细胞类群取百分比,我通常使用百分比取样,是的细胞比例分布不改变。详细代码如下所示。
import anndata as ad
adata = ad.read('Macosko_Mouse_Atlas_Single_Nuclei.Use_Backed.h5ad')
# 比例采样 ...
rds与h5ad的相互转换
之前做过一个 rds 转 h5ad
的教程,现在看来发现有些过于繁琐,且随着时间的发展,也有了更好的方法的出现,所以这里再写一个教程。
新的工具包是 https://github.com/cellgeni/sceasy
,这是一个专注于做各种单细胞文件格式转换的文件,但是作者也并没有写明一个特别完整的参数说明,所以这里我也只能根据自己的使用经验来写一下。
安装可以如作者所述,直接安装即可
conda install -c bioconda r-sceasy
# 或者
devtools::install_github("cellgeni/sceasy")
安装并不复杂,这里会详细讲一下其更为优秀的使用
# 首先是包的载入,只需载入这两行即可,如果你的文件没有 loom的话,那么就不需要载入 loom包
library(sceasy)
library(reticulate)
# 单细胞的 rds 文件与 h5ad 文件之间的互相转换如下即可
sceasy::convertFormat(seurat_object, from="seurat", ...
杂聊9
醒来已然是九点多了,磨磨蹭蹭,拉屎撒尿,洗洗刷刷,就到了十点,想着上午去游泳,于是便速速又把屋子收拾了一下,发现了好多之前早就要扔掉,但是没有扔掉的事物。比如自己之前用完的洗发水空瓶子,某天夜晚吃烧烤顺便买的一瓶快乐水,好多月之前吃完的锅巴的盒子,以及平时擦桌子,擦鼻涕,擦污渍之类的纸巾,居然还在堆着。于是便把这些东西都扔掉了。
但是还是有一些其他的杂物的,比如之前洗干净的衣服;按照之前的习惯可能就是洗完了就放在外面一直晾着了,但是最近这天气属实是较差,时不时风雨大作,实属不想再打开阳台门了,于是在某一个雨夜,把衣服都收了进来,倒也没有怎么叠衣服,只是很粗略的放在了衣筐上面,已是许久都没有打理了,也不是很难收拾,大概是我实在是懒,也不想去收拾,于是就一直放着了。今天想到了这事情了,就把衣服都收拾了一下,叠好了,放在了衣柜里面,细细数数,倒确实是没事情了。
去了宿舍对面吃了沙县,一个鸭腿,两个豆干,就当是十点半的早饭了,之后便是骑车匆匆前往三公里外的游泳馆。
天冷了倒是没什么人了,倒也显得泳池很是开阔,只是这池子里面的水位却是下降了不少。
想来学会游泳是大一时候了,那也是五年前的 ...
使用GTF和fasta生成每个geneid对应最长的fasta序列
在进行单细胞测序的时候,我们通常最后得到的是 cell*geneid 的 matrix
文件,有时候我们需要 geneid 以及 geneid 对应的 fasta
序列数据,这就需要让我们做一些处理。
我们所需的文件是 gtf 文件和 基因组文件,需要使用的工具是 gffread
文件,这些大家都可以从官网进行下载。
以我们的数据为例,我们使用的是 GRCh38.p13.genome.fa
的数据,所以便是可以进行如下的代码分析
gffread gencode.v35.primary_assembly.annotation.gtf -g GRCh38.p13.genome.fa -w cds.fa --table @genename
在 cds.fa 数据中,我们就能得到 geneid 和 fasta
数据对应的文件,大概如下所示
head 5 cds.fa
>ENST00000456328.2 DDX11L1
GTTAACTTGCCGTCAGCCTTTTCTTTGACCTCTTCTTTCTGTTCATGTGTATTTGCTGTCTCTTAGCCCA
GACTTCC ...
杂聊8
以后尽量是可以做到每天的快乐生活当天记录下来,我的记忆会慢慢遗忘掉一些内容,记录下来或许能够让我减少遗忘。
今天是周日,所以又是我外出走走的日子,今天是和朋友们一起去西湖边的吴山景区附近走走,爬爬山。是要早起的,但是也并没起的很早,只得是草草吃了饭,甚至还是在等地铁的时候草草吃了两个饼,但是算得上给我提供能量了。
和朋友们约定好的集合地点是吴山广场,但我却稍稍有些迟到了,这是我的问题,只得是一路跟随着朋友们留下的脚印,知道江湖汇观亭,终于是和朋友们相会了,之后我们从汇观亭下山,到了烈士陵园附近,这里很安静,晨光照射下来的时候,人民英雄纪念碑染上了一层金光。
再往下走有一群恬淡的老人,他们在这里打太极,这就是杭州人民悠闲自得的养老生活吧,打打太极喝喝茶,每天都是悠闲乐。
穿过了他们之后,就来到了白蛇飞度,这里我还是第一次来,感觉这个造景倒是显得很柔适,很婉转,造景和自然融为一体。
过了白蛇飞度之后是梦幻森林,这里是路途中间的一个部分,在这里并没有过多的停留,马上就此离去,这里的树木之类的倒是称得上是说奇支趣木,倒也是第一次看得如此场景。
再之后便是一路直走,直到八 ...
scanpy多张图绘制于一张
当我们一次有多个数据,而且我们想要使用scanpy绘制umap图,或是spatial图的时候,大多数人一次只是绘制一个umap图或是一个spatial图在一个png或是一个pdf上面,对于我们可视化来说可能并没有那么轻便,于是需要做一些调整,借助于matplotlib的内参,让我们可以较为轻松的绘制多张图在一张图上面。代码比较容易理解,详细代码如下:
fig=plt.figure(figsize=(20,20))
for i in range(1,13):
temp = adata[adata.obs['slices']==str(i)]
# ax=fig.add_subplot(221)
csv = pd.read_csv('/data/work/04.Transfer/RCTD/Result/all_batch/1014/' + str(i) + '.csv',sep = ' ')
temp.obs['celltype'] = csv.first_type.tolist()
axs = fig.add_subplot(4, 3, i)
...
杂聊7
又是好久没有写博客了,应该还是写一写记录一下我的生活的,我的记忆感觉比以前差了很多,记录下来总归是好的事情,也许我还能再回顾一下,总觉得要把自己的博客捋的清晰一下,在生活的栏目里面要少讲一些科研或是正经的工作故事,这里就是纯粹的、枯燥的、无聊的、单调的我的生活故事。
就先从华大九九健康节讲一下吧。九九健康,大概是华大在每年九月九日时间点附近组织一些秋游活动,大都是令人感到快乐的户外郊游,我应该还是比较习惯到处走走的,尤其还是杭州这样子的湿地城市,在西湖景区里面到处都是可以走一走的,而且有很多的人文景观,我本身也是也是走过了很多次了。
徒步是这周五的事情了,其实是九月八号的事情,大概是八点到研究院楼下,然后乘着大巴到了九溪。九九徒步,从这里开始。
从九溪一直往里面走,很快就能走到九溪烟树,这还没到农历的八月份,但是已经有桂花的香味了,沿路也都是桂花香,有一些桂花树上面还有一些桂花,不过还是比较少的,大概是因为还没有到桂花的季节吧。沿路徒步大都是一些年轻情侣或是白发苍苍的老年情侣,这一带也确实是约会的好地方,恬静淡然,也无人吵闹,有山有水却就在市中心,这样的地方确实是很难得的。
...
使用空间转录组文件gem生成相应的灰度图
一般我们在进行圈细胞之前需要将基因在空间上的表达情况绘制出来,同时与拍照的TIF图片进行对应,在我的上篇博客里面用了一位师兄的代码,但是却发现其执行效率过于低下,经常一张芯片要运行四五个小时。故自己写了新的架构,将速度提升了数百倍。代码如下所示:
# import spateo as st
import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt
from scipy.sparse import csr_matrix
import numpy as np
import skimage
import cv2
'''
log setting
'''
import logging
log = logging.getLogger('Console')
log.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
formatter = log ...
如何在stomics平台使用spateo圈细胞
时空云平台(STOmics
Cloud)是以时空为特色的多组学数据分析平台,可以管理和分析多组学数据。
STOmics
Cloud以项目为核心,用户可快速将数据和工具整合到项目,实现分析过程可追溯,结果可复现,知识可分享,项目可协作,形成项目分析体系。并通过一个用户友好的门户,提供灵活易于使用的无代码标准和高级分析,高分辨率可视化分析,以及个性化的分析服务,任何注册登录的用户可以轻松在平台上访问,分析,使用和共享数据和工具。
总体来说,STOmics
平台是一个很出色的多组学的数据分析平台,但是仍然有一些不足,STOmics
在做数据分析的时候无法连接外部网络,如果说我们需要用到一些外部的模型或是其他资源的时候,则是会遇到十分大的阻碍,尤其是当我们调用
keras
的某些模型的时候,是需要进行联网下载的,那我们就需要对源码进行一些修改。
Spateo
利用 Stereo-seq 的超高空间分辨率、大视野和高 RNA
捕获灵敏度,通过核染色和基于 RNA
信号的细胞分割实现单细胞分辨率空间转录组学。Spateo
还提供了空间约束聚类的新方法,以识别连续的组织域, ...
how to run Spatial ID
before you start to run the program, you should make something
installed.
pip install torch==2.1.2+cpu torchvision==0.16.2+cpu torchaudio==2.1.2+cpu --index-url https://download.pytorch.org/whl/cpu
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-2.0.1+cpu.html
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-2.0.1+cpu.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-2.0.1+cpu.html
pip install torch-geometric==2.0
Before running, ...