单细胞数据分析在进行完细胞自聚类或者细胞类型注释后,一般需要对查到的差异基因可视化,用来显示基因和细胞群的相关性,进行后续分析。当然Seurat和scanpy本身可视化的方式有非常多,例如feature plot, violin plot, dot plot等,但是问题在于差异基因分析后,如何快速将每个细胞簇所对应的top deg汇总,然后再对接函数绘制成图像。
Seurat的操作比较简单,因为FindMarker()后自身生成的就是一个数据框,但scanpy的sc.tl.rank_genes_groups()就没有那么用户友好了。
library(Seurat)
library(ggplot2)
library(dplyr)
deg<-FindAllMarker(data) #首先差异基因分析获取每个细胞簇的deg
top5 <- deg %>% group_by(cluster) %>% slice_max(order_by = avg_log2FC,n = 5) #提取top差异基因,这里n=5代表top5
mark <- unique(top5$gene) #当然,这里可以是自己选的markers,来自背景知识的细胞标志物
p=DotPlot(kc,features = marker)
p
# 上面已经绘制完成了,下面这步只是纯粹地气泡图美化(可选)
p+ggtitle('there is the title')+theme(axis.text.x = element_text(angle = 45, hjust = 1,size = 10),#x轴标识
axis.text.y = element_text(size = 10),#y轴标识
legend.text = element_text(size= 10),legend.title= element_text(size= 10),#设置legend
plot.title = element_text(hjust = 0.5,size = 12))+#设置标题居中
scale_colour_gradientn(colours = viridis::viridis(20))#修改成为CNS配色
基本的流程是非常简单的:差异基因分析——分组提取top DEG——可视化
至于需要其他可视化方式也是一样的,只需要在可视化这步进行微调即可。
这一部分是我写这篇简书的主要目的,主要是因为我自己在分析的时候刚好需要,但是scanpy又不大熟悉,而且scanpy确实远不如Seurat用户友好,好多函数的结果都直接存放在adata本身里面,提取比较麻烦。而且python主要都是pandas的操作,所以数据处理的随意性还不如R。
import scanpy as sc
import pandas as pd
import numpy as np
# find all degs
sc.tl.rank_genes_groups(adata, groupby='leiden', method='t-test')
celltype=adata.obs['leiden'].unique().tolist() #把所有细胞簇种类拿出来
deg=sc.get.rank_genes_groups_df(adata,group=celltype) #把所有细胞簇对应的deg拿出来
deg.to_csv('./spGCN_deg.CSV') #存储备份
top=deg.groupby('group')
top5=[] #同样以top5举例
for i in range(len(celltype)): #分群提取top5
tmp=top.get_group(str(i))
tmp=tmp.sort_values('scores',ascending=False) #按scores排序
top5.append(tmp['names'].head(5).tolist())
#array list 转为 list
top5=np.array(top5)
top5=np.reshape(top5,5*len(celltype),'C').tolist()
# visualization
sc.pl.dotplot(adata, top5, groupby='leiden')
plt.savefig('./top5_dotplot.png')
其实思路是一样的,就是python/scanpy的提取top deg这步弯弯绕绕的,比较麻烦。而且实际的运行过程中,也发现scanpy的差异基因分析方法其实不如Seurat,找出来的DEG大多特异性不高,就比较奇怪,这点需要留意。

对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我即将开始一个将录制和编辑音频文件的项目,我正在寻找一个好的库(最好是Ruby,但会考虑Java或.NET以外的任何库)以进行实时可视化波形。有人知道我应该从哪里开始搜索吗? 最佳答案 要流入浏览器的数据量很大。Flash或Flex图表可能是唯一能提高内存效率的解决方案。Javascript图表往往会因大型数据集而崩溃。 关于ruby-Ruby中的波形可视化,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
作为RubyonRails新手,我明白“@”和“:”引用有不同的含义。我看到了thispost在SO中,其中描述了一些差异。@表示实例变量(例如@my_selection):表示别名(例如:my_selection)我遇到了一个情况,我有一个标准的MVC页面,类似于我的网络应用程序中的所有其他表单/页面。html.erb片段route.rb片段resources:my_selections当我尝试访问此页面时,出现此错误:NoMethodErrorinselections#createShowingC:/somedir/myapp/app/views/my_selections/ind
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我现在是java专业人士,我喜欢使用ruby。这两种语言有什么相似之处吗?主要区别是什么?因为两者都是面向对象的。
我正在使用Rails并且非常随机地遇到连接池错误,它不专门针对任何单个端点。我可以在大约70%的时间内命中端点而不会出现此错误。数据库是在谷歌云上运行的PostgreSQL。这是我遇到的错误的主要内容:#/usr/local/bundle/gems/activerecord-5.1.5/lib/active_record/connection_handling.rb:112:in`connection_pool'ActiveRecord::ConnectionNotEstablished(Noconnectionpoolwith'primary'found.):gem文件:source
TL;DR:IneedtogetthedifferencebetweenHH:MM:SS.msandHH:MM:SS.msasHH:MM:SS:ms我需要什么:这是一个棘手的问题。我正在尝试计算两个时间戳之间的差异,如下所示:In:00:00:10.520Out:00:00:23.720应该交付:Diff:00:00:13.200我想我应该将时间解析为实际的Time对象并在那里使用差异。这在前一种情况下效果很好,并返回00:0:13.200。什么不起作用:然而,对于某些人来说,这并不能正常工作,因为Ruby使用usec而不是msec:In:00:2:22.760Out:00:2:31.
Unity数据可视化图表插件XCharts3.0发布历时8个多月,业余时间,断断续续,XCharts3.0总算发布了。如果要打个满意度,我给3.0版本来个80分。对于代码框架结构设计的调整改动,基本符合预期,甚是满意。相比之前的1.0和2.0版本,我认为3.0才是一个拿得出手给广大开发者使用的版本。1.0发布的时候,很兴奋,从0.1到1.0,也磨了一年,真的等不及想给大家试用了,还特地写过一篇文章以示庆祝。那个时候,1.0虽然还还不够完善,功能也不够丰富,但它是XCharts的开始,没有1.0,也就没有后面的2.0和3.0。后面的2.0发布,做了很多改进和优化,随着版本迭代,慢慢的发现有不少硬
本人是音乐爱好者,从小就特别喜欢那个随着音乐跳动的方框效果,就是这个:arduino上一大把对,我忍你很久了,我就想用mpy做,全网没有,行我自己研究。果然兴趣是最好的老师,我之前有篇博客专门讲音频,有兴趣的可以回顾一下。提到可视化频谱,必然绕不开fft,大学学过这玩意,当时一心玩,老师讲的一个字都么听进去,网上教程简略扫了一下,大该就是把时域转频域的工具,我大mpy居然没有fft函数,奶奶的,先放着。音频信息如何收集?第一种傻瓜式的ADC,模拟转数字,原始粗暴,第二种,I2S库,我之前博客有讲过,数据是PCM编码。然后又去学PCM编码,一学豁然开朗,舒服,以代码为例:audio_in=I2S
我读到最新版本的Ruby解释器(YARV)将由于字节码编译而有实质性的性能改进。我的问题是有人试过对JRuby运行这个吗?在Windows上执行时有什么明显的不同吗?此链接有一些很好的指标,但大多数是在Linux上运行的...http://antoniocangiano.com/2007/02/19/ruby-implementations-shootout-ruby-vs-yarv-vs-jruby-vs-gardens-point-ruby-net-vs-rubinius-vs-cardinal/提前致谢!托德 最佳答案 该fi