手动解压并读取geo 文件 series_matrix_table_begin series_matrix_table_end之间的数据

手动解压并读取geo 文件 series_matrix_table_begin series_matrix_table_end之间的数据

1. 手动解压并读取文件内容

file_path <- “K:/download/geo/raw_data/GEO/GSE32967_series_matrix.txt.gz”

使用latin1编码读取文件所有行

con <- gzfile(file_path, “r”)
all_lines <- readLines(con, encoding = “ISO-8859-1”) # 明确指定编码
close(con)

2. 查找数据开始和结束的位置

start_line <- grep(“^!series_matrix_table_begin”, all_lines) + 1
end_line <- grep(“^!series_matrix_table_end”, all_lines) - 1

3. 提取表达矩阵数据部分

data_lines <- all_lines[start_line:end_line]

4. 将数据写入临时文件

temp_file <- “temp_geo_data.txt”
writeLines(data_lines, temp_file)

5. 读取表达矩阵

expr_matrix <- read.delim(temp_file, sep = “\t”, check.names = FALSE,
stringsAsFactors = FALSE)

6. 提取样本信息(从注释行中)

sample_info_lines <- all_lines[grep(“^!Sample_”, all_lines)]

处理样本信息

sample_info <- data.frame()
for (line in sample_info_lines) {

分割每行的标签和值

parts <- strsplit(line, “\t”)[[1]]
key <- sub(“^!Sample_”, “”, parts[1])

提取样本值

values <- parts[-1]

添加到数据框

if (nrow(sample_info) == 0) {
sample_info <- data.frame(matrix(values, nrow = 1))
colnames(sample_info) <- values
} else {
sample_info[key, ] <- values
}
}

转置样本信息,使样本为行,信息为列

