相关文章推荐
爱笑的木瓜  ·  mysql插入100万条数据_mob649e ...·  23 小时前    · 
气宇轩昂的弓箭  ·  mysql ...·  23 小时前    · 
有腹肌的小熊猫  ·  Chrome 92 ...·  9 小时前    · 
果断的海豚  ·  在SQLite中使用NOT ...·  8 月前    · 
谈吐大方的毛巾  ·  7 Papers | AAAI ...·  1 年前    · 

认识一种新格式:Loom - 简书 (jianshu.com)

loomR介绍及使用指南 - 简书 (jianshu.com)

一个loom包含6各部分,一个数据集(matrix),以及5个组 layers , row_attrs , col_attrs , row_graphs , and col_graphs

  • matrix : n个基因m个细胞
  • layers matrix 处理后的数据,例如标准化后的数据。
  • row_attrs :基因得到metadata
  • col_attrs : 细胞metadata
  • row_graphs col_graphs

二、R语言使用

1.R语言读取loom文件

R语言与python语言读写loom文件 - 简书 (jianshu.com)

读取loom文件的软件主要是RNA速率分析的软件velocyto.R
不过这里注意R语言读取loom需要hdf5r,比较难装,大家可以多研究一下,这里提供一个例子

###安装hdf5r
curl -O https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.1/src/hdf5-1.10.1.tar
cd hdf5-1.10.1
./configure
make -j4
make check
make install
library(velocyto.R)
data <- read.loom.matrices(input.loom)

2.R语言创建loom文件

