<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>R package 使用说明 | TidyMass</title>
    <link>https://www.tidymass.org/zh/r-package/</link>
      <atom:link href="https://www.tidymass.org/zh/r-package/index.xml" rel="self" type="application/rss+xml" />
    <description>R package 使用说明</description>
    <generator>Wowchemy (https://wowchemy.com)</generator><language>zh-Hans</language><lastBuildDate>Wed, 23 Sep 2026 00:00:00 +0800</lastBuildDate>
    <image>
      <url>https://www.tidymass.org/media/logo_hu5606885a69ebc720faad867579aa5b55_46386_300x300_fit_lanczos_3.png</url>
      <title>R package 使用说明</title>
      <link>https://www.tidymass.org/zh/r-package/</link>
    </image>

    <item>
      <title>安装与版本管理</title>
      <link>https://www.tidymass.org/zh/r-package/installation/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/installation/</guid>
      <description>&lt;h2 id=&#34;准备环境&#34;&gt;准备环境&lt;/h2&gt;
&lt;p&gt;本教程核对了 tidymass 2.0.10 及各包的当前源码。虽然部分包声明最低 R 4.1，当前 masstools 要求 R ≥ 4.5；新环境应采用满足整套依赖的 R 4.5 或更高兼容版本。安装 R 和适合自己的 IDE，使用可写用户包库。&lt;/p&gt;
&lt;p&gt;Windows 源码编译需要匹配 R 版本的工具链；macOS 可能需要命令行开发工具及特定系统库。先看安装日志的第一个实际错误，再补齐相关依赖。Docker/ProteoWizard 属于原始格式转换的额外需求，不是打开峰表的前提。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;以下从官方 GitHub 源安装；依赖元数据中也可能引用 GitLab 和 Bioconductor，因此需能访问相应来源。安装会访问网络并可能编译包。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;requireNamespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;remotes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quietly&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;install.packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;remotes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;requireNamespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;BiocManager&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;quietly&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;install.packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;BiocManager&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;remotes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;tidymass/tidymass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Additional packages when your analysis needs them:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;remotes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;tidymass/massdatabase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;remotes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;tidymass/massconverter&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Standalone legacy normalization interface:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# remotes::install_github(&amp;#34;jaspershen/MetNormalizer&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tidymass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;sessionInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;记录版本与排错&#34;&gt;记录版本与排错&lt;/h2&gt;
&lt;p&gt;重启 R 后加载 tidymass，检查 &lt;code&gt;packageVersion()&lt;/code&gt;、&lt;code&gt;.libPaths()&lt;/code&gt; 和 &lt;code&gt;sessionInfo()&lt;/code&gt;。主包的版本不代表每一个子包版本相同。遇到同名函数用 &lt;code&gt;包名::函数名()&lt;/code&gt;，不要因为加载顺序变化而运行了另一个包的接口。&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;tidymass::check_tidymass_version(packages = &amp;quot;all&amp;quot;)&lt;/code&gt; 检查更新；明确需要升级时再运行 &lt;code&gt;update_tidymass()&lt;/code&gt;。远程镜像可能不同步，网络失败也可能使更新信息不完整。对于已经发表或正在比较的项目，先保存环境锁定记录和分析代码，再升级并验证。&lt;/p&gt;
&lt;h2 id=&#34;从哪里开始&#34;&gt;从哪里开始&lt;/h2&gt;
&lt;p&gt;从 &lt;a href=&#34;../massdataset/&#34;&gt;massdataset&lt;/a&gt; 学习数据结构；已有原始数据按 &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt; 处理。每个包的章节列出功能范围、使用示例和导出函数。数据依赖示例只有在准备了相应输入时才运行，示例参数不是经过验证的通用分析方法。&lt;/p&gt;
</description>
    </item>

    <item>
      <title>tidymass — 安装与管理包体系</title>
      <link>https://www.tidymass.org/zh/r-package/tidymass/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/tidymass/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 2.0.10&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tidymass&lt;/code&gt; 用于安装和加载共享数据结构的一组包，实际分析由各功能包完成。先查看包列表、函数名冲突和版本；massdatabase、massconverter 等扩展包按需单独加载。&lt;/p&gt;
&lt;p&gt;安装或更新使用新的 R 会话。升级前保存原项目环境，完成后重启 R 并检查代表性数据。更新检查成功不代表每个远程源都已正常访问。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;包发现、函数冲突提示、版本检查与整套更新。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tidymass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tidymass&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;tidymass_packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tidymass&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;tidymass_conflicts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;packageVersion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;tidymass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;sessionInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Run deliberately when checking/updating the environment:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# tidymass::check_tidymass_version(packages = &amp;#34;all&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# tidymass::update_tidymass(packages = &amp;#34;all&amp;#34;, from = &amp;#34;github&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;tidymass&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;check_tidymass_version&lt;/code&gt;, &lt;code&gt;tidymass_conflicts&lt;/code&gt;, &lt;code&gt;tidymass_logo&lt;/code&gt;, &lt;code&gt;tidymass_packages&lt;/code&gt;, &lt;code&gt;update_tidymass&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/tidymass&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massdataset — 构建、查看与交换数据集</title>
      <link>https://www.tidymass.org/zh/r-package/massdataset/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massdataset/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 0.99.3&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;核心 &lt;code&gt;mass_dataset&lt;/code&gt; 同时保存强度矩阵、样品信息、feature 信息、可选 MS2、注释表和处理历史。矩阵的行是 feature，列是样品；ID 和顺序必须与元数据对应。&lt;/p&gt;
&lt;p&gt;处理自己的数据时，分别读取三张表，保留文本 ID，构造数值强度矩阵，并按 sample/feature ID 对齐行列，再调用 &lt;code&gt;create_mass_dataset()&lt;/code&gt;。下例使用包内数据展示结构。使用 tidy 操作前通过 &lt;code&gt;activate_mass_dataset()&lt;/code&gt; 明确操作的是样品还是 feature 信息。&lt;/p&gt;
&lt;p&gt;通过 &lt;code&gt;mutate_ms2()&lt;/code&gt; 加入 MS2，先检查离子模式、RT 单位和前体/RT 匹配容差。extract 系列函数用于取出普通表格；&lt;code&gt;export_mass_dataset()&lt;/code&gt; 用于交换文件；RDS 保留完整对象。MS-DIAL/MZmine、mzTab 和 SummarizedExperiment 转换器各有输入约定，不能把任意 CSV 当作同一种格式。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;数据构建与校验，样品/feature 编辑筛选、连接合并，MS2 读写，注释和历史提取，缺失值/RSD 汇总及格式转换。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;expression_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdataset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sample_info&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdataset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;variable_info&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdataset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;create_mass_dataset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;expression_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;sample_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sample_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;variable_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;variable_info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_sample_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_variable_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;dataset.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massdataset&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;activate_mass_dataset&lt;/code&gt;, &lt;code&gt;adjust_confounder&lt;/code&gt;, &lt;code&gt;aes&lt;/code&gt;, &lt;code&gt;arrange&lt;/code&gt;, &lt;code&gt;case_when&lt;/code&gt;, &lt;code&gt;cbind_mass_dataset&lt;/code&gt;, &lt;code&gt;check_annotation_table&lt;/code&gt;, &lt;code&gt;check_column_name&lt;/code&gt;, &lt;code&gt;check_mass_dataset&lt;/code&gt;, &lt;code&gt;check_mass_dataset_class&lt;/code&gt;, &lt;code&gt;check_object_class&lt;/code&gt;, &lt;code&gt;convert_mass_dataset2mztab&lt;/code&gt;, &lt;code&gt;convert_mass_dataset2summarizedexperiment&lt;/code&gt;, &lt;code&gt;convert_msdial2mass_dataset&lt;/code&gt;, &lt;code&gt;convert_mztab2mass_dataset&lt;/code&gt;, &lt;code&gt;convet_mzmine2mass_dataset&lt;/code&gt;, &lt;code&gt;count&lt;/code&gt;, &lt;code&gt;create_mass_dataset&lt;/code&gt;, &lt;code&gt;desc&lt;/code&gt;, &lt;code&gt;drop_na&lt;/code&gt;, &lt;code&gt;export_mass_dataset&lt;/code&gt;, &lt;code&gt;export_mass_dataset4metdna&lt;/code&gt;, &lt;code&gt;export_ms2_data&lt;/code&gt;, &lt;code&gt;extract_annotation_table&lt;/code&gt;, &lt;code&gt;extract_expression_data&lt;/code&gt;, &lt;code&gt;extract_ms2_data&lt;/code&gt;, &lt;code&gt;extract_process_info&lt;/code&gt;, &lt;code&gt;extract_sample_info&lt;/code&gt;, &lt;code&gt;extract_sample_info_note&lt;/code&gt;, &lt;code&gt;extract_variable_info&lt;/code&gt;, &lt;code&gt;extract_variable_info_note&lt;/code&gt;, &lt;code&gt;fill&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;filter_samples&lt;/code&gt;, &lt;code&gt;filter_variables&lt;/code&gt;, &lt;code&gt;get_massdataset_version&lt;/code&gt;, &lt;code&gt;get_mv_number&lt;/code&gt;, &lt;code&gt;get_sample_id&lt;/code&gt;, &lt;code&gt;get_sample_number&lt;/code&gt;, &lt;code&gt;get_variable_id&lt;/code&gt;, &lt;code&gt;get_variable_number&lt;/code&gt;, &lt;code&gt;ggplot&lt;/code&gt;, &lt;code&gt;ggplot_mass_dataset&lt;/code&gt;, &lt;code&gt;glimpse&lt;/code&gt;, &lt;code&gt;group_by&lt;/code&gt;, &lt;code&gt;hello_world&lt;/code&gt;, &lt;code&gt;intensity_plot&lt;/code&gt;, &lt;code&gt;left_join&lt;/code&gt;, &lt;code&gt;left_join_mass_dataset&lt;/code&gt;, &lt;code&gt;massdataset_conflicts&lt;/code&gt;, &lt;code&gt;massdataset_logo&lt;/code&gt;, &lt;code&gt;massdataset_packages&lt;/code&gt;, &lt;code&gt;match_mz_rt&lt;/code&gt;, &lt;code&gt;merge_mass_dataset&lt;/code&gt;, &lt;code&gt;ms2_plot&lt;/code&gt;, &lt;code&gt;mutate&lt;/code&gt;, &lt;code&gt;mutate_all&lt;/code&gt;, &lt;code&gt;mutate_annotation_table&lt;/code&gt;, &lt;code&gt;mutate_at&lt;/code&gt;, &lt;code&gt;mutate_mean_intensity&lt;/code&gt;, &lt;code&gt;mutate_median_intensity&lt;/code&gt;, &lt;code&gt;mutate_ms2&lt;/code&gt;, &lt;code&gt;mutate_rsd&lt;/code&gt;, &lt;code&gt;mutate_sample_na_freq&lt;/code&gt;, &lt;code&gt;mutate_sample_na_number&lt;/code&gt;, &lt;code&gt;mutate_sample_zero_freq&lt;/code&gt;, &lt;code&gt;mutate_sample_zero_number&lt;/code&gt;, &lt;code&gt;mutate_variable_na_freq&lt;/code&gt;, &lt;code&gt;mutate_variable_na_number&lt;/code&gt;, &lt;code&gt;mutate_variable_zero_freq&lt;/code&gt;, &lt;code&gt;mutate_variable_zero_number&lt;/code&gt;, &lt;code&gt;n&lt;/code&gt;, &lt;code&gt;parse_tidymass_parameter&lt;/code&gt;, &lt;code&gt;pivot_longer&lt;/code&gt;, &lt;code&gt;plot_ms2&lt;/code&gt;, &lt;code&gt;pull&lt;/code&gt;, &lt;code&gt;rbind_mass_dataset&lt;/code&gt;, &lt;code&gt;read_mgf&lt;/code&gt;, &lt;code&gt;read_mztab&lt;/code&gt;, &lt;code&gt;read_mzxml&lt;/code&gt;, &lt;code&gt;relocate&lt;/code&gt;, &lt;code&gt;rename&lt;/code&gt;, &lt;code&gt;rename_with&lt;/code&gt;, &lt;code&gt;report_parameters&lt;/code&gt;, &lt;code&gt;select&lt;/code&gt;, &lt;code&gt;show_missing_values&lt;/code&gt;, &lt;code&gt;show_mz_rt_plot&lt;/code&gt;, &lt;code&gt;show_sample_missing_values&lt;/code&gt;, &lt;code&gt;show_variable_missing_values&lt;/code&gt;, &lt;code&gt;slice&lt;/code&gt;, &lt;code&gt;slice_head&lt;/code&gt;, &lt;code&gt;slice_max&lt;/code&gt;, &lt;code&gt;slice_min&lt;/code&gt;, &lt;code&gt;slice_sample&lt;/code&gt;, &lt;code&gt;slice_tail&lt;/code&gt;, &lt;code&gt;split_mass_dataset&lt;/code&gt;, &lt;code&gt;summarise&lt;/code&gt;, &lt;code&gt;summarise_samples&lt;/code&gt;, &lt;code&gt;summarize&lt;/code&gt;, &lt;code&gt;summarize_samples&lt;/code&gt;, &lt;code&gt;translate_tidymass_parameter&lt;/code&gt;, &lt;code&gt;transmute&lt;/code&gt;, &lt;code&gt;update_mass_dataset&lt;/code&gt;, &lt;code&gt;update_sample_info&lt;/code&gt;, &lt;code&gt;update_variable_info&lt;/code&gt;, &lt;code&gt;write_ms2_data&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massdataset&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massconverter — 转换厂商原始文件</title>
      <link>https://www.tidymass.org/zh/r-package/massconverter/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massconverter/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.3&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;massconverter 用于配置 ProteoWizard/msconvert，将厂商文件转换为开放格式；这一步不做色谱峰检测。是否能转换取决于厂商读取器、操作系统、容器环境和目录访问权限。&lt;/p&gt;
&lt;p&gt;明确选择 mzML/mzXML、质心化方法、离子模式和 MS level。后续鉴定需要 MS2 时保留相关扫描。保留原始采集文件，先转换一个文件并检查扫描数、RT 范围、模式和 TIC，再批量处理。vendor 质心化需要读取器支持，容器不代表兼容所有厂商格式。&lt;/p&gt;
&lt;p&gt;下例构建参数对象；配置 Docker/ProteoWizard 并替换路径后，才能执行注释掉的转换调用。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;转换参数构建与校验、命令生成、容器准备和批量文件转换。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;parameter&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massconverter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;create_msconvert_parameter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;output_format&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mzML&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;peak_picking_algorithm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;vendor&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;subset_polarity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;positive&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;subset_mslevels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;NA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;parameter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# massconverter::convert_raw_data(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   input_path = &amp;#34;vendor_raw&amp;#34;, output_path = &amp;#34;converted&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   msconvert_parameter = parameter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massconverter&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;check_msconvert_parameter&lt;/code&gt;, &lt;code&gt;convert_raw_data&lt;/code&gt;, &lt;code&gt;create_msconvert_parameter&lt;/code&gt;, &lt;code&gt;docker_pull_pwiz&lt;/code&gt;, &lt;code&gt;from_msconvert_parameter_to_code&lt;/code&gt;, &lt;code&gt;get_massconverter_version&lt;/code&gt;, &lt;code&gt;get_run_code&lt;/code&gt;, &lt;code&gt;massconverter_logo&lt;/code&gt;, &lt;code&gt;massconverter_packages&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massconverter&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massprocesser — 峰检测与样品对齐</title>
      <link>https://www.tidymass.org/zh/r-package/massprocesser/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massprocesser/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.11&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;输入转换后的 mzML/mzXML，使用独立处理目录，通常按 QC、Subject 等样品类型建立子目录。正负离子模式分别处理。&lt;code&gt;process_data()&lt;/code&gt; 完成原始数据处理并在 &lt;code&gt;Result&lt;/code&gt; 中写入结果。&lt;/p&gt;
&lt;p&gt;ppm 依据仪器表现设置，peakwidth 以秒表示并参考实际色谱；使用代表性文件调整信噪比、prefilter 和 noise。&lt;code&gt;bw&lt;/code&gt;、&lt;code&gt;min_fraction&lt;/code&gt; 影响跨样品分组；&lt;code&gt;fill_peaks&lt;/code&gt; 控制色谱补峰，不是统计填补。内存不足时降低 threads。&lt;/p&gt;
&lt;p&gt;检查 TIC/BPC、RT 校正、峰表和 EIC。需要后续审查时保留中间文件。下例参数仅展示调用形式，并非适用于所有仪器的方法。运行后检查输出文件，不要把函数返回值直接当作最终数据集。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;原始数据处理、EIC 提取、色谱可视化、校正 RT 可视化及靶向表格校验。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Requires your converted files under analysis/MS1/.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# massprocesser::process_data(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   path = &amp;#34;analysis/MS1&amp;#34;, polarity = &amp;#34;positive&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   ppm = 15, peakwidth = c(5, 30), snthresh = 10,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   threads = 2, min_fraction = 0.5, fill_peaks = FALSE,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   output_tic = TRUE, output_bpc = TRUE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;process_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massprocesser&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massprocesser&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;check_targeted_table&lt;/code&gt;, &lt;code&gt;extract_eic&lt;/code&gt;, &lt;code&gt;get_massprocesser_version&lt;/code&gt;, &lt;code&gt;massprocesser_conflicts&lt;/code&gt;, &lt;code&gt;massprocesser_logo&lt;/code&gt;, &lt;code&gt;massprocesser_packages&lt;/code&gt;, &lt;code&gt;plot_adjusted_rt&lt;/code&gt;, &lt;code&gt;plot_chromatogram&lt;/code&gt;, &lt;code&gt;process_data&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massprocesser&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>masscleaner — 过滤、填补与归一化</title>
      <link>https://www.tidymass.org/zh/r-package/masscleaner/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/masscleaner/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.12&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;从校验后的 &lt;code&gt;mass_dataset&lt;/code&gt; 开始，准备样品用途、批次和进样顺序。先过滤缺失过多的 feature，再填补。异常样品应结合实验记录判断，不能自动删除所有 PCA 离群样品。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;impute_mv()&lt;/code&gt; 提供 kNN、随机森林、简单值和模型填补等方法，按缺失机制和数据规模选择样品范围与方法。&lt;code&gt;normalize_data()&lt;/code&gt; 提供 total、mean、median、PQN 样品级方法和依赖 QC 的 SVR/LOESS；后两者需要合适的 QC 覆盖和采集信息。&lt;code&gt;integrate_data()&lt;/code&gt;、&lt;code&gt;align_batch()&lt;/code&gt; 处理支持的跨批次任务，但不能消除批次与生物学分组完全混杂的设计问题。&lt;/p&gt;
&lt;p&gt;保留输入对象，检查处理后的缺失情况、QC 指标及前后图。预测建模时在训练折内部拟合预处理，避免信息泄漏。下例的中位数填补和归一化仅用于展示 API。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;异常样品检测与报告、缺失值填补、样品级/QC 归一化、LOESS 参数优化、批次对齐与整合。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# object is the mass_dataset created/imported in the previous chapter.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;which&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;rowSums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.na&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;object[keep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;masscleaner&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;impute_mv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;median&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;masscleaner&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;normalize_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;median&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;normalized.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;masscleaner&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;align_batch&lt;/code&gt;, &lt;code&gt;check_for_data_integration&lt;/code&gt;, &lt;code&gt;check_for_qc_normalization&lt;/code&gt;, &lt;code&gt;detect_outlier&lt;/code&gt;, &lt;code&gt;extract_outlier_table&lt;/code&gt;, &lt;code&gt;get_masscleaner_version&lt;/code&gt;, &lt;code&gt;impute_mv&lt;/code&gt;, &lt;code&gt;integrate_data&lt;/code&gt;, &lt;code&gt;masscleaner_conflicts&lt;/code&gt;, &lt;code&gt;masscleaner_logo&lt;/code&gt;, &lt;code&gt;masscleaner_packages&lt;/code&gt;, &lt;code&gt;normalize_data&lt;/code&gt;, &lt;code&gt;normalize_data_pqn&lt;/code&gt;, &lt;code&gt;optimize_loess_span&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/masscleaner&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massqc — 质量评估与报告</title>
      <link>https://www.tidymass.org/zh/r-package/massqc/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massqc/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.8&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;清洗前后都应评估质量。为 massqc 提供样品用途、批次和进样顺序正确的 &lt;code&gt;mass_dataset&lt;/code&gt;，将报告写入新的输出目录，并保留生成报告的输入对象。&lt;/p&gt;
&lt;p&gt;检查按样品/feature 汇总的缺失值、强度分布、QC RSD、相关性和 PCA。QC RSD 需要真实定量 QC 重复。低 RSD 不代表身份已确认，PCA 异常点也可能反映生物学差异。报告中写清输入是否已填补或归一化，因为这些处理影响指标。&lt;/p&gt;
&lt;p&gt;HTML 报告需要可用的渲染依赖；PDF 还需要相应文档工具链。渲染失败时先检查日志，可以先输出单独诊断图，再修复缺少的渲染环境。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;HTML/PDF 报告、样品与 feature 缺失值、m/z–RT 分布、RSD 曲线、强度箱线图、PCA 和样品相关性。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Requires object and the report-rendering dependencies.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# massqc::massqc_report(object, path = &amp;#34;qc_before&amp;#34;, type = &amp;#34;html&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;massqc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;show_sample_missing_values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;massqc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;show_variable_missing_values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massqc&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;extract_expression_data&lt;/code&gt;, &lt;code&gt;extract_process_info&lt;/code&gt;, &lt;code&gt;extract_sample_info&lt;/code&gt;, &lt;code&gt;extract_variable_info&lt;/code&gt;, &lt;code&gt;get_mv_number&lt;/code&gt;, &lt;code&gt;massqc_conflicts&lt;/code&gt;, &lt;code&gt;massqc_cumulative_rsd_plot&lt;/code&gt;, &lt;code&gt;massqc_logo&lt;/code&gt;, &lt;code&gt;massqc_packages&lt;/code&gt;, &lt;code&gt;massqc_pca&lt;/code&gt;, &lt;code&gt;massqc_pca_pc1&lt;/code&gt;, &lt;code&gt;massqc_report&lt;/code&gt;, &lt;code&gt;massqc_rsd_plot&lt;/code&gt;, &lt;code&gt;massqc_sample_boxplot&lt;/code&gt;, &lt;code&gt;massqc_sample_correlation&lt;/code&gt;, &lt;code&gt;show_missing_values&lt;/code&gt;, &lt;code&gt;show_mz_rt_plot&lt;/code&gt;, &lt;code&gt;show_sample_missing_values&lt;/code&gt;, &lt;code&gt;show_variable_missing_values&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massqc&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massdatabase — 获取与构建参考数据库</title>
      <link>https://www.tidymass.org/zh/r-package/massdatabase/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massdatabase/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.14&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;massdatabase 用于获取、解析和转换化合物、谱图及通路资源，本身不是一个包罗所有化合物的数据库。先确定后续分析需要的数据来源和 ID 系统。&lt;/p&gt;
&lt;p&gt;典型谱库流程为：下载来源文件 → 按 MSP/XML/SDF 等格式读取 → 转为 metid 数据库。通路流程为：获取物种对应的 KEGG 或其他支持资源 → 读取 → 转为 metpath 对象。保存原始资源、获取日期、物种、转换参数和来源版本。&lt;/p&gt;
&lt;p&gt;导出 API 覆盖 KEGG、HMDB、MassBank、MoNA、GNPS、PubChem、ChEBI、LipidMaps、FooDB、BiGG、SMPDB、Reactome、WikiPathways 等相关操作，各来源支持的下载/读取/查询/转换组合不同。在线服务和文件结构可能变化；请求失败不代表化合物不存在。共享衍生数据库前检查来源使用条件和覆盖范围。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;来源特定的在线查询下载、谱图/化合物/通路解析、metid/metpath 格式转换及 ID/来源辅助工具。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use the source-specific reader matching your downloaded data.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;read_msp_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdatabase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;convert_mona2metid&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdatabase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;download_kegg_pathway&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdatabase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;convert_kegg2metpath&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;massdatabase&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massdatabase&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;convert2metid&lt;/code&gt;, &lt;code&gt;convert_bigg_universal2metid&lt;/code&gt;, &lt;code&gt;convert_chebi2metid&lt;/code&gt;, &lt;code&gt;convert_foodb2metid&lt;/code&gt;, &lt;code&gt;convert_gnps2metid&lt;/code&gt;, &lt;code&gt;convert_hmdb2metid&lt;/code&gt;, &lt;code&gt;convert_kegg2metid&lt;/code&gt;, &lt;code&gt;convert_kegg2metpath&lt;/code&gt;, &lt;code&gt;convert_lipidbank2metid&lt;/code&gt;, &lt;code&gt;convert_lipidmaps2metid&lt;/code&gt;, &lt;code&gt;convert_massbank2metid&lt;/code&gt;, &lt;code&gt;convert_massbank2metid_nist&lt;/code&gt;, &lt;code&gt;convert_massbank2metid_riken&lt;/code&gt;, &lt;code&gt;convert_mona2metid&lt;/code&gt;, &lt;code&gt;convert_nist2metid&lt;/code&gt;, &lt;code&gt;convert_smpdb2metpath&lt;/code&gt;, &lt;code&gt;convert_species2source&lt;/code&gt;, &lt;code&gt;download_bigg_model&lt;/code&gt;, &lt;code&gt;download_bigg_universal_metabolite&lt;/code&gt;, &lt;code&gt;download_chebi_compound&lt;/code&gt;, &lt;code&gt;download_foodb_compound&lt;/code&gt;, &lt;code&gt;download_gnps_spectral_library&lt;/code&gt;, &lt;code&gt;download_kegg_compound&lt;/code&gt;, &lt;code&gt;download_kegg_drug&lt;/code&gt;, &lt;code&gt;download_kegg_pathway&lt;/code&gt;, &lt;code&gt;download_kegg_rclass&lt;/code&gt;, &lt;code&gt;download_kegg_reaction&lt;/code&gt;, &lt;code&gt;download_lipidbank_lipid_class&lt;/code&gt;, &lt;code&gt;download_lipidmaps_lipid&lt;/code&gt;, &lt;code&gt;download_massbank_compound&lt;/code&gt;, &lt;code&gt;download_pubchem_compound&lt;/code&gt;, &lt;code&gt;download_smpdb_pathway&lt;/code&gt;, &lt;code&gt;get_words_similarity&lt;/code&gt;, &lt;code&gt;massdatabase_logo&lt;/code&gt;, &lt;code&gt;massdatabase_packages&lt;/code&gt;, &lt;code&gt;parse_pubchem_compound&lt;/code&gt;, &lt;code&gt;parse_reactome_pathway&lt;/code&gt;, &lt;code&gt;parse_reactome_reaction&lt;/code&gt;, &lt;code&gt;read_bigg_model&lt;/code&gt;, &lt;code&gt;read_bigg_universal_metabolite&lt;/code&gt;, &lt;code&gt;read_chebi_compound&lt;/code&gt;, &lt;code&gt;read_foodb_compound&lt;/code&gt;, &lt;code&gt;read_gpml&lt;/code&gt;, &lt;code&gt;read_kegg_compound&lt;/code&gt;, &lt;code&gt;read_kegg_drug&lt;/code&gt;, &lt;code&gt;read_kegg_pathway&lt;/code&gt;, &lt;code&gt;read_msp_data&lt;/code&gt;, &lt;code&gt;read_msp_data_gnps&lt;/code&gt;, &lt;code&gt;read_msp_data_massbank&lt;/code&gt;, &lt;code&gt;read_msp_data_mona&lt;/code&gt;, &lt;code&gt;read_msp_data_nist&lt;/code&gt;, &lt;code&gt;read_sdf_data_lipidmaps&lt;/code&gt;, &lt;code&gt;read_smpdb_pathway&lt;/code&gt;, &lt;code&gt;read_xml_data&lt;/code&gt;, &lt;code&gt;read_xml_data_hmdb&lt;/code&gt;, &lt;code&gt;request_bigg_model_info&lt;/code&gt;, &lt;code&gt;request_bigg_reaction_info&lt;/code&gt;, &lt;code&gt;request_bigg_universal_metabolite&lt;/code&gt;, &lt;code&gt;request_bigg_universal_metabolite_info&lt;/code&gt;, &lt;code&gt;request_bigg_universal_reaction&lt;/code&gt;, &lt;code&gt;request_bigg_universal_reaction_info&lt;/code&gt;, &lt;code&gt;request_bigg_version&lt;/code&gt;, &lt;code&gt;request_chebi_compound&lt;/code&gt;, &lt;code&gt;request_foodb_compound&lt;/code&gt;, &lt;code&gt;request_foodb_compound_info&lt;/code&gt;, &lt;code&gt;request_foodb_compound_info_crawler&lt;/code&gt;, &lt;code&gt;request_foodb_compound_ms2&lt;/code&gt;, &lt;code&gt;request_hmdb_metabolite&lt;/code&gt;, &lt;code&gt;request_hmdb_reaction&lt;/code&gt;, &lt;code&gt;request_kegg_compound&lt;/code&gt;, &lt;code&gt;request_kegg_compound_info&lt;/code&gt;, &lt;code&gt;request_kegg_drug&lt;/code&gt;, &lt;code&gt;request_kegg_drug_info&lt;/code&gt;, &lt;code&gt;request_kegg_pathway&lt;/code&gt;, &lt;code&gt;request_kegg_pathway_info&lt;/code&gt;, &lt;code&gt;request_kegg_rclass&lt;/code&gt;, &lt;code&gt;request_kegg_rclass_info&lt;/code&gt;, &lt;code&gt;request_kegg_reaction&lt;/code&gt;, &lt;code&gt;request_kegg_reaction_info&lt;/code&gt;, &lt;code&gt;request_lipidbank_lipid_class&lt;/code&gt;, &lt;code&gt;request_lipidmaps_lipid&lt;/code&gt;, &lt;code&gt;request_pubchem_compound&lt;/code&gt;, &lt;code&gt;request_reactome_organisms_info&lt;/code&gt;, &lt;code&gt;request_reactome_pathway&lt;/code&gt;, &lt;code&gt;request_reactome_pathway_info&lt;/code&gt;, &lt;code&gt;request_reactome_reaction&lt;/code&gt;, &lt;code&gt;request_reactome_reaction_info&lt;/code&gt;, &lt;code&gt;request_wikidata_metabolite&lt;/code&gt;, &lt;code&gt;request_wikipathway&lt;/code&gt;, &lt;code&gt;request_wikipathway_info&lt;/code&gt;, &lt;code&gt;request_wikipathway_organisms_info&lt;/code&gt;, &lt;code&gt;request_wikipedia_compound&lt;/code&gt;, &lt;code&gt;request_wikipedia_scientific_classification&lt;/code&gt;, &lt;code&gt;search_hmdb_database&lt;/code&gt;, &lt;code&gt;show_progresser&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massdatabase&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>metid — Feature 注释与谱图审查</title>
      <link>https://www.tidymass.org/zh/r-package/metid/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/metid/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.3.2&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;metid 将前体质量、条件相容的 RT 及可用 MS2 与 &lt;code&gt;databaseClass&lt;/code&gt; 匹配。先导入或构建参考数据库，再给 &lt;code&gt;mass_dataset&lt;/code&gt; 关联实验 MS2，核对离子模式、色谱和加合物。&lt;/p&gt;
&lt;p&gt;当前 API 包含 &lt;code&gt;annotate_metabolites_mass_dataset()&lt;/code&gt;，也保留 &lt;code&gt;metIdentify*&lt;/code&gt;、&lt;code&gt;mzIdentify*&lt;/code&gt; 等接口，不能混用参数名。下例针对色谱不可比的参考库明确关闭 RT 证据；质量容差需依据自己的仪器设置，示例值只用于说明。&lt;/p&gt;
&lt;p&gt;审查完整候选证据，不只看最高分。MS1 候选不是结构确认；自建库也需要标准品和实际测量满足证据要求，不能仅按库名判断置信度。保留歧义，记录候选筛选和加合物去重规则。来源注释是数据库关联，不是样品中实际合成来源的直接证明。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;数据库构建校验、MS1/MS2 注释、单峰查询、匹配分数和镜像谱、置信度/候选/加合物筛选及来源汇总。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Requires an MS2-associated object and a compatible databaseClass.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# database &amp;lt;- readRDS(&amp;#34;reference_database.rds&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# annotated &amp;lt;- metid::annotate_metabolites_mass_dataset(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   object = object, database = database,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   polarity = &amp;#34;positive&amp;#34;, column = &amp;#34;rp&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   ms1.match.ppm = 15, ms2.match.ppm = 30,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   rt.match.tol = NA, rt.match.weight = 0,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   candidate.num = 3, threads = 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;annotate_metabolites_mass_dataset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;metid&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;metid&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;analyze_metabolite_origins&lt;/code&gt;, &lt;code&gt;annotate_metabolites&lt;/code&gt;, &lt;code&gt;annotate_metabolites_mass_dataset&lt;/code&gt;, &lt;code&gt;annotate_peaks_mz_rt_ms2&lt;/code&gt;, &lt;code&gt;annotate_single_peak_mass_dataset&lt;/code&gt;, &lt;code&gt;calculate_confidence_level&lt;/code&gt;, &lt;code&gt;calculate_dotproduct&lt;/code&gt;, &lt;code&gt;calculate_ms2_matching_score&lt;/code&gt;, &lt;code&gt;calculate_mz_match_score&lt;/code&gt;, &lt;code&gt;calculate_rt_match_score&lt;/code&gt;, &lt;code&gt;calculate_total_score&lt;/code&gt;, &lt;code&gt;check_adduct_table&lt;/code&gt;, &lt;code&gt;check_database&lt;/code&gt;, &lt;code&gt;check_mass_dataset&lt;/code&gt;, &lt;code&gt;check_ms1_ms2_info&lt;/code&gt;, &lt;code&gt;check_object4metablite_origin&lt;/code&gt;, &lt;code&gt;check_parameters4annotate_metabolites&lt;/code&gt;, &lt;code&gt;check_parameters4calculate_total_score&lt;/code&gt;, &lt;code&gt;construct_database&lt;/code&gt;, &lt;code&gt;construct_massbank_database&lt;/code&gt;, &lt;code&gt;construct_mona_database&lt;/code&gt;, &lt;code&gt;correct_database_rt&lt;/code&gt;, &lt;code&gt;extract_database_name&lt;/code&gt;, &lt;code&gt;extract_ms1_database&lt;/code&gt;, &lt;code&gt;extract_ms1_info&lt;/code&gt;, &lt;code&gt;extract_ms2_database&lt;/code&gt;, &lt;code&gt;extract_ms2_info&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;filter_adducts&lt;/code&gt;, &lt;code&gt;filter_identification&lt;/code&gt;, &lt;code&gt;getIdentificationTable2&lt;/code&gt;, &lt;code&gt;getMS2spectrum&lt;/code&gt;, &lt;code&gt;get_iden_info&lt;/code&gt;, &lt;code&gt;get_identification_table&lt;/code&gt;, &lt;code&gt;get_identification_table_all&lt;/code&gt;, &lt;code&gt;get_ms2_spectrum&lt;/code&gt;, &lt;code&gt;get_ms2_spectrum_from_object&lt;/code&gt;, &lt;code&gt;get_parameters&lt;/code&gt;, &lt;code&gt;get_parameters_metid&lt;/code&gt;, &lt;code&gt;identify_metabolite_all&lt;/code&gt;, &lt;code&gt;identify_metabolites&lt;/code&gt;, &lt;code&gt;identify_metabolites_params&lt;/code&gt;, &lt;code&gt;identify_ms2_only&lt;/code&gt;, &lt;code&gt;identify_peak&lt;/code&gt;, &lt;code&gt;identify_single_peak&lt;/code&gt;, &lt;code&gt;load_adduct_table&lt;/code&gt;, &lt;code&gt;match_ms2_fragments&lt;/code&gt;, &lt;code&gt;match_ms2_temp&lt;/code&gt;, &lt;code&gt;metIdentification&lt;/code&gt;, &lt;code&gt;metIdentify&lt;/code&gt;, &lt;code&gt;metIdentify_mass_dataset&lt;/code&gt;, &lt;code&gt;metabolite_origin_network&lt;/code&gt;, &lt;code&gt;metabolite_origin_upsetplot&lt;/code&gt;, &lt;code&gt;metid&lt;/code&gt;, &lt;code&gt;metid_conflicts&lt;/code&gt;, &lt;code&gt;metid_logo&lt;/code&gt;, &lt;code&gt;metid_packages&lt;/code&gt;, &lt;code&gt;ms2_plot_mass_dataset&lt;/code&gt;, &lt;code&gt;ms2plot&lt;/code&gt;, &lt;code&gt;mzIdentify&lt;/code&gt;, &lt;code&gt;mzIdentifyParam&lt;/code&gt;, &lt;code&gt;mzIdentify_mass_dataset&lt;/code&gt;, &lt;code&gt;plot_ms2_matching&lt;/code&gt;, &lt;code&gt;readMGF&lt;/code&gt;, &lt;code&gt;readMSP&lt;/code&gt;, &lt;code&gt;readMSP_MoNA&lt;/code&gt;, &lt;code&gt;readMZXML&lt;/code&gt;, &lt;code&gt;read_mgf_experiment&lt;/code&gt;, &lt;code&gt;read_mgf_gnps&lt;/code&gt;, &lt;code&gt;read_mgf_mona&lt;/code&gt;, &lt;code&gt;read_msp&lt;/code&gt;, &lt;code&gt;read_msp_database&lt;/code&gt;, &lt;code&gt;read_msp_gnps&lt;/code&gt;, &lt;code&gt;read_msp_mona&lt;/code&gt;, &lt;code&gt;remove_impossible_annotations&lt;/code&gt;, &lt;code&gt;remove_impossible_annotations_fix&lt;/code&gt;, &lt;code&gt;remove_noise&lt;/code&gt;, &lt;code&gt;source_metabolite_network&lt;/code&gt;, &lt;code&gt;source_network&lt;/code&gt;, &lt;code&gt;specific_source_network&lt;/code&gt;, &lt;code&gt;summary_annotation_table&lt;/code&gt;, &lt;code&gt;trans_to_new_style&lt;/code&gt;, &lt;code&gt;which_has_identification&lt;/code&gt;, &lt;code&gt;write_mgf_gnps&lt;/code&gt;, &lt;code&gt;write_mgf_massbank&lt;/code&gt;, &lt;code&gt;write_mgf_mona&lt;/code&gt;, &lt;code&gt;write_msp&lt;/code&gt;, &lt;code&gt;write_msp_gnps&lt;/code&gt;, &lt;code&gt;write_msp_massbank&lt;/code&gt;, &lt;code&gt;write_msp_mona&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/metid&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>massstat — 探索变异与组间比较</title>
      <link>https://www.tidymass.org/zh/r-package/massstat/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/massstat/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.6&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;使用适当清洗的数据和预先定义的比较方案。QC/Blank 不参与生物学假设检验。按用途选择变换与缩放：PCA 使用缩放不意味着 fold change 也要从缩放值计算。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;run_pca()&lt;/code&gt; 返回 PCA 模型，&lt;code&gt;pca_score_plot()&lt;/code&gt; 绘制得分；&lt;code&gt;mutate_fc()&lt;/code&gt; 按均值或中位数计算 case/control；&lt;code&gt;mutate_p_value()&lt;/code&gt; 支持 t 检验和 Wilcoxon 检验，并添加多重校正结果。配对检验前明确对齐同一个体。下例为独立分组比较，组名来自样品信息；这些 massstat 接口要求每个比较组至少三个样品。&lt;/p&gt;
&lt;p&gt;其他功能包括热图、相关性、距离、图结构转换、PLS 和 PLS-DA。训练数据上的监督分离不是预测验证，需使用合适的留出或嵌套验证，不能先在全部数据上筛选特征再切分。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;PCA 与缩放、倍数变化和假设检验、火山图与热图、相关性/距离/图结构，以及 PLS/PLS-DA。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_sample_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;control&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Control&amp;#34;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Treatment&amp;#34;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Replace labels to match your experimental design.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;control&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massstat&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mutate_fc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;control&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                     &lt;span class=&#34;n&#34;&gt;mean_median&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mean&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massstat&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mutate_p_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;control&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;t.test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p_adjust_methods&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;BH&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;write.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_variable_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s&#34;&gt;&amp;#34;feature_statistics.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row.names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;massstat&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;Heatmap&lt;/code&gt;, &lt;code&gt;convert_dummy_variable&lt;/code&gt;, &lt;code&gt;convert_mass_dataset2graph&lt;/code&gt;, &lt;code&gt;cor_mass_dataset&lt;/code&gt;, &lt;code&gt;dist_mass_dataset&lt;/code&gt;, &lt;code&gt;massstat_conflicts&lt;/code&gt;, &lt;code&gt;massstat_logo&lt;/code&gt;, &lt;code&gt;massstat_packages&lt;/code&gt;, &lt;code&gt;mutate_fc&lt;/code&gt;, &lt;code&gt;mutate_p_value&lt;/code&gt;, &lt;code&gt;pca_score_plot&lt;/code&gt;, &lt;code&gt;pls&lt;/code&gt;, &lt;code&gt;plsda&lt;/code&gt;, &lt;code&gt;run_pca&lt;/code&gt;, &lt;code&gt;scale_data&lt;/code&gt;, &lt;code&gt;scale_data1&lt;/code&gt;, &lt;code&gt;scale_data2&lt;/code&gt;, &lt;code&gt;volcano_plot&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/massstat&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>metpath — 通路与 feature 模块分析</title>
      <link>https://www.tidymass.org/zh/r-package/metpath/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/metpath/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.0.10&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;化合物层面的富集需要去重后的化合物 ID、对应物种的通路库和明确的筛选规则。KEGG ID 与 KEGG 资源对应，HMDB ID 与相容资源对应，不能直接用名称替代 ID。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;enrich_kegg()&lt;/code&gt;、&lt;code&gt;enrich_hmdb()&lt;/code&gt;、&lt;code&gt;enrich_pathways()&lt;/code&gt; 提供相应富集接口，显式设置多重校正方法。&lt;code&gt;enrich_kegg()&lt;/code&gt; 的背景来自传入的通路数据库，没有独立的 &lt;code&gt;background&lt;/code&gt; 参数。如果实验需要以实际测到的化合物为背景，应构造并核验受限数据库，或采用可显式指定背景的方法，不能把完整数据库暗称为实测背景。&lt;/p&gt;
&lt;p&gt;Feature 方法包括同位素注释、RT 分组、候选分配、活性评分、零分布和 &lt;code&gt;perform_fpa()&lt;/code&gt;。它拓展对未充分鉴定 feature 的解释，但保留注释不确定性。模块结果是待验证假设，不能确认其中每个化合物或实际通路活性。柱状图、散点图和网络图用于展示相应结果。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;通路数据提取筛选、过度表达富集检验、富集图和网络、同位素/feature 分组及功能模块分析。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Requires your deduplicated IDs and a pathway_database object.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# enrichment &amp;lt;- metpath::enrich_kegg(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   query_id = unique(selected_kegg_ids), query_type = &amp;#34;compound&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   id_type = &amp;#34;KEGG&amp;#34;, pathway_database = pathway_database,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   method = &amp;#34;hypergeometric&amp;#34;, p_adjust_method = &amp;#34;BH&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   p_cutoff = 0.05, threads = 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;perform_fpa&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;metpath&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;metpath&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;annotate_isotope&lt;/code&gt;, &lt;code&gt;annotate_metabolites_fpa&lt;/code&gt;, &lt;code&gt;arrange&lt;/code&gt;, &lt;code&gt;calculate_activity_score&lt;/code&gt;, &lt;code&gt;calculate_activity_socre&lt;/code&gt;, &lt;code&gt;calculate_centrality&lt;/code&gt;, &lt;code&gt;calculate_redundance&lt;/code&gt;, &lt;code&gt;compound_list&lt;/code&gt;, &lt;code&gt;database_info&lt;/code&gt;, &lt;code&gt;describtion&lt;/code&gt;, &lt;code&gt;enrich_bar_plot&lt;/code&gt;, &lt;code&gt;enrich_hmdb&lt;/code&gt;, &lt;code&gt;enrich_kegg&lt;/code&gt;, &lt;code&gt;enrich_metabolic_pathway&lt;/code&gt;, &lt;code&gt;enrich_network&lt;/code&gt;, &lt;code&gt;enrich_pathways&lt;/code&gt;, &lt;code&gt;enrich_scatter_plot&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;filter_pathway&lt;/code&gt;, &lt;code&gt;gene_list&lt;/code&gt;, &lt;code&gt;generate_null_activity_score_distribution&lt;/code&gt;, &lt;code&gt;get_hidden_metabolites&lt;/code&gt;, &lt;code&gt;get_pathway_class&lt;/code&gt;, &lt;code&gt;group_peaks_rt&lt;/code&gt;, &lt;code&gt;identify_metabolic_modules&lt;/code&gt;, &lt;code&gt;metpath_conflicts&lt;/code&gt;, &lt;code&gt;metpath_logo&lt;/code&gt;, &lt;code&gt;metpath_packages&lt;/code&gt;, &lt;code&gt;pathway_class&lt;/code&gt;, &lt;code&gt;pathway_id&lt;/code&gt;, &lt;code&gt;pathway_name&lt;/code&gt;, &lt;code&gt;perform_fpa&lt;/code&gt;, &lt;code&gt;plot_metabolic_module_fpa&lt;/code&gt;, &lt;code&gt;plot_metabolic_network_fpa&lt;/code&gt;, &lt;code&gt;reference_list&lt;/code&gt;, &lt;code&gt;related_disease&lt;/code&gt;, &lt;code&gt;related_module&lt;/code&gt;, &lt;code&gt;remove_redundancy&lt;/code&gt;, &lt;code&gt;score_peak_group&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/metpath&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>masstools — 分子式、谱图与 ID 工具</title>
      <link>https://www.tidymass.org/zh/r-package/masstools/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/masstools/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 0.99.1&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;masstools 提供其他包共用的辅助工具：分子式校验与质量计算、加合物处理、m/z–RT 匹配、谱图读取转换、去噪及匹配分数。存在同名函数时使用包命名空间。&lt;/p&gt;
&lt;p&gt;中性精确质量不是实测前体 m/z，应按离子/加合物和电荷正确转换。谱图相似度受容差、强度处理和碎片覆盖影响，分数本身不等于鉴定。&lt;/p&gt;
&lt;p&gt;ID 转换依赖上游服务，保留输入、输出、服务及失败记录，使用结构标识核验一对多映射。LLM 或其他远程服务接口为可选功能，需要配置；生成的 ID 必须独立核验后才能用于注释或富集。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;分子式与加合物操作、质量转换、谱图解析转换与相似度、m/z–RT 匹配、ID 服务及化合物分类查询。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;masstools&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;calculate_mass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C6H12O6&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;which&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;exact_mass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;convert_precursor_mz2accurate_mass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;masstools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;read_mgf&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;masstools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;calculate_spectra_match_score&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;masstools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;masstools&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;build_progress_table&lt;/code&gt;, &lt;code&gt;calculate_dot_product&lt;/code&gt;, &lt;code&gt;calculate_mass&lt;/code&gt;, &lt;code&gt;calculate_spectra_match_score&lt;/code&gt;, &lt;code&gt;check_adduct_formula&lt;/code&gt;, &lt;code&gt;check_chemical_element&lt;/code&gt;, &lt;code&gt;check_chemical_formula&lt;/code&gt;, &lt;code&gt;combine_formula_adduct&lt;/code&gt;, &lt;code&gt;convert_metabolite_id&lt;/code&gt;, &lt;code&gt;convert_metabolite_id_chemspider&lt;/code&gt;, &lt;code&gt;convert_metabolite_id_oliver&lt;/code&gt;, &lt;code&gt;convert_metabolite_id_openai&lt;/code&gt;, &lt;code&gt;convert_precursor_mz2accurate_mass&lt;/code&gt;, &lt;code&gt;deduplicate_names&lt;/code&gt;, &lt;code&gt;detect_os&lt;/code&gt;, &lt;code&gt;df_to_spectra&lt;/code&gt;, &lt;code&gt;getDP&lt;/code&gt;, &lt;code&gt;getSpectraMatchScore&lt;/code&gt;, &lt;code&gt;get_compound_class&lt;/code&gt;, &lt;code&gt;get_dp&lt;/code&gt;, &lt;code&gt;get_os&lt;/code&gt;, &lt;code&gt;get_spectra_match_score&lt;/code&gt;, &lt;code&gt;keep_best_match&lt;/code&gt;, &lt;code&gt;keep_one&lt;/code&gt;, &lt;code&gt;list_masstools_packages&lt;/code&gt;, &lt;code&gt;list_metabolite_id_systems&lt;/code&gt;, &lt;code&gt;masstools_logo&lt;/code&gt;, &lt;code&gt;masstools_packages&lt;/code&gt;, &lt;code&gt;match_mz_rt&lt;/code&gt;, &lt;code&gt;ms2Match&lt;/code&gt;, &lt;code&gt;ms2_match&lt;/code&gt;, &lt;code&gt;ms2_plot&lt;/code&gt;, &lt;code&gt;mz_rt_match&lt;/code&gt;, &lt;code&gt;name_duplicated&lt;/code&gt;, &lt;code&gt;parse_chemical_formula&lt;/code&gt;, &lt;code&gt;plot_ms2&lt;/code&gt;, &lt;code&gt;read_mgf&lt;/code&gt;, &lt;code&gt;read_mgf4database&lt;/code&gt;, &lt;code&gt;read_mgf_database&lt;/code&gt;, &lt;code&gt;read_mzxml&lt;/code&gt;, &lt;code&gt;removeNoise&lt;/code&gt;, &lt;code&gt;remove_noise&lt;/code&gt;, &lt;code&gt;report_conflicts&lt;/code&gt;, &lt;code&gt;request_chemspider_metabolite&lt;/code&gt;, &lt;code&gt;request_metabolite_id_systems&lt;/code&gt;, &lt;code&gt;retrieve_chemspider_metabolite&lt;/code&gt;, &lt;code&gt;retrieve_compound_class&lt;/code&gt;, &lt;code&gt;show_progresser&lt;/code&gt;, &lt;code&gt;spectra_to_df&lt;/code&gt;, &lt;code&gt;split_formula&lt;/code&gt;, &lt;code&gt;sum_formula&lt;/code&gt;, &lt;code&gt;trans_ID&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/tidymass/masstools&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>MetNormalizer — 使用独立归一化流程</title>
      <link>https://www.tidymass.org/zh/r-package/metnormalizer/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/metnormalizer/</guid>
      <description>&lt;p&gt;&lt;strong&gt;文档核对版本: 1.3.02&lt;/strong&gt; · 2026-09-23&lt;/p&gt;
&lt;p&gt;MetNormalizer 是官网包目录列出的独立 QC 归一化工具，其文件式 &lt;code&gt;metNor()&lt;/code&gt; 接口不同于 &lt;code&gt;masscleaner::normalize_data()&lt;/code&gt;。必须准备对应格式，不能直接把它替换进 &lt;code&gt;mass_dataset&lt;/code&gt; 流程。&lt;/p&gt;
&lt;p&gt;按包示例准备 MS1 表和样品信息 CSV，包含所需 QC 与采集信息。在独立目录中检查过滤比例和优化参数，运行后查看归一化数据与诊断结果，保留原始输入和设置。&lt;/p&gt;
&lt;p&gt;当前接口中 &lt;code&gt;multiple = 1&lt;/code&gt; 使用基于进样顺序的 SVR，更大的值使用相关峰，应根据采集与研究设计选择。新的对象式 TidyMass 流程通常可以直接采用 masscleaner 的归一化入口。&lt;/p&gt;
&lt;h2 id=&#34;功能范围&#34;&gt;功能范围&lt;/h2&gt;
&lt;p&gt;输入校验与独立的 QC/SVR 归一化流程。&lt;/p&gt;
&lt;h2 id=&#34;使用示例&#34;&gt;使用示例&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Requires MetNormalizer-format CSV files in normalization_input/.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# MetNormalizer::metNor(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   ms1.data.name = &amp;#34;data.csv&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   sample.info.name = &amp;#34;sample.info.csv&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   path = &amp;#34;normalization_input&amp;#34;, optimization = TRUE,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   multiple = 1, threads = 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;metNor&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MetNormalizer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数查询&#34;&gt;函数查询&lt;/h2&gt;
&lt;p&gt;下面列出已核对源码中导出的 API，包括兼容接口与辅助函数。具体参数以安装版本的 R 帮助为准；例如运行 &lt;code&gt;help(&amp;quot;函数名&amp;quot;, package = &amp;quot;MetNormalizer&amp;quot;)&lt;/code&gt;。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;展开导出函数列表&lt;/summary&gt;
&lt;p&gt;&lt;code&gt;MetNormalizer_logo&lt;/code&gt;, &lt;code&gt;checkData&lt;/code&gt;, &lt;code&gt;metNor&lt;/code&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/jaspershen/MetNormalizer&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;包源码与参考文档&lt;/a&gt; · &lt;a href=&#34;../workflow/&#34;&gt;完整工作流&lt;/a&gt;&lt;/p&gt;
</description>
    </item>

    <item>
      <title>完整 LC-MS 分析工作流</title>
      <link>https://www.tidymass.org/zh/r-package/workflow/</link>
      <pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://www.tidymass.org/zh/r-package/workflow/</guid>
      <description>&lt;p&gt;这份模板连接原始处理、探索、清洗、统计、注释和通路分析。每个环节都保留输出，不把程序执行成功当作科学结论得到验证。所有数据路径、组名和示例阈值都需要按研究修改。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.tidymass.org/tutorial-files/tidymass-workflow.R&#34;&gt;下载完整 R 脚本&lt;/a&gt;。代码为自己的真实输入准备，不包含虚构实验结果；原始数据处理和数据库步骤需有相应文件。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# TidyMass LC-MS workflow template. Reviewed 2026-09-23.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Replace paths/groups and review every analysis choice before execution.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This script does not contain study data or claim validated instrument parameters.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tidymass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dplyr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;1-准备数据与原始处理&#34;&gt;1. 准备数据与原始处理&lt;/h2&gt;
&lt;p&gt;示例从正离子 mzML/mzXML 开始，负离子模式另建分析。样品表至少有 sample_id、group、class；QC 使用定量 QC，研究样品用 Subject。路径中 QC/Subject 子目录的文件名去扩展名后必须唯一。参数只是起点，先在代表性文件上验证。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. Inputs and raw processing -------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;raw_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/MS1&amp;#34;&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# mzML/mzXML in QC/Subject subdirectories&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sample_csv&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/sample_info.csv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/results&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;control_group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Control&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;case_group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Treatment&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;dir.create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recursive&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;showWarnings&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;dir.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;writeLines&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;capture.output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sessionInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()),&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;sessionInfo.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;set.seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20260923&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;massprocesser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;process_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;polarity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;positive&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;ppm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;peakwidth&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snthresh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;threads&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_fraction&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fill_peaks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;output_tic&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;output_bpc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result_file&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Result&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;new.env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;envir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;objects&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;mget&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;envir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;saved&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;vapply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;objects&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;inherits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mass_dataset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;logical&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;objects[&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;[which&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-匹配样品信息与探索&#34;&gt;2. 匹配样品信息与探索&lt;/h2&gt;
&lt;p&gt;按精确 ID 对齐样品信息，不按原表行号。示例从原始结果提取矩阵后重新构建带元数据的对象，因此务必保留原处理目录及原对象以保存原始处理记录。检查样品/feature 数、缺失值、RT 和 QC。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. Match metadata and inspect ------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;read.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;check.names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stringsAsFactors&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;n&#34;&gt;colClasses&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;character&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sample_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;group&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;class&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;anyNA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;anyDuplicated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ids&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;colnames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setequal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;[match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;injection.order&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;injection.order&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;as.numeric&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;injection.order&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;anyNA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;injection.order&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Reconstruct with the matched metadata before attaching MS2/annotations.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;create_mass_dataset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;expression_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;sample_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;variable_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_variable_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;01-imported.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;show_sample_missing_values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;show_variable_missing_values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Optional report, with a working report-rendering environment:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# massqc::massqc_report(object, path = file.path(output_dir, &amp;#34;qc_before&amp;#34;), type = &amp;#34;html&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;3-过滤填补与归一化&#34;&gt;3. 过滤、填补与归一化&lt;/h2&gt;
&lt;p&gt;示例保留至少一个比较组中缺失不超过 50% 的 feature；有 QC 时再加 QC 缺失不超过 20% 的条件。这是明确写出的示例规则，不是默认科学标准。它移除 Blank 后做中位数填补与归一化。QC 漂移校正、异常样品删除和跨批次整合需要按设计另行决定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. Filter, impute and normalize ---------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Illustrative criteria; revise and document for your study.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Subject&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;control_group]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Subject&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case_group]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;qc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;QC&amp;#34;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rowMeans&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.na&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr[&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nf&#34;&gt;rowMeans&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.na&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr[&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;qc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rowMeans&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.na&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr[&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;qc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;write.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;data.frame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;variable_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rownames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keep&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;filter_decisions.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row.names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Exclude blanks from the illustrative normalized matrix.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;[which&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keep_feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample_id[si&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Subject&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;QC&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nrow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;masscleaner&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;impute_mv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;median&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;masscleaner&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;normalize_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;median&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;02-normalized.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For QC-based SVR/LOESS, first verify quantitative QC coverage and metadata.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Review outliers/batches with acquisition records; do not remove PCA outliers blindly.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;4-pca-与独立组间统计&#34;&gt;4. PCA 与独立组间统计&lt;/h2&gt;
&lt;p&gt;PCA 仅用研究样品，并去除非有限值或零方差 feature，使用均值中心化与单位方差缩放；fold change 和检验使用未缩放的归一化值。该代码是独立组 t 检验及 BH 校正，不适用于未调整的重复测量设计。配对数据应先对齐个体，并选择相应检验或模型。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. PCA and independent-group statistics ------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Keep scaled values out of fold-change calculation.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_expression_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;biological&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expr[&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;biological&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;valid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;apply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.finite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;valid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pca&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;prcomp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expr[valid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;drop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;center&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scale.&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;write.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pca&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;pca_scores.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massstat&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mutate_fc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mean_median&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mean&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massstat&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mutate_p_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ctrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;case&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;t.test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p_adjust_methods&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;BH&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;feature_stats&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_variable_info&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;write.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;feature_stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;feature_statistics.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row.names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;03-statistics.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;5-关联-ms2-与注释&#34;&gt;5. 关联 MS2 与注释&lt;/h2&gt;
&lt;p&gt;提供实验 MS2 目录和 metid databaseClass。关闭不相容参考 RT 的匹配和分数权重。保留候选表，检查镜像谱、质量误差与歧义。没有所需输入时明确跳过，不生成假注释。统计与注释可分别完成，但进入通路前应综合其证据。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 5. Attach MS2 and annotate ---------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Replace these paths and run this block when these resources are available.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ms2_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/MS2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reference_rds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/reference_database.rds&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;dir.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ms2_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reference_rds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;with_ms2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mutate_ms2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stats_object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms2_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;column&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;rp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;polarity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;positive&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;ms1.ms2.match.mz.tol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms1.ms2.match.rt.tol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;readRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reference_rds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;inherits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;database&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;databaseClass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;annotated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;metid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;annotate_metabolites_mass_dataset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with_ms2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;database&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;polarity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;positive&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;column&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;rp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;ms1.match.ppm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ms2.match.ppm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rt.match.tol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;NA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rt.match.weight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;candidate.num&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threads&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;annotated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;04-annotated.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;write.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;massdataset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;extract_annotation_table&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;annotated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;annotation_candidates.csv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row.names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Annotation not run: provide experimental MS2 and a compatible reference database.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;6-候选审查后的通路分析&#34;&gt;6. 候选审查后的通路分析&lt;/h2&gt;
&lt;p&gt;依据预先确定的统计筛选与注释审查，准备去重的 kegg_id 列表。多个加合物不能当作多个化合物。示例的富集背景是传入数据库覆盖的化合物，不自动等于本实验测到的化合物；如需实测背景，先明确构造并验证相应数据库。没有 ID/数据库时明确跳过。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 6. Pathway analysis after candidate review ----------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Prepare reviewed_kegg_ids.csv with one KEGG ID per row in a kegg_id column.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Select using the prespecified statistical rule and reviewed annotation evidence.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Do not count multiple features/adducts as independent compounds.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;query_csv&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/reviewed_kegg_ids.csv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pathway_rds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;analysis/pathway_database.rds&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query_csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pathway_rds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;read.csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query_csv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;colClasses&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;character&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;kegg_id&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;query_ids&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;unique&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;kegg_id[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;is.na&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;kegg_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;nzchar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;kegg_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;stopifnot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query_ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0L&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;grepl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;^C[0-9]{5}$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;pathway_database&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;readRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pathway_rds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;enrichment&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;metpath&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;enrich_kegg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query_type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;compound&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;id_type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;KEGG&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pathway_database&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pathway_database&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;p_adjust_method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;BH&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hypergeometric&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p_cutoff&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.05&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;threads&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;saveRDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enrichment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;05-pathway-enrichment.rds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# Background is defined by the supplied pathway database, not automatically by measured compounds.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Pathway analysis not run: provide reviewed compound IDs and a pathway database.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;7-导出与复现&#34;&gt;7. 导出与复现&lt;/h2&gt;
&lt;p&gt;保存脚本、参数、样品表、原始文件、数据库来源/版本、R 对象、统计表、候选表和 sessionInfo。RDS 结果不会自动携带所有外部输入。公开结果时说明分析方法、样品范围、过滤阈值、缺失处理、比较方向、校正方法、鉴定证据及通路背景。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 7. Archive -----------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;writeLines&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;capture.output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sessionInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()),&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;file.path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;sessionInfo.txt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Back up this script, parameter choices, all inputs/reference versions and all results.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>

  </channel>
</rss>