sample_info <- as.data.frame(t(sample_info))
colnames(sample_info) <- sub(“^!Sample_”, “”,
sapply(strsplit(sample_info_lines, “\t”), “[[”, 1))

7. 清理临时文件

file.remove(temp_file)

8. 查看结果

cat(“表达矩阵维度:”, dim(expr_matrix), “\n”)
cat(“样本信息维度:”, dim(sample_info), “\n”)

9. 保存处理后的数据

saveRDS(expr_matrix, “processed_data/GSE32967_expr_matrix.rds”)
saveRDS(sample_info, “processed_data/GSE32967_sample_info.rds”)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98984.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主板硬件研发基础--DP/DP++

现在的主板大多数使用的是比DP功能更加强大的DP++。 DisplayPort++(DP++)是 DisplayPort 技术的增强版,旨在提升与多种视频接口的兼容性和连接性能。以下是关于它的详细介绍: 功能特性 多协议兼容:DP++ 接口不仅支持 DisplayPort 标准的信号传输,还可以通过内部的转换电…

科技行业新闻发布平台哪家好?多场景推广专业方案服务商推荐

面对海量得新闻发布平台和碎片化的传播场景&#xff0c;如何精准选择推广方案无疑是企业主面临的一大难题&#xff0c;对于技术迭代迅速的科技行业更是如此。针对复杂的市场环境&#xff0c;一些专业的新闻发布平台往往能够针对性地给出营销方案&#xff0c;并提供一定技术支持…

SystemVerilog 学习之SystemVerilog简介

SystemVerilog简介SystemVerilog是一种硬件描述和验证语言&#xff08;HDVL&#xff09;&#xff0c;由Accellera开发并于2005年成为IEEE标准&#xff08;IEEE 1800&#xff09;。它在传统Verilog基础上扩展了高级验证和设计功能&#xff0c;广泛应用于数字电路设计、验证及系统…

JavaWeb--day3--AjaxElement路由打包部署

&#xff08;以下内容全部来自上述课程及课件&#xff09; Ajax &#xff08;此章节纯粹演示&#xff0c;因服务器端url链接失效&#xff0c;所以无法实战&#xff09; 1. 同步与异步 同步&#xff1a; 浏览器页面在发送请求给服务器&#xff0c;在服务器处理请求的过程…

IMF GDP的bug

IMF GDP 数据底子是官方数字&#xff0c;基本是沿用官方的&#xff0c;虽然经过修订或估算&#xff0c;存在4大“bug”&#xff1a;1. 依赖官方上报&#xff0c;真实性不保证2. PPP GDP 虚高&#xff0c;居民实际消费力低很多ppp gdp高&#xff0c;甚至gdp高的地方&#xff0c;…

第2篇:数据持久化实战

在上一篇中&#xff0c;我们构建了一个基于内存存储的食谱助手。说实话&#xff0c;内存存储虽然简单&#xff0c;但有个致命问题&#xff1a;程序一重启&#xff0c;数据就全没了。 所以这篇我们要解决数据持久化的问题&#xff0c;将食谱助手从内存存储升级到SQLite数据库。 …

Java推荐系统与机器学习实战案例

基于Java的推荐系统与机器学习实例 以下是一些基于Java的推荐系统与机器学习实例的参考方向及开源项目,涵盖协同过滤、矩阵分解、深度学习等常见方法。内容根据实际项目和技术文档整理,可直接用于学习或开发。 协同过滤实现 用户-物品评分预测 使用Apache Mahout的基于用户…

AI生成内容检测的综合方法论与技术路径

一、AI内容检测技术的分类与原理当前AI内容检测技术主要分为四大类&#xff0c;每类都有其独特的原理和应用场景&#xff1a;1. 基于语言特征分析的检测方法这类方法通过挖掘人类写作与AI生成文本之间的统计学差异进行判断&#xff1a;1.1 词汇使用模式分析AI生成的文本在词汇选…

可可图片编辑 HarmonyOS(5)滤镜效果

可可图片编辑 HarmonyOS&#xff08;5&#xff09;滤镜效果 前言 可可图片编辑也实现了滤镜效果&#xff0c;主要是利用 Image组件的 colorFilter 属性实现。滤镜的关键属性 colorFilter colorFilter 的主要作用是给图像设置颜色滤镜效果。 其核心原理是使用一个 4x5 的颜色矩阵…

< JS事件循环系列【二】> 微任务深度解析:从本质到实战避坑

在上一篇关于 JS 事件循环的文章中&#xff0c;我们提到 “微任务优先级高于宏任务” 这一核心结论&#xff0c;但对于微任务本身的细节并未展开。作为事件循环中 “优先级最高的异步任务”&#xff0c;微任务的执行机制直接影响代码逻辑的正确性&#xff0c;比如Promise.then的…

STM32 单片机开发 - SPI 总线

一、SPI 总线概念SPI 总线 --- Serial Peripheral Interface&#xff0c;即串行外设接口SPI 是摩托罗拉公司设计的一款 串行、同步、全双工总线&#xff1b;SPI 总线是三线 / 四线制总线&#xff0c;分别是&#xff1a;SPI_SCK&#xff08;时钟线&#xff09;、S…

区域医院云HIS系统源码,云医院管理系统源码,云诊所源码

云HIS源码&#xff0c;云医院管理系统源码&#xff0c;云诊所源码&#xff0c;二级专科医院云HIS系统源代码&#xff0c;有演示云HIS&#xff0c;即云医院管理系统&#xff0c;是一种运用云计算、大数据、物联网等新兴信息技术的医疗信息化解决方案。它重新定义了传统的医院信息…

Java基础 9.11

1.第三代日期类前面两代日期类的不足分析JDK 1.0中包含了一个java.uti.Date类&#xff0c;但是它的大多数方法已经在JDK1.1引Calendar类之后被弃用了。而Calendar也存在问题是&#xff1a;可变性&#xff1a;像日期和时间这样的类应该是不可变的偏移性&#xff1a;Date中的年份…

JavaScript 数组过滤方法

在 JavaScript 编程中&#xff0c;数组是最常用的数据结构之一&#xff0c;而数组过滤则是处理数据集合的关键操作。filter() 方法提供了一种高效的方式来从数组中筛选出符合特定条件的元素&#xff0c;返回一个新的数组&#xff0c;而不改变原始数组。这种方法在处理对象数组时…

《sklearn机器学习——数据预处理》离散化

sklearn 数据预处理中的离散化&#xff08;Discretization&#xff09; 离散化是将连续型数值特征转换为离散区间&#xff08;分箱/bins&#xff09;的过程&#xff0c;常用于简化模型、增强鲁棒性、处理非线性关系或满足某些算法对离散输入的要求&#xff08;如朴素贝叶斯、决…

PTA算法简析

ArkAnalyzer源码初步分析I&#xff1a;https://blog.csdn.net/2302_80118884/article/details/151627341?spm1001.2014.3001.5501 首先&#xff0c;我们必须明确 PTA 的核心工作&#xff1a;它不再关心变量的“声明类型”&#xff0c;而是为程序中的每一个变量和每一个对象字段…

Vue 3 中监听多个数据变化的几种方法

1. 使用 watch监听多个 ref/reactive 数据import { ref, watch } from vueexport default {setup() {const count ref(0)const name ref()const user reactive({ age: 20 })// 监听多个数据源watch([count, name, () > user.age], // 数组形式传入多个数据源([newCount, …

第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑

用 IntelliJ IDEA 写第一个 Java 8 程序&#xff1a;Hello World 实操指南 作为 Java 初学者&#xff0c;“Hello World” 是你接触这门语言的第一个里程碑。本文会聚焦 Java 8&#xff08;经典 LTS 版本&#xff0c;企业级开发常用&#xff09; 和 IntelliJ IDEA&#xff08;当…

【GPT入门】第67课 多模态模型实践: 本地部署文生视频模型和图片推理模型

【GPT入门】第67课 多模态模型实践&#xff1a; 本地部署文生视频模型和图片推理模型1. 文生视频模型CogVideoX-5b 本地部署1.1 模型介绍1.2 环境安装1.3 模型下载1.4 测试2.ollama部署图片推理模型 llama3.2-vision2.1 模型介绍2.2 安装ollama2.3 下载模型2.4 测试模型2.5 测试…

C++初阶(6)类和对象(下)

1. 再谈构造函数&#xff08;构造函数的2个深入使用技巧&#xff09; 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;…