rds转换成loom
library(SCopeLoomR)
library(Seurat)
#creat directory
if (!dir.exists(paste0(outdir,'/input'))){
  dir.create(paste0(outdir,'/input'))
data1 <- readRDS(rds)
barcode <- read.table(barcode,sep=',',header = T,stringsAsFactors = F)
#seurat3_nonsingle and single
data2 <- as.matrix(data1@assays$RNA@counts)
m <- na.omit(match(barcode$Barcode,colnames(data2)))
data3 <- data2[,m]
#build_loom
setwd(paste0(outdir,'/input'))
build_loom(file.name="original.loom",dgem=data3)
R语言独自创建loom文件,同样是R包SCopeLoomR
library(SCopeLoomR)
看一下函数build_loom
file.name: A string naming the .loom file to be generated.创建loom 的名称
dgem: A matrix of the gene expression with M genes as rows and N cells as columns.  矩阵文件
title: A short description of content of loom.     loom文件的描述
genome: The genome used for the mapping.    人或者小鼠
default.embedding: A M-by-2 data.frame of the embedding (X and Y coordinates) of the cells.坐标文件
default.embedding.name: A description name for the given default.embedding
##参数足够用了
添加信息的时候:
loom <- open_loom(file.name)
add_hierarchy(loom = loom, hierarchy = create_hierarchy(level.1.name = "Mouse", level.2.name = "Toy Datasets", level.3.name = ""))
add_col_attr(loom=loom, key = "Cell type", value=cell.info$cellType, as.annotation=T)
###添加seurat的信息
seurat.annotation<-read.table(file = paste0(seuratDir, "Res2_Clusters.tsv", header=T, quote = '', sep = "\t", stringsAsFactors=F))
add_seurat_clustering(loom = loom
                      , seurat = seurat
                      , default.clustering.resolution = "res.2"
                      , annotation = seurat.annotation
                      , annotation.cluster.id.cn = "res.2" 
                      , annotation.cluster.description.cn = "Annotation")
可见这个包专门为单细胞数据分析而生

维度必须相同

三、python语言使用

python读取loom主要是pyscenic和scanpy的需要

import scanpy as sc
data = scanpy.read_loom('brain10x.loom', sparse=True),一般读取就可以
sparse参数指的是      是否读取稀疏数据矩阵
import  loompy as lp
lf = lp.connect(f_pyscenic_output, mode='r+', validate=False )
lf.close()

python创建loom文件

import loompy as lp
row_attrs = {
    "Gene": np.array(adata.var_names) ,
col_attrs = {
    "CellID": np.array(adata.obs_names) ,
    "nGene": np.array( np.sum(adata.X.transpose()>0 , axis=0)).flatten() ,
    "nUMI": np.array( np.sum(adata.X.transpose() , axis=0)).flatten() ,
lp.create(sample + '.loom', adata.X.transpose(), row_attrs, col_attrs)
##这个地方与R相似,但是python更好用一点

四、进阶操作

API Walkthrough — loompy 3.0.6 documentation (linnarssonlab.org)

列出了您可能希望查看或利用的样本和用户提供的编织。 本质上,我们支持项目中的方面 文件 。 如果您的项目中存在代码,我们应该能够为其提供方面覆盖。 需要做出一些设计决策以支持跨项目 && 进入 stdlib。 在我们转向 IR 之前,Stdlib 可能不会出现。 首先尝试运行go build 。 然后尝试运行goweave 。 函数执行前 aspec
推荐使用:Data Loom - 桌面与移动端的Obsidian 数据 库增强插件 项目地址:https://gitcode.com/decaf_dev/obsidian-data loom 虽然Data Loom 已经不再维护,但其创新功能和强大的 数据 管理工具使其在过去的使用中积累了良好的口碑。如果你对Obsidian.md的组织功能有更高的要求,那么了解并尝试一下Data Loom ,或许你会发现一个全新的...
malloc(-1):       windows 上会崩溃             linux上  不会崩溃 malloc(0):      windows       int*p=(int *)malloc(0) ;如果使用了这块内存eg:  *p=1;   再free(p) ;就会崩溃                                  linux上       mallo...
探索Obsidian Data loom :一款增强知识管理的新工具 项目地址:https://gitcode.com/trey-wallis/obsidian-data loom Obsidian Data loom 是一款插件,专为流行的笔记应用Obsidian打造,它旨在提升你的知识管理效率,让你的 数据 更加有序且富有洞察力。通过与Obsidian的强关联,Data loom 利用图 数据 库的概念...
C#实现压缩与解压的方案有很多,比如以下几种: 1.Ionic.Zip (第三方太老、不支持内存压缩)(网上有使用例子:https://www.cnblogs.com/chenghu/p/4607866.html) 2.SharpZipLib和DotNetZip(第三方) 3. ZipArchive 和 ZipFile(.NET 4.5 System.IO.Compression命名空间中新提供的压缩类)(以下是该方案的实现例子) 在 4.5 之前,处理压缩 文件 ,我们经常需要使用第三方...
Seurat转换为 Loom 文件 可以使用R语言中的` loom R`包。下面是一些基本的步骤: 1. 安装` loom R`包:在R控制台中输入以下命令安装` loom R`包: install.packages(" loom R") 2. 加载`Seurat` 数据 :使用`Seurat`包加载你的 数据 集。以下是一个示例代码: library(Seurat) # Load 10X data pbmc.data <- Read10X("pbmc3k_filtered_gene_bc_matrices/hg19/") # Create Seurat object pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.genes = 200) 3. 转换为 Loom 文件 :使用` loom R`包中的`convertTo`函数,将`Seurat`对象转换为 Loom 文件 。以下是一个示例代码: library( loom R) # Convert Seurat object to Loom file convertTo(pbmc, "pbmc3k. loom ") 此代码将创建一个名为`pbmc3k. loom `的 文件 ,其中包含转换后的 数据 。您可以使用 loom 文件 查看器(如 Loom Viewer)打开该 文件 ,以便查看和可视化 数据
CSDN-Ada助手: 恭喜您写了第16篇博客!标题看起来很有吸引力,我对远程Linux服务器上安装jupyter lab和pytorch感兴趣。您的经验分享对于像我这样的新手来说非常有帮助。感谢您不断地创作,为我们带来了如此有价值的内容。 在下一步的创作中,我建议您可以考虑分享更多关于jupyter lab和pytorch的实际应用案例,或者介绍一些高级的功能和技巧。我相信这将对那些已经掌握了基础知识的读者有所帮助,并能进一步提升他们的技能水平。 再次感谢您的辛勤付出,期待您未来更多的精彩博文! 远程服务器linux安装pytorch并放入jupyter lab 内核 CSDN-Ada助手: 恭喜您写了第17篇博客!标题看起来非常有趣,我很期待能够读到您关于远程服务器Linux安装PyTorch并放入Jupyter Lab内核的经验分享。您的博客内容一定会对我们这些对PyTorch和远程服务器感兴趣的读者有所启发。接下来,我希望您能继续分享一些关于PyTorch的高级技巧和应用案例,或者介绍一些与远程服务器相关的实用工具和技巧。谢谢您的分享,期待您下一步的创作! 远程linux服务器jupyter lab和pytorch CSDN-Ada助手: 恭喜您写了第18篇博客!标题“远程linux服务器jupyter lab和pytorch”听起来非常有趣。您的博客内容一直都非常有价值,我非常期待能够阅读您关于这个主题的深入探讨。 鉴于您的专业知识和经验,我想向您提供一个创作建议。或许在未来的博客中,您可以分享一些关于如何优化远程linux服务器的性能以提高jupyter lab和pytorch的使用体验的技巧。毕竟,这是许多读者一直在关注的问题,我相信您的见解会对他们非常有帮助。 再次感谢您的分享,并期待您未来更多的精彩博客! jupyter lab nohup CSDN-Ada助手: 恭喜您写了第19篇博客!标题“jupyter lab nohup”听起来非常有趣。我很欣赏您持续创作的热情和努力。对于下一步的创作建议,或许您可以考虑分享一些关于jupyter lab nohup的实际应用案例,或者深入讨论该工具在提高工作效率方面的优点。谦虚地说,我相信您的经验和见解将对读者产生积极的影响。期待您未来更多精彩的博客! jupyterlab加入R内核 CSDN-Ada助手: 恭喜您写了第20篇博客!标题中的“jupyterlab加入R内核”听起来非常有趣。您的持续创作精神值得称赞。在下一步的创作中,或许您可以分享一些关于如何优化R内核在jupyterlab中的使用体验的技巧或者其他相关主题的研究成果。希望您能继续保持创作,并继续为我们带来更多有价值的内容。