nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.GEARS / GEARSStorage

GEARSStorage

Full name SMRUCC.genomics.Analysis.GEARS.IO.GEARSStorage Assembly SMRUCC.genomics.Analysis.GEARS Members 25

GEARS 模型的 zip 持久化编解码模块

00 Remarks

一个 zip 包内包含五个条目:

  • manifest.json —— 格式版本、超参配置、模型结构、损失曲线、基线样本索引;
  • prior.csv —— 先验调控网络(文本,便于人工查看与编辑);
  • expression.bin —— 完整表达矩阵(复用 BinaryMatrix 的网络字节序格式);
  • baseline.bin —— 野生型均值与标准差;
  • model.bin —— 全部可训练参数张量。

图结构不单独落盘:GeneRegulatoryGraph 在给定「基因名列表 + 先验网络 + 表达矩阵 + 共表达配置」时构建结果完全确定,加载时按同样入参重建即可,既省空间也避免图与数据不同步。

注意:BinaryMatrix.Save() 与 BinaryMatrix.LoadStream() 内部都会 dispose 传入的流,而 zip 条目的流本来就必须关闭才会落盘,因此二者语义吻合;但这也意味着 同一个条目只能写一次,不可追加。

01 Syntax

SMRUCC.genomics.Analysis.GEARS.IO.GEARSStorage

02 Methods

NameOverloadsSummary
OpenEntry 1 创建 zip 条目并打开其写入流
ReadTextLines 1 读取 zip 条目的全部文本内容
GetEntry 1 按名称取 zip 条目,不存在时抛出友好异常
WriteManifest 1 写入清单条目
ReadManifest 1 读取并校验清单条目
ReadString 1 从清单字典中读取必填字符串字段
ReadInt 1 从清单字典中读取必填整数字段
JoinNumbers 2 把双精度数组拼成逗号分隔的字符串(固定使用不变文化,避免区域设置影响小数点)
ParseDoubles 1 解析逗号分隔的双精度数组
ParseIntegers 1 解析逗号分隔的整数数组
WritePrior 1 写入先验调控网络
ReadPrior 1 读取先验调控网络
WriteExpression 1 写入完整表达矩阵
ReadExpression 1 读取完整表达矩阵
WriteVector 1 写入一个双精度向量(长度 + 数据)
ReadVector 1 读取一个双精度向量
WriteTensors 1 写入模型的全部可训练参数张量
ReadTensors 1 读取参数张量并原地写回目标张量

03 Fields

NameOverloadsSummary
FormatVersion 1 当前 zip 包格式版本号;加载时不一致会直接报错
EntryManifest 1 条目名:格式版本与超参清单
EntryPrior 1 条目名:先验调控网络 CSV
EntryExpression 1 条目名:表达矩阵二进制
EntryBaseline 1 条目名:野生型基线(均值与标准差)
EntryModel 1 条目名:模型可训练参数

04 Members

method OpenEntry #
OpenEntry(ZipArchive, String)

创建 zip 条目并打开其写入流

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

entryNameString

条目名

Returns

条目的写入流;调用方负责 Using 释放

method ReadTextLines #
ReadTextLines(ZipArchive, String)

读取 zip 条目的全部文本内容

Parameters
NameTypeDescription
zipZipArchive

zip 归档

entryNameString

条目名

Returns

文本行数组

method GetEntry #
GetEntry(ZipArchive, String)

按名称取 zip 条目,不存在时抛出友好异常

Parameters
NameTypeDescription
zipZipArchive

zip 归档

entryNameString

条目名

Returns

条目对象

method WriteManifest #
WriteManifest(ZipArchive, GEARSConfig, GEARSModel, Int32, Int32, Double(), Int32(), Int32)

写入清单条目

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

configGEARSConfig

超参配置

modelGEARSModel

模型(提供结构信息)

nGeneInt32

基因数量

nSampleInt32

样本数量

lossCurveDouble()

损失曲线

baselineSamplesInt32()

基线样本列索引

nParametersInt32

模型参数张量个数

method ReadManifest #
ReadManifest(ZipArchive, GEARSConfig, Double(), Int32(), Int32)

读取并校验清单条目

Parameters
NameTypeDescription
zipZipArchive

