当前位置: 首页 > news >正文

biocParallel学习

我好像做了一个愚蠢的测试

rm(list=ls())
suppressPackageStartupMessages({library(SingleCellExperiment)library(scMerge)library(scater)library(Matrix)
})setwd("/Users/yxk/Desktop/test/R_parallel/")
load("./data/exprsMat.RData")
load("./data/clust.RData")
load("./data/pseudobulk_sample_list.RData")
load("./data/pseudobulk_sample.RData")
load("./data/use_bpparm.RData")
load("./data/res.RData")#' @importFrom ruv replicate.matrix
#' @importFrom methods as isaggregate.Matrix <- function(x, groupings=NULL) {if (!methods::is(x,'Matrix')) {x <- methods::as(as.matrix(x), "CsparseMatrix")}groupings2 <- paste("A", groupings, sep = "")if (length(unique(groupings2)) > 1) {mapping <- methods::as(ruv::replicate.matrix(groupings2), "CsparseMatrix")colnames(mapping) <- substring(colnames(mapping), 2)mapping <- mapping[, levels(factor(groupings))]} else {mapping <- methods::as(matrix(rep(1, length(groupings2)), ncol = 1), "CsparseMatrix")colnames(mapping) <- unique(groupings)}result <- t(mapping) %*% xreturn(result)
}create_pseudoBulk_parallel = function (exprsMat, cell_info, k_fold = 30, use_bpparam = BiocParallel::SerialParam()) 
{#browser()k_fold <- min(ncol(exprsMat), k_fold)cv <- cvTools::cvFolds(ncol(exprsMat), K = k_fold)exprsMat_pseudo <- BiocParallel::bplapply(seq_len(k_fold), function(i) {subset_idx <- cv$subsets[cv$which == i]cellType_tab <- table(droplevels(factor(cell_info[subset_idx])))cellTypes_n_mat <- matrix(rep(cellType_tab, nrow(exprsMat)), nrow = length(cellType_tab), byrow = FALSE)rownames(cellTypes_n_mat) <- names(cellType_tab)res <- aggregate.Matrix(t(exprsMat[, subset_idx]), cell_info[subset_idx])cellTypes_n_mat <- cellTypes_n_mat[rownames(res), ]res <- res/cellTypes_n_matrownames(res) <- paste(rownames(res), i, sep = "_")res}, BPPARAM = use_bpparam)exprsMat_pseudo <- do.call(rbind, exprsMat_pseudo)return(exprsMat_pseudo)
}create_pseudoBulk_no = function (exprsMat, cell_info, k_fold = 30) 
{#browser()k_fold <- min(ncol(exprsMat), k_fold)cv <- cvTools::cvFolds(ncol(exprsMat), K = k_fold)exprsMat_pseudo =list()for (i in seq_len(k_fold)){subset_idx <- cv$subsets[cv$which == i]cellType_tab <- table(droplevels(factor(cell_info[subset_idx])))cellTypes_n_mat <- matrix(rep(cellType_tab, nrow(exprsMat)), nrow = length(cellType_tab), byrow = FALSE)rownames(cellTypes_n_mat) <- names(cellType_tab)res <- aggregate.Matrix(t(exprsMat[, subset_idx]), cell_info[subset_idx])cellTypes_n_mat <- cellTypes_n_mat[rownames(res), ]res <- res/cellTypes_n_matrownames(res) <- paste(rownames(res), i, sep = "_")exprsMat_pseudo[[i]] = res}exprsMat_pseudo <- do.call(rbind, exprsMat_pseudo)return(exprsMat_pseudo)
}set.seed(1)
i =1
res1 <- create_pseudoBulk_parallel(exprsMat[, pseudobulk_sample ==pseudobulk_sample_list[i]], clust[[i]], k_fold = 30,use_bpparam = use_bpparam)set.seed(1)
i =1
res2 <- create_pseudoBulk_no(exprsMat[, pseudobulk_sample ==pseudobulk_sample_list[i]],clust[[i]], k_fold = 30)print("done")# for (i in seq_along(pseudobulk_sample_list)) {
#     res <- create_pseudoBulk_parallel(exprsMat[, pseudobulk_sample == 
#                                         pseudobulk_sample_list[i]], clust[[i]], k_fold = 30, 
#                              use_bpparam = use_bpparam)
# }

