834. 开放科学与数据共享¶
一句话概述:开放科学要求数据、代码、流程公开可重复——生信工程师需掌握FAIR原则和主流数据库提交流程。
核心知识点速查表¶
| 概念 | 说明 |
|---|---|
| FAIR原则 | Findable可发现、Accessible可访问、Interoperable可互操作、Reusable可重用 |
| 开放获取(OA) | 论文免费公开阅读 |
| 预印本 | bioRxiv/medRxiv,论文未经同行评审即发布 |
| 数据仓库 | NCBI SRA、EBI ENA、DDBJ、GSA |
| 代码仓库 | GitHub、GitLab、Zenodo |
| 可重复性 | Docker+Nextflow+DVC确保分析可重现 |
一、FAIR原则详解¶
F - Findable (可发现)
→ 数据有唯一标识符(DOI、accession number)
→ 元数据丰富且可搜索
→ 注册到可搜索的数据库中
A - Accessible (可访问)
→ 通过标准协议可获取(HTTP、FTP)
→ 元数据即使数据本身不可用也应保持可访问
→ 必要时可设置受控访问
I - Interoperable (可互操作)
→ 使用标准格式(FASTQ、BAM、VCF)
→ 使用标准化的术语和本体(GO、KEGG)
→ 包含对其他数据的引用
R - Reusable (可重用)
→ 附带清晰的使用许可证
→ 详细描述数据来源和处理方法
→ 符合领域标准
二、主流生信数据库提交指南¶
2.1 NCBI提交流程¶
# NCBI数据提交架构
# BioProject → BioSample → SRA (测序数据)
# → GEO (表达数据)
# → GenBank (基因组序列)
# 步骤1:创建BioProject
# 登录 https://submit.ncbi.nlm.nih.gov/
# 填写项目标题、描述、组织等信息
# 获得 PRJNA开头的项目编号
# 步骤2:创建BioSample
# 填写样本元数据(物种、组织、处理条件等)
# 获得 SAMN开头的样本编号
# 步骤3:提交测序数据到SRA
# 方法1:网页上传(小数据量)
# 方法2:Aspera命令行上传(大数据量)
ascp -i ~/.aspera/aspera.openssh \ # Aspera密钥
-QT -l 300m -k 1 \ # 传输参数
-d data/ \ # 上传目录
subasp@upload.ncbi.nlm.nih.gov:uploads/your_key/ # 目标
# 步骤4:获得登录号
# SRR开头(run)、SRX开头(experiment)
# 论文中引用:数据已提交NCBI SRA (PRJNA123456)
2.2 中国GSA提交¶
# 国家基因组科学数据中心 GSA
# https://ngdc.cncb.ac.cn/gsa/
# 提交流程:
# 1. 注册NGDC账号
# 2. 创建项目(BioProject) → 获得PRJCA编号
# 3. 创建样本(BioSample) → 获得SAMC编号
# 4. 上传数据 → 获得CRA/CRR编号
# 命令行上传(大数据)
aspera connect上传 或 FTP上传
三、代码与流程共享¶
# 1. GitHub + Zenodo 组合(代码获得DOI)
# GitHub上传代码 → 关联Zenodo → 自动生成DOI
# 论文中引用:代码可获取于 https://github.com/xxx (DOI: 10.5281/zenodo.xxx)
# 2. 项目结构标准化
my_published_analysis/
├── README.md # 项目说明
├── LICENSE # 许可证(推荐MIT或GPL)
├── environment.yml # conda环境定义
├── Dockerfile # Docker容器定义
├── Snakefile # 分析流程
├── config/
│ └── config.yaml # 配置文件
├── scripts/
│ ├── 01_qc.sh # 质控脚本
│ ├── 02_align.sh # 比对脚本
│ └── 03_analysis.R # 分析脚本
├── data/
│ └── README.md # 数据获取说明(不上传原始数据)
└── results/
└── figures/ # 论文图表
# 3. 最小可重复示例
# README.md中包含:
# - 系统要求
# - 安装步骤
# - 快速运行命令(demo数据)
# - 完整运行命令
# 代码可重复性最佳实践
import random # 导入随机模块
import numpy as np # 导入numpy
# 设置随机种子(确保结果可重复!)
SEED = 42 # 固定随机种子
random.seed(SEED) # Python随机种子
np.random.seed(SEED) # numpy随机种子
# 记录软件版本
import pkg_resources # 包版本查询
for pkg in ['numpy', 'pandas', 'scikit-learn']:
version = pkg_resources.get_distribution(pkg).version
print(f"{pkg}: {version}") # 打印各包版本
四、开放获取出版¶
# 期刊类型对比
传统订阅期刊:读者付费 → Nature、Cell、Science
金色OA:作者付费APC → Nature Communications、PLOS ONE
绿色OA:作者自存档 → 投稿到传统期刊+上传预印本
钻石OA:免费发表+免费阅读 → eLife、Genome Biology(部分)
# 预印本服务器
bioRxiv:生物学预印本(最常用)
medRxiv:医学预印本
arXiv:计算/数学/物理预印本
# 预印本优势
→ 即时公开(不等审稿6个月)
→ 建立优先权
→ 获得社区反馈
→ 面试时可引用(展示在研工作)
五、面试高频问题¶
Q: 什么是FAIR原则? A: 数据管理的四大原则——Findable(可发现,有DOI)、Accessible(可访问,标准协议)、Interoperable(可互操作,标准格式)、Reusable(可重用,有许可证和完整描述)。
Q: 你的分析流程怎么让别人重现? A: 三层保障:conda/Docker管软件环境,Snakemake/Nextflow管分析流程,DVC管数据版本。代码上GitHub,数据提交SRA/GSA。
Q: 你投稿的数据提交到哪? A: 测序数据提交NCBI SRA或GSA(中国数据),代码上GitHub并关联Zenodo获得DOI。
常见问题与解决¶
| 问题 | 解决 |
|---|---|
| NCBI SRA提交审核太慢 | 提前提交,论文接收前就开始 |
| 数据量太大上传失败 | 用Aspera替代HTTP/FTP上传 |
| 审稿人要求公开代码 | 提前整理GitHub仓库并关联Zenodo |
| 不知道选什么许可证 | 代码用MIT,数据用CC-BY 4.0 |
速查表¶
# 数据提交数据库
测序数据(原始): NCBI SRA / EBI ENA / GSA
表达数据(矩阵): NCBI GEO / ArrayExpress
基因组序列: GenBank / DDBJ / EMBL
蛋白质结构: PDB / AlphaFold DB
代谢组数据: MetaboLights / GNPS
# 代码共享
代码: GitHub/GitLab + Zenodo(DOI)
环境: conda environment.yml + Dockerfile
流程: Snakefile / main.nf
# 许可证选择
MIT: 最宽松(商业可用)
GPL: 开源传染(衍生作品也必须开源)
CC-BY: 数据/文档(需署名)
CC0: 数据(放弃所有权利,公共领域)