zip 归档

configGEARSConfig

返回超参配置

lossCurveDouble()

返回损失曲线

baselineSamplesInt32()

返回基线样本列索引

nParametersInt32

返回模型参数张量个数

Returns

清单字典,便于调用方读取结构字段

method ReadString #
ReadString(Dictionary(Of String, String), String)

从清单字典中读取必填字符串字段

Parameters
NameTypeDescription
infoDictionary(Of String, String)

清单字典

keyString

字段键名

Returns

字段值

method ReadInt #
ReadInt(Dictionary(Of String, String), String)

从清单字典中读取必填整数字段

Parameters
NameTypeDescription
infoDictionary(Of String, String)

清单字典

keyString

字段键名

Returns

字段值

method JoinNumbers #
JoinNumbers(Double())

把双精度数组拼成逗号分隔的字符串(固定使用不变文化,避免区域设置影响小数点)

Parameters
NameTypeDescription
valuesDouble()

数值数组

Returns

逗号分隔文本;空数组返回空串

method JoinNumbers overload 2 #
JoinNumbers(Int32())

把整数数组拼成逗号分隔的字符串

Parameters
NameTypeDescription
valuesInt32()

整数数组

Returns

逗号分隔文本;空数组返回空串

method ParseDoubles #
ParseDoubles(String)

解析逗号分隔的双精度数组

Parameters
NameTypeDescription
textString

逗号分隔文本

Returns

双精度数组;文本为空时返回空数组

method ParseIntegers #
ParseIntegers(String)

解析逗号分隔的整数数组

Parameters
NameTypeDescription
textString

逗号分隔文本

Returns

整数数组;文本为空时返回空数组

method WritePrior #
WritePrior(ZipArchive, PriorNetwork)

写入先验调控网络

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

priorPriorNetwork

先验调控网络

method ReadPrior #
ReadPrior(ZipArchive)

读取先验调控网络

Parameters
NameTypeDescription
zipZipArchive

zip 归档

Returns

先验调控网络

method WriteExpression #
WriteExpression(ZipArchive, Matrix)

写入完整表达矩阵

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

exprMatrix

表达矩阵(行=基因,列=样本)

method ReadExpression #
ReadExpression(ZipArchive)

读取完整表达矩阵

Remarks

BinaryMatrix.LoadStream() 内部依赖 Stream.Length 与 Stream.Position 判断数据块是否读完,而 zip 条目的解压流(DeflateStream)不支持取长度, 直接传入会抛 NotSupportedException。因此这里先把条目内容缓冲到 MemoryStream 再解码——这样既复用了既有的二进制格式,又不必改动共享运行时代码。

Parameters
NameTypeDescription
zipZipArchive

zip 归档

Returns

表达矩阵

method WriteVector #
WriteVector(ZipArchive, String, Double())

写入一个双精度向量(长度 + 数据)

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

entryNameString

条目名

xDouble()

待写入的向量

method ReadVector #
ReadVector(ZipArchive, String)

读取一个双精度向量

Parameters
NameTypeDescription
zipZipArchive

zip 归档

entryNameString

条目名

Returns

向量

method WriteTensors #
WriteTensors(ZipArchive, List(Of Tensor))

写入模型的全部可训练参数张量

Parameters
NameTypeDescription
zipZipArchive

目标 zip 归档

parametersList(Of Tensor)

参数张量列表(顺序即恢复顺序)

method ReadTensors #
ReadTensors(ZipArchive, List(Of Tensor))

读取参数张量并原地写回目标张量

Parameters
NameTypeDescription
zipZipArchive

zip 归档

parametersList(Of Tensor)

目标张量列表;其个数与每个张量的形状必须与保存时完全一致, 否则抛出 InvalidDataException

field FormatVersion #
FormatVersion

当前 zip 包格式版本号;加载时不一致会直接报错

field EntryManifest #
EntryManifest

条目名:格式版本与超参清单

field EntryPrior #
EntryPrior

条目名:先验调控网络 CSV

field EntryExpression #
EntryExpression

条目名:表达矩阵二进制

field EntryBaseline #
EntryBaseline

条目名:野生型基线(均值与标准差)

field EntryModel #
EntryModel

条目名:模型可训练参数