数据管道揭秘:Snakemake如何批量调度5个CMIP6数据集的下载与重网格化
数据管道揭秘Snakemake如何批量调度5个CMIP6数据集的下载与重网格化【免费下载链接】ClimaXFoundation model for weather climate项目地址: https://gitcode.com/gh_mirrors/cli/ClimaX想用气候大模型做研究第一步往往不是跑模型而是和数据死磕几十个CMIP6数据集、跨越165年的逐6小时文件、动辄上百GB的体积……手动一个个下载再重网格化几乎是不可能完成的任务。今天这篇文章就带新手和普通用户走进ClimaX开源项目背后的CMIP6数据下载与重网格化数据管道看看它是如何用Snakemake工作流引擎一键批量调度5个CMIP6模式数据集AWI-ESM、CMCC、HAMMOZ、MPI-ESM、TaiESM1完成从原始NetCDF下载到统一分辨率重网格化的全流程。为什么要做CMIP6数据预处理管道CMIP6第六次耦合模式比较计划是全球气候研究的基础数据源但它有个老毛病每个模式的网格分辨率、经纬度定义、变量命名都不一样。AWI-ESM-1-1-LR 的 2 米气温叫tasERA5 里叫t2mCMCC-CM2-HR4 的气温叫taClimaX 里叫tMPI-ESM1-2-HR 的位势高度叫zg重网格化后要换算成z并乘上重力加速度。如果直接把这些五花八门的数据喂给模型训练必然失败。所以需要一条可复现的数据预处理管道先按模式分别下载再统一重网格化到同一分辨率如 1.40625°最后重命名变量对齐 ERA5 规范。ClimaX 项目把这条管道做成了声明式的 Snakemake 工作流配置即数据一条命令跑完全部 5 个数据集。5个CMIP6数据集一份配置一个模式 在snakemake_configs/目录下每个模式都有独立的文件夹里面是一个Snakefile加若干份 YAML 配置。先看配置长什么样——以 MPI-ESM 的位势高度配置 为例datadir: /data/CMIP6/MPI-ESM server_prefix: http://esgf-data1.llnl.gov/thredds/fileServer/css03_data/CMIP6/CMIP name: geopotential cmip_name: zg era_name: z output_type: 6hrPlevPt run: r1i1p1f1 version: v20190815 res: - 1.40625这份配置就是数据管道的大脑cmip_name告诉管道去 ESGF 服务器上找哪个变量era_name告诉管道重网格化后要改成什么名字res指定目标分辨率。5 个数据集AWI-ESM、CMCC、HAMMOZ、MPI-ESM、TaiESM1各自维护自己的 YAML互不干扰想加一个新模式只需要复制一份配置即可。一条Snakefile调度三段式流水线 ⚙️Snakemake 的核心理念是规则即依赖。打开任意模式的 Snakefile你会发现整条 CMIP6 数据管道其实只有 4 条规则环环相扣第一步download 规则——wget 批量拉取原始文件 rule download: output: {dataset}/raw/{name}/{name}_{year_str}_raw.nc shell: wget https://esgf-data1.llnl.gov/.../{config[cmip_name]}_..._{wildcards.year_str}.nc -O {wildcards.dataset}/raw/{config[name]}/{config[name]}_{wildcards.year_str}_raw.nc它用wget从 ESGF 服务器下载原始 NetCDF并按{dataset}/raw/{name}/的目录结构落盘。注意开头的year_strings生成了 1850~2015 年共 165 年的时间分段也就是说每条规则会自动展开成上百个并行下载任务Snakemake 帮你安排得明明白白。第二步regrid 规则——调用重网格化脚本 rule regrid: input: {dataset}/raw/{name}/{name}_{year_str}_raw.nc output: {dataset}/{res}deg/{name}/{name}_{year_str}_{res}deg.nc.tmp shell: python ../../src/data_preprocessing/regrid.py \ --input_fns {input} --output_dir {wildcards.dataset}/{wildcards.res}deg/{wildcards.name} \ --ddeg_out {wildcards.res} --cmip 1 \ --rename {config[cmip_name]} {config[era_name]} --file_ending nc.tmp下载完成会自动触发重网格化。这一步调用的核心脚本是 src/data_preprocessing/regrid.py它用xarray读取 NetCDF用xesmf做双线性插值把数据插值到统一经纬网格同时完成两件事——丢掉 CMIP6 特有的lat_bnds、lon_bnds等边界坐标以及把cmip_name重命名为era_name比如tas→t2m。regridder xe.Regridder(ds_in, grid_out, method, periodicTrue, reuse_weightsreuse_weights) ds_out regridder(ds_in, keep_attrsTrue).astype(float32)值得一提的细节如果变量是位势高度zg脚本会乘上 9.807 换算成位势米z如果是太阳辐射rsdt则会换算成tisr并做时间重采样。这些气候学上的小心思都藏在 regrid 脚本里对新手非常友好。第三步delete 规则——临时文件转正 ✅重网格化先输出.nc.tmp临时文件等该年份所有分辨率都处理完delete规则优先级 100统一把它们mv成最终的*_deg.nc正式文件避免读到写了一半的脏数据。第四步all 规则——最终产物汇总 rule all: input: expand({datadir}/{res}deg/{name}/{name}_{year_str}_{res}deg.nc, datadirconfig[datadir], resconfig[res], nameconfig[name], year_stryear_strings)all规则定义了整条数据管道的终点只有全部 165 年的重网格化文件都齐了Snakemake 才认为任务成功。这就是声明式工作流的好处——你只管描述目标Snakemake 自动反推需要执行哪些下载和重网格化任务。批量调度5个数据集一条命令全搞定 最妙的是5 个模式的配置除了datadir、server_prefix、变量映射不同Snakefile 逻辑完全一致。这意味着你只需要分别在每个模式目录下执行snakemake --configfile config_2m_temperature.yml -j 8Snakemake 就会自动解析 YAML 配置按规则依赖展开成数百个下载与重网格化任务并用-j指定并行度。想要 5 个数据集全部处理写一个简单的循环或用一个总 Snakefile 聚合即可真正的一次配置全家受益。数据管道小结新手能学到什么环节工具作用批量下载wget Snakefile 通配符按年份自动展开 165 年任务重网格化regrid.py xesmf双线性插值到 1.40625° 统一网格变量对齐--rename cmip_name era_nametas→t2m、ta→t、zg→z任务调度Snakemake 规则依赖自动编排下载→重网格化→落盘对新手来说这条数据管道最大的价值在于可复现性只要保留snakemake_configs/下的 YAML 和 Snakefile任何人在任何机器上都能重建一模一样的 CMIP6 训练数据。如果你正准备用 ClimaX 做气候预测研究不妨先从读懂这份 Snakemake 数据管道配置 开始把数据地基打牢模型训练才能事半功倍。快去试试吧【免费下载链接】ClimaXFoundation model for weather climate项目地址: https://gitcode.com/gh_mirrors/cli/ClimaX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