在这里插入图片描述

首先注意一个随机种子的问题,否则这个结果就会不一样

相关文章:

biocParallel学习

我好像做了一个愚蠢的测试 rm(listls()) suppressPackageStartupMessages({library(SingleCellExperiment)library(scMerge)library(scater)library(Matrix) })setwd("/Users/yxk/Desktop/test/R_parallel/") load("./data/exprsMat.RData") load(".…...

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(六):一个AWTK工程

一个AWTK工程基于C/C++编写,可以分为如下几步: 结合下图,看懂启动的部分。一般一个AWTK工程,需要实现哪些部分,就是其中开始之后白色的部分,比如调用main函数和gui_app_start时会做一些操作,比如asset_init和application_init时要做一些设置,还有退出的函数application…...

MySQL主从复制(基于binlog日志方式)

目录 一、什么是主从复制&#xff1f;二、主从复制原理、存在问题和解决方法2.1.主从复制原理2.2.主从复制存在的问题以及解决办法2.3.主从复制的同步模型2.4.拓展—Mysql并行复制 三、主从复制之基于binlog日志方式3.1.bin-log日志简介3.2.bin-log的使用3.2.1.开启binlog3.2.2…...

计算机网络【CN】介质访问控制

信道划分介质访问控制 FDMTDMWDMCDM【掌握eg即可】 随机介质访问控制 CSMA 1-坚持CSMA 非坚持CSMA p-坚持CSMA 空闲时 立即发送数据 立即发送数据 以概率P发送数据&#xff0c;以概率1-p推迟到下一个时隙 忙碌时 继续坚持侦听 放弃侦听&#xff0c;等待一个随机的时…...

CDR和AI哪个软件更好用?

设计软件市场中&#xff0c;CorelDRAW和Adobe Illustrator&#xff08;简称AI&#xff09;无疑是两大重量级选手。它们各自拥有庞大的用户群和丰富的功能&#xff0c;但究竟哪一个更好用&#xff1f;本文将从多个角度出发&#xff0c;对这两款软件进行全面而深入的比较&#xf…...

保姆级认识AVL树【C++】(精讲:AVL Insert)

目录 前言 一&#xff0c;概念 二&#xff0c;定义 三&#xff0c;insert 1. 插入情况 情况一&#xff1a; 情况二&#xff1a; 情况三&#xff1a; 2. 旋转方法 法一&#xff1a;左单旋法 法二&#xff1a;右单旋法 法三&#xff1a;先左后右双旋法 法四&#xf…...

pinia中使用reactive声明变量,子页面使用时,值未改变,即不是响应式的(解决方法)

reactive赋值无效&#xff01;reactive 不要直接data赋值&#xff01;&#xff01;&#xff01;会丢失响应式的&#xff0c;只能通过obj.属性 属性值赋值 方法一. pinia中直接使用ref定义变量即可 export const useUserStoredefineStore(user,()>{let loginUserreactive({…...

基于springboot零食商城管理系统

功能如图所示 摘要 这基于Spring Boot的零食商城管理系统提供了强大的购物车和订单管理功能。用户可以在系统中浏览零食产品&#xff0c;并将它们添加到购物车中。购物车可以保存用户的选购商品&#xff0c;允许随时查看已选择的商品和它们的数量。一旦用户满意&#xff0c;他们…...

C++程序练习

定义一个类CheckPath&#xff0c;它由两个public方法组成&#xff1a; 1&#xff09; checkPath&#xff1a;检查传入的字符串指定的路径是否存在&#xff0c;存在返回true&#xff0c;否则返回false。 2&#xff09; createFilePath&#xff1a;根据传入的字符串指定的路径&…...

Golang 继承

在面向对象的编程语言中&#xff0c;继承是一种重要的机制&#xff0c;它允许子类继承父类的属性和方法。然而&#xff0c;Go语言在设计时没有直接支持传统意义上的继承&#xff0c;而是提供了一种更为灵活和简洁的方式来实现类似的功能。本文将探讨Golang中实现继承的方法和最…...

棋盘格测距-单目相机(OpenCV/C++)

一、文章内容简述&#xff1a; 1’ 通过cv::findChessboardCorners寻找棋盘格角点 2‘ 用cv::solvePnP计算旋转向量rvec和平移向量tvec 3’ 通过公式计算相机到棋盘格的距离 float distance sqrt(tvec.at<double>(0,0) * tvec.at<double>(0,0) tvec.at<do…...

031-从零搭建微服务-监控中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…...

vue中使用xlsx插件导出多sheet excel实现方法

安装xlsx&#xff0c;一定要注意版本&#xff1a; npm i xlsx0.17.0 -S package.json&#xff1a; {"name": "hello-world","version": "0.1.0","private": true,"scripts": {"serve": "vue-c…...

Linux - 进程的优先级 和 如何使用优先级调度进程

理解linux 当中如何做到 把一个PCB 放到多个 数据结构当中 在Linux 当中&#xff0c;一个进程的 PCB 不会仅仅值存在一个 数据结构当中&#xff0c;他既可以在 某一个队列当中&#xff0c;又可以在 一个 多叉树当中。 队列比如 cpu 的 运行队列&#xff0c;键盘的阻塞队列等等…...

支持控件drag和click

在 MouseDown 事件触发 DoDragDrop 拖拽操作时&#xff0c;Click 事件通常无效&#xff0c;因为 DoDragDrop 方法会捕获鼠标事件并等待拖拽操作完成。 有一个简单地思路解决这个问题 当MouseDow时&#xff0c;触发定时器&#xff0c;延迟100s定时器到时后&#xff0c;进入dra…...

AIR101 LuatOS LVGL 显示多个标签例程

屏幕资料 AIR101与屏幕连接 PC端仿真环境合宙官方PC端版本环境搭建教程 PC电脑仿真 -- sys库是标配 _G.sys require("sys") sys.taskInit(function()local cnt0lvgl.init(480,320)--lvgl初始化local cont lvgl.cont_create(nil, nil);-- lvgl.cont_set_fit(cont, …...

Istio实战(七)- Bookinfo 部署

1. Istio Bookinfo示例 1.1 部署Bookinfo # kubectl apply -f /apps/istio/samples/bookinfo/platform/kube/bookinfo.yaml -n hr1.2 确认Bookinfo已经部署正常 先确认以下pod和service已经被正确创建 # kubectl get pods -n hr NAME READY …...

出差学小白知识No5:|Ubuntu上关联GitLab账号并下载项目(ssh key配置)

1 注冊自己的gitlab账户 有手就行 2 ubuntu安装git &#xff0c;并查看版本 sudo apt-get install git git --version 3 vim ~/.ssh/config Host gitlab.example.com User your_username Port 22 IdentityFile ~/.ssh/id_rsa PreferredAuthentications publickey 替换gitl…...

FL Studio21.2中文版多少钱?值得下载吗

水果&#xff0c;全称Fruity Loop Studio&#xff0c;简称FL Studio。是一款全能的音乐制作软件&#xff0c;经过二十多年的演化更迭&#xff0c;其各项功能非常的先进。其开创性的Pat\song模式&#xff0c;也为初学者的学习提供了便利。那么水果音乐制作软件需要多少钱呢&…...

软考系统架构师知识点集锦三:软件架构设计

一、考情分析 二、考点精讲 2.1软件架构的概念 2.1.1什么是架构(暂无定论) 架构设计就是需求分配&#xff0c;即将满足需求的职责分配到组件上。 软件架构风格是描述某-特定应用领域中系统组织方式的惯用模式。架构风格定义-个系统家族,即一个体系结构定义一个词汇表和一组约…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...