nPYc-toolbox翻译-2-Dataset-classes
原文地址:https://npyc-toolbox.readthedocs.io/en/latest/objects.html
数据集类型(Dataset classes)
nPYc工具箱是围绕一个核心 Dataset
类构建的,它代表了一个度量集合,带有与每个样本相关联的生物和分析元数据,以及与观察值相关联的分析和化学元数据。
Dataset
类及其子类的实例能够从常见的数据类型中实例化自己,包括某些原始数据格式、常见的交换格式和流行的数据处理工具的输出。
Dataset
族类包括将额外元数据映射到对象的方法(参见 addSampleInfo()
),并以各种格式导出Dataset
(参见exportDataset()
方法)
Dataset 的子集都有三个主要的属性:
sampleMetadata
: 一个n x p
的dataframe:包含n
个 样本(sample)的一共p
个标识符和元数据featureMetadata
: 一个m x q
的pandas的dataframe:包含m
个特征(feature )的一共q
个标识符和元数据intensityData
: 一个n x m
的numpy矩阵:包含n
个 样本(sample)和m
个特征(feature )之间的测量值
Fig. 1 一个Dataset
对象的关键属性的结构。值得注意的是,featureMetadata
的Dataframe中的行对应于intensityData
矩阵中的列。
当初始化时,可以通过从 sop
中指定的 JSON 文件加载的 SOP parameters来配置Dataset
对象。然后将参数存储在Attributes
字典中。
Dataset
Dataset
对象作为 MSDataset
、TargetedDataset
和NMRDataset
共同的父集,通常不应该独立地实例化。
class nPYc.objects.Dataset(sop='Generic', sopPath=None, **kwargs)
nPYc dataset
对象的基类。
Parameters:
sop
(str) – 从指定的SOP JSON文件加载配置参数sopPath
– 默认情况下,SOPs是从nPYc/StudyDesigns/SOP/
目录中加载的。如果不是None
, 将会在内建的SOP目录之前,在sopPath=
指定的目录中进行检索。
featureMetadata
= None一个
m x q
的pandas的dataframe:包含m
个特征(feature )的一共q
个标识符和元数据featureMetadata
表可以包括任何可以存储在pandas cell中的数据类型。但是工具箱规定了一些列需要具备的要求,以便后续函数的分析:sampleMetadata
= None一个
n x p
的dataframe:包含n
个 样本(sample)的一共p
个标识符和元数据。sampleMetadata
表可以包括任何可以存储在pandas cell中的数据类型。但是工具箱规定了一些列需要具备的要求,以便后续函数的分析:featureMask
= None包含
m
个元素的向量,其中True
表示用于分析的特性,False
表示排除在分析之外的元素sampleMask
= None包含
p
个元素的向量,其中True
表示用于分析的样本,False
表示排除在分析之外的样本VariableType
= NoneVariableType
会枚举所代表的指定数据类型Attributes
= None对象配置属性的字典,包括从SOP 文件中加载的属性。
定义的属性如下
intensityData
一个
n x m
的numpy矩阵:包含n
个 样本(sample)和m
个特征(feature )之间的测量值noSamples
Returns:在dataset (n)中的样本数量
Return type:int
noFeatures
Returns:在dataset (m)中的特征数量
Return type:int
Returns:Number of features in the dataset (m)Return type:int
log
以字符串形式返回日志条目
name
返回或者重设
dataset
的名字,名称必须是字符串(string)格式Normalisation
Normaliser
对象用于转换intensityData
中的测量值validateObject
(verbose=True, raiseError=False, raiseWarning=True)检查类定义中指定的所有属性是否存在,以及所需的类或值。检查属性是否存在以及类型。检查强制列的存在,但是不检查列值(类型或唯一性)。如果“sampleMetadataExcluded”、“intensityDataExcluded”、“featureMetadataExcluded” 或者“excludedFlag”存在, 则会检查排除的存在和数量(基于“sampleMetadataExcluded”)
Parameters:
verbose (bool) – 如果是True,每个检查的结果都被打印出来(默认为True)
raiseError (bool) – 如果是True,在检查失败且验证被中断时打印错误(默认为False)
raiseWarning (bool) – 如果是True,检查失败时会发出警告
Returns:当检查对象符合基本的
Dataset
,返回 TrueReturn type:bool
Raises:
TypeError – 如果Object class是错误的
AttributeError – 如果self.Attributes不存在
TypeError – 如果self.Attributes不是一个字典
AttributeError – 如果self.Attributes[‘Log’] 不存在
TypeError – 如果self.Attributes[‘Log’] 不是一个列表
AttributeError – 如果self.Attributes[‘dpi’] 不存在
TypeError – 如果self.Attributes[‘dpi’] 不是一个整数
AttributeError – 如果self.Attributes[‘figureSize’]不存在
TypeError – 如果self.Attributes[‘figureSize’] 不是一个列表
ValueError – 如果self.Attributes[‘figureSize’]的长度不是2
TypeError – 如果
self.Attributes['figureSize'][0]
不是整数或者浮点数(int or float)TypeError – 如果
self.Attributes['figureSize'][1]
不是整数或者浮点数(int or float)AttributeError – 如果self.Attributes[‘figureFormat’] 不存在
TypeError – 如果self.Attributes[‘figureFormat’] 不是一个字符串(str)
AttributeError – 如果self.Attributes[‘histBins’] 不存在
TypeError – 如果self.Attributes[‘histBins’]不是一个整数
AttributeError – 如果self.Attributes[‘noFiles’]不存在
TypeError – 如果self.Attributes[‘noFiles’]不是一个整数
AttributeError –如果self.Attributes[‘quantiles’] 不存在
TypeError – 如果self.Attributes[‘quantiles’]不是一个列表
ValueError – 如果self.Attributes[‘quantiles’] 的长度不是2
TypeError – 如果
self.Attributes['quantiles'][0]
不是整数或者浮点数(int or float)TypeError – 如果
self.Attributes['quantiles'][1]
不是整数或者浮点数(int or float)AttributeError – 如果self.Attributes[‘sampleMetadataNotExported’] 不存在
TypeError – 如果self.Attributes[‘sampleMetadataNotExported’]不是一个列表
AttributeError – 如果self.Attributes[‘featureMetadataNotExported’]不存在
TypeError – 如果self.Attributes[‘featureMetadataNotExported’] 不是一个列表
AttributeError – 如果self.Attributes[‘analyticalMeasurements’] 不存在
TypeError – 如果self.Attributes[‘analyticalMeasurements’] 不是一个字典
AttributeError – 如果self.Attributes[‘excludeFromPlotting’]不存在
TypeError – 如果self.Attributes[‘excludeFromPlotting’] 不是一个列表
AttributeError – 如果self.VariableType不存在
AttributeError – 如果self._Normalisation不存在
TypeError – 如果self._Normalisation不是 Normaliser ABC
AttributeError – 如果self._name不存在
TypeError – 如果self._name不是一个字符串
AttributeError – 如果 self._intensityData不存在
TypeError – 如果self._intensityData不是一个 numpy.ndarray
AttributeError – 如果self.sampleMetadata不存在
TypeError – 如果self.sampleMetadata 不是一个pandas.DataFrame
LookupError – 如果self.sampleMetadata 没有一个 ”Sample File Name“列
LookupError – 如果 self.sampleMetadata 没有一个 ”AssayRole“列
LookupError – 如果self.sampleMetadata 没有一个 ”SampleType “列
LookupError – 如果self.sampleMetadata 没有一个 ”Dilution “列
LookupError – 如果self.sampleMetadata 没有一个 ”Batch “列
LookupError – 如果self.sampleMetadata 没有一个 ”Correction Batch“列
LookupError – 如果self.sampleMetadata 没有一个 ”Run Order“列
LookupError – 如果self.sampleMetadata 没有一个 ”Sampling ID“列
LookupError – 如果self.sampleMetadata 没有一个 ”Sample Base Name“列
LookupError – 如果self.sampleMetadata 没有一个 ”Acquired Time“列
LookupError – 如果self.sampleMetadata 没有一个 ”Exclusion Details“列
AttributeError – 如果self.featureMetadata不存在
TypeError – 如果self.featureMetadata 不是一个pandas.DataFrame
LookupError – 如果self.featureMetadata 没有一个 ”Feature Name“列
AttributeError – 如果self.sampleMask 不存在
TypeError – 如果self.sampleMask 不是一个numpy.ndarray
ValueError –如果self.sampleMask 不是布尔型(bool)
AttributeError – 如果 self.featureMask不存在
TypeError – 如果 self.featureMask 不是一个numpy.ndarray
ValueError – 如果self.featureMask 不是布尔型(bool)
AttributeError – 如果self.sampleMetadataExcluded 不存在
TypeError – 如果self.sampleMetadataExcluded不是一个列表
AttributeError – 如果self.intensityDataExcluded不存在
TypeError – 如果self.intensityDataExcluded不是一个列表
ValueError – 如果self.intensityDataExcluded 与self.sampleMetadataExcluded排除的数量不相同
AttributeError – 如果self.featureMetadataExcluded不存在
TypeError – 如果self.featureMetadataExcluded 不是一个列表
ValueError – 如果self.featureMetadataExcluded 与self.sampleMetadataExcluded排除的数量不相同
AttributeError – 如果self.excludedFlag 不存在
TypeError – 如果self.excludedFlag不是一个列表
ValueError – 如果self.excludedFlag与self.sampleMetadataExcluded排除的数量不相同
initialiseMasks
()重新初始化
featureMask
和sampleMask
来匹配当前intensityData
的规模,并包含所有的样本。updateMasks
(filterSamples=True, filterFeatures=False, sampleTypes=[<SampleType.StudySample>, <SampleType.StudyPool>], assayRoles=[<AssayRole.Assay>, <AssayRole.PrecisionReference>], kwargs)根据参数更新
sampleMask
和featureMask
。哪些不符合分析标准的条目,
updateMasks()
将在sampleMask
或者featureMask
上设置为False
。注意:
为了避免重新引入手工排除的项目,这种方法只会将条目设置为False。因此,如果您希望从更严格的标准转移到不那么严格的集合,您将需要使用
initialiseMasks()
来重置所有的条目True。Parameters:
filterSamples (bool) – 如果是
False
不修改 sampleMaskfilterFeatures (bool) – 如果是
False
不修改 featureMasksampleTypes (SampleType) – 要保留的样本类型列表
sampleRoles (AssayRole) – 要保留的assays roles列表
applyMasks
()根据
sampleMask
和featureMask
(那些设置为False
)的设置永久删除屏蔽的元素, 而这些设置是根据featureMetadata
、sampleMetadata
和intensityData
的信息来的。addSampleInfo
(descriptionFormat=None, filePath=None, **kwargs)加载额外的元数据并将其映射到
sampleMetadata
表可能的选项:
‘NPC LIMS’:NPC LIMS文件将原始分析数据的名称映射到样本 IDs
‘NPC Subject Info’ :从NPC样本清单文件(在PCSOP.082中定义的格式)映射主题元数据
‘Raw Data’ :从原始数据文件中提取分析参数
‘ISATAB’ :ISATAB研究设计
‘Filenames’ :根据在 filenamespec 中传递的正则表达式中的铺货的信息,从文件名中解析样本信息
‘Basic CSV’ :将在 filePath= 中的
csv
文件的内容加入到sampleMetadata
表中,通过两个表格中的”Sample File Name“列完成匹配(具体参考Basic CSV Sample Metadata Import)。
Parameters:
descriptionFormat (str) – 要添加的元数据格式
filePath (str) – 要添加的附加数据的路径
Raises:
NotImplementedError – 如果不理解描述的格式
addFeatureInfo
(filePath=None, descriptionFormat=None, featureId=None, **kwargs)加载额外的元数据并将其映射到
featureMetadata
表。可能的选项:
‘Reference Ranges’ 为一个特征(feature)指定上下参考范围的 JSON 文件
Parameters:
filePath (str) – 要添加的附加数据的路径
descriptionFormat (str) –
featureId (str) – 提供与内部特征名称(internal Feature Name)匹配的元数据文件中的惟一特征 ID 字段(Unique feature Id field)
Raises:
NotImplementedError – 如果不理解描述的格式
excludeSamples
(sampleList, on='Sample File Name', message='User Excluded')如果样品出现在 sampleList 中,则将在
sampleMask
中将对应的样本设为False
,以将其从dataset
中屏蔽。Parameters:
sampleList (list) – 将被排除的样本 IDs 列表
on (str) –
sampleMetadata
中用来与 sampleList 相匹配的列的名称,默认为“Sample File Name”message (str) – 将消息附加到每一个将被排除的样本的“Exclusion Details”字段,默认信息为“User Excluded”
Returns:一个 IDs 列表,主要是 sampleList 无法与现有的样本 IDs匹配的 IDs
Return type:list
excludeFeatures
(featureList, on='Feature Name', message='User Excluded')从
dataset
中排除 featureList 中列出的特征(features)Parameters:
sampleList (list) – 将被排除的特征 IDs 列表
on (str) –
featureMetadata
中用来与 featureList 相匹配的列的名称,默认为“Feature Name”message (str) – 将消息附加到每一个将被排除的特征的“Exclusion Details”字段,默认信息为“User Excluded”
Returns:一个 IDs 列表,主要是 featureList无法与现有的特征 IDs匹配的 IDs
Return type:list
exportDataset
(destinationPath='.', saveFormat='CSV', isaDetailsDict={}, withExclusions=True, escapeDelimiters=False, filterMetadata=True)以各种格式导出
dataset
对象,以便导入到其他软件中,根据dataset
对象的name
属性命名导出。可能的保存格式:
CSV :基础的CSV 输出,
featureMetadata
、sampleMetadata
和intensityData
输出三个独立的 CSV 文件,并保存在desitinationPath指定的目录下UnifiedCSV :将
featureMetadata
、sampleMetadata
和intensityData
合并输出到一个单独的 CSV 文件中。ISATAB :将
sampleMetadata
以 ISATAB 格式导出
Parameters:
destinationPath (str) – 将数据保存到这里指定的目录中
format (str) – 保存数据的文件格式,默认为CSV
withExclusions (bool) – 如果是
True
,标记的特征和样本将被排除在外escapeDelimiters (bool) – 如果是
True
,从元数据中删除csv文件中常用的分隔符filterMetadata (bool) – 将数据保存到,不导出在出现 self.Attributes[‘sampleMetadataNotExported’] 和 self.Attributes[‘featureMetadataNotExported’] 中的sampleMetadata 和 featureMetadata 的列的信息
detailsDict (dict) – 包含几个键:用于导出 ISATAB 的值对
## detailsDict的格式: detailsDict = { 'investigation_identifier': “i1”, 'investigation_title': "Give it a title", 'investigation_description': "Add a description", 'investigation_submission_date': "2016-11-03", 'investigation_public_release_date': "2016-11-03", 'first_name': "Noureddin", 'last_name': "Sadawi", 'affiliation': "University", 'study_filename': "my_ms_study", 'study_material_type': "Serum", 'study_identifier': "s1", 'study_title': "Give the study a title", 'study_description': "Add study description", 'study_submission_date': "2016-11-03", 'study_public_release_date': "2016-11-03", 'assay_filename': "my_ms_assay" }
Raises:
ValueError – 如果 saveFormat 无法理解
getFeatures
(featureIDs, by=None, useMasks=True)根据名称或一定的区间获得一个特征或特征列表。
如果
VariableType
是Discrete
,getFeature()
预期是一个值或值列表,并且返回匹配的特性。如果
VariableType
是Spectral
,可以传递单个元组(min、max)或元组(min、max)的列表,返回的是一个元组之间的范围的特征。如果传递的元组之间存在重叠,则会返回并集的结果。Parameters:
featureIDs – 将要返回的单个特征 ID或特征 ID 的列表
by (None or str) – 用来搜索的
featureMetadata
列名;如果是None
,将用Attributes
[‘Feature Names’]中定义的列来搜索
Returns:(featureMetadata, intensityData)
Return type:(pandas.Dataframe, numpy.ndarray)
MSDataset
class nPYc.objects.MSDataset(datapath, fileType='QI', sop='GenericMS', **kwargs)
MSDataset
扩展了 Dataset
,以表示 peak-picked LC- or DI-MS datasets(离散变量)和连续模式(光谱) 的 DI-MS datasets。
对象可以从各种常见的数据格式中进行初始化,当前,peak-picked数据是来自rogenesis QI 、 XCMS 、或者targeted Biocrates datasets。
Progenesis QI
QI 导入的是 CSV 文件,而这个文件是通过 QI 的菜单栏选项中的“Export Compound Measurements”导出的。导入需要同时存在归一化的datasets和原始的datasets,但只会导入原始的测量值(meaturenents)。
XCMS
XCMS导入的是 CSV 文件,默认情况下,这个文件中14列的特征参数,但是我们可以通过
noFeatureParams=
的关键字参数调整文件中需要的特征参数的列的数量Biocrates
Biocrates导入的是由Biocrates MetIDQ导出的电子表格。默认情况下,从名为“Data Export”的表格中加载数据,但是我们也可以通过
sheetName=
参数指定导入表达的名称。如果样本元数据的列的数量与默认值不同,可以使用noSampleParams=
修改导入的样本元数据的列的数量。
correlationToDilution
返回特征与按样本计算的稀释(dilution)的相关性,其中样本在
sampleMetadata
中被标记为“Dilution Series”,并在“Dilution”中有稀释的值Returns:特征与稀释相关性的向量(Vector of feature correlations to dilution)
Return type:numpy.ndarray
artifactualLinkageMatrix
获得得到重叠的人为特征(overlapping artifactual features)
rsdSP
根据
sampleMetadata
,对 Assay Role 是PrecisionReference
和 Sample Type 是StudyPool
的样本进行分析,返回dataset
中每一个特征的相对标准偏差( relative standard deviations)的百分比Returns:特征相对标准偏差的向量(Vector of feature RSDs)
Return type:numpy.ndarray
applyMasks
()根据
sampleMask
和featureMask
(那些设置为False
)的设置永久删除屏蔽的元素, 而这些设置是根据featureMetadata
、sampleMetadata
和intensityData
的信息来的。updateMasks
(filterSamples=True, filterFeatures=True, sampleTypes=[<SampleType.StudySample>, <SampleType.StudyPool>], assayRoles=[<AssayRole.Assay>, <AssayRole.PrecisionReference>], correlationThreshold=None, rsdThreshold=None, varianceRatio=None, withArtifactualFiltering=None, deltaMzArtifactual=None, overlapThresholdArtifactual=None, corrThresholdArtifactual=None, blankThreshold=None, aggregateRedundantFeatures=False, kwargs)根据QC参数更新
sampleMask
和featureMask
。哪些不符合分析标准的条目,
updateMasks()
将在sampleMask
或者featureMask
上设置为False
。注意:
为了避免重新引入手工排除的项目,这种方法只会将条目设置为False。因此,如果您希望从更严格的标准转移到不那么严格的集合,您将需要使用
initialiseMasks()
来重置所有的条目True。Parameters:
filterSamples (bool) – 如果是
False
,不修改 sampleMaskfilterFeatures (bool) – 如果是
False
,不修改 featureMasksampleTypes (SampleType) – 要保留的样本类型列表
assayRoles (AssayRole) – 要保留的assays roles列表
correlationThreshold (None or float) – 屏蔽相关性(correlation )低于这个值的特征。如果是
None
, 使用来自 Attributes[‘corrThreshold’] 的值rsdThreshold (None or float) – 屏蔽RSD 低于这个值的特征。如果是
None
, 使用来自 Attributes[‘rsdThreshold’] 的值varianceRatio (None or float) – 比较研究样本(study samples)中测定的RSD与在研究参考样本(study reference samples )中测定的RSD和varianceRatio*相乘的值的大小,如果小于,则屏蔽这些特征
withArtifactualFiltering (None or bool) – 如果是
None
,使用来自Attributes['artifactualFilter']
的值。如果是False
,则不执行人为信号(artifactual)的过滤。如果Attributes['artifactualFilter']
被设置为False
, 人为信号(artifactual)的过滤将不会发生,即使withArtifactualFiltering
被设置为True
.deltaMzArtifactual (None or float) – Maximum allowed m/z distance between two grouped features. If
None
, use the value from Attributes[‘deltaMzArtifactual’]overlapThresholdArtifactual (None or float) – Minimum peak overlap between two grouped features. If
None
, use the value from Attributes[‘overlapThresholdArtifactual’]corrThresholdArtifactual (None or float) – Minimum correlation between two grouped features. If
None
, use the value from Attributes[‘corrThresholdArtifactual’]blankThreshold (None**, False**, or float) – Mask features thats median intesity falls below blankThreshold x the level in the blank. If
False
do not filter, ifNone
use the cutoff from Attributes[‘blankThreshold’], otherwise us the cutoff scaling factor provided
- 感谢你赐予我前进的力量