供应链安全实战:用e18e依赖分析识别npm生态中的风险包

供应链安全实战:用e18e依赖分析识别npm生态中的风险包

供应链安全实战:用e18e依赖分析识别npm生态中的风险包 【免费下载链接】e18e 项目地址: https://gitcode.com/gh_mirrors/e1/e18e 供应链安全已成为现代前端与 Node.js 开发中无法回避的话题。每一次 npm install 都会把数十甚至上百个第三方包拉入你的项目…

2026/10/10 7:39:45 阅读更多 →
IntelliJ IDEA与Maven依赖本地优先配置:提升构建速度与稳定性

IntelliJ IDEA与Maven依赖本地优先配置:提升构建速度与稳定性

1. 项目概述:为什么需要优先从本地仓库获取依赖? 如果你用IntelliJ IDEA做Java开发,同时项目又用Maven管理依赖,那你大概率遇到过这种情况:每次打开一个新项目,或者执行一次 mvn clean install &#xff…

2026/9/29 21:38:49 阅读更多 →
config.toml 完全解读:mesh-llm 高级配置的 20 个关键参数清单

config.toml 完全解读:mesh-llm 高级配置的 20 个关键参数清单

config.toml 完全解读:mesh-llm 高级配置的 20 个关键参数清单 【免费下载链接】mesh-llm Distributed AI/LLM for the people. Share compute privately or publicly to power your agents and chat. 项目地址: https://gitcode.com/gh_mirrors/me/mesh-llm …

2026/9/30 5:10:08 阅读更多 →

最新新闻

Jev设计哲学实践:类型安全、概率校准与代码掌舵

Jev设计哲学实践:类型安全、概率校准与代码掌舵

1. 从一个“反直觉”的设计选择说起第一次接触 Jev 这套设计思路的时候,我其实是有点抗拒的。原因很简单——它把“概率”这件事摆到了台面上,而且要求开发者主动去“校准”它。这跟我们过去十几年写业务代码的习惯完全相反。以前我们写代码,…

2026/10/10 21:20:07 阅读更多 →
分布式任务调度核心原理与实战:从定时任务到分片、幂等与选型

分布式任务调度核心原理与实战:从定时任务到分片、幂等与选型

1. 从单机定时任务说起:为什么需要分布式任务调度1.1 你曾经写过的那些定时任务很多人的分布式任务调度之路,都是从一段简单的cron表达式开始的。我自己刚工作那会儿,项目里最常见的就是 SpringScheduled注解,或者干脆在服务器上挂…

2026/10/10 21:20:07 阅读更多 →
「比 Codex 省 40% token」刷屏 GitHub:Unreal Agent 性能零损耗是真香还是 PPT?

「比 Codex 省 40% token」刷屏 GitHub:Unreal Agent 性能零损耗是真香还是 PPT?

「比 Codex 省 40% token」刷屏 GitHub:Unreal Agent 性能零损耗是真香还是 PPT? 【免费下载链接】unreal-agent Async-first agent harness 项目地址: https://gitcode.com/gh_mirrors/un/unreal-agent 九月底,一个名为 Unreal Agent…

2026/10/10 21:20:07 阅读更多 →
uni-app x `uni.getAppBaseInfo` 应用基本信息获取指南:API 用法、多端字段与源码实现解析

uni-app x `uni.getAppBaseInfo` 应用基本信息获取指南:API 用法、多端字段与源码实现解析

示例工程前端移动开发跨平台 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 点击查看 免费下载 uni.getAppBaseInfo 是 uni-app x(以及 uni-app)中用于获取应用基…

2026/10/10 21:20:07 阅读更多 →
端侧小模型双子星选型指南:星火 X2.5 的 1.7B 与 4B,该带哪个上生产

端侧小模型双子星选型指南:星火 X2.5 的 1.7B 与 4B,该带哪个上生产

端侧小模型双子星选型指南:星火 X2.5 的 1.7B 与 4B,该带哪个上生产 【免费下载链接】Spark-X2.5-4B Spark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智…

2026/10/10 21:20:07 阅读更多 →
647回文子串与516最长回文子序列:区间DP两种典型玩法全解析

647回文子串与516最长回文子序列:区间DP两种典型玩法全解析

各位打卡代码随想录的伙计们,第四十五天来了。今天这两道题——647 回文子串、516 最长回文子序列——看起来名字只差两个字,实际上一个是把字符串切成一段段判断"是不是回文",另一个是允许跳跃地凑出"最长回文有多长"。…

2026/10/10 21:19:06 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →