英国生物银行数据处理库
ukbparse的Python项目详细描述
注意
ukbparse已被funpack取代,将不再 得到发展。前往https://git.fmrib.ox.ac.uk/fsl/ukbparse进行 更多信息。
ukbparse是一个python库,用于预处理英国biobank数据。
^{tt1}$ is developed at the Wellcome Centre for Integrative Neuroimaging (WIN@FMRIB), University of Oxford. ^{tt1}$ is in no way endorsed, sanctioned, or validated by the UK BioBank.
^{tt1}$ comes bundled with metadata about the variables present in UK BioBank data sets. This metadata can be obtained from the UK BioBank online data showcase
安装
通过pip安装ukbparse:
pip install ukbparse
或来自conda-forge:
conda install -c conda-forge ukbparse
入门笔记本
ukbparse_demo命令将启动一个jupyter笔记本,其中介绍 ukbparse提供的主要功能。要运行它,您需要安装 几乎没有其他依赖项:
pip install ukbparse[demo]
然后,可以通过运行ukbparse_demo启动演示。
注意
入门笔记本使用bash,因此不太可能使用 窗户。
用法
一般用法如下:
ukbparse [options] output.tsv input1.tsv input2.tsv
您可以通过键入ukbparse --help获得所有选项的信息。
选项可以在命令行中指定,和/或存储在配置中 文件。例如,以下命令行中的选项:
ukbparse \ --overwrite \ --import_all \ --log_file log.txt \ --icd10_map_file icd_codes.tsv \ --category 10 \ --category 11 \ output.tsv input1.tsv input2.tsv
可以存储在配置文件config.txt:
overwrite import_all log_file log.txt icd10_map_file icd_codes.tsv category 10 category 11
然后执行如下操作:
ukbparse -cfg config.txt output.tsv input1.tsv input2.tsv
定制
ukbparse包含大量的内置规则 专门为预处理英国生物银行数据变量而编写。这些规则是 存储在以下文件中:
- ^{tt16}$: Cleaning rules for individual variables
- ^{tt17}$: Cleaning rules for data codings
- ^{tt18}$: Cleaning rules for specific types
- ^{tt19}$: Processing steps
您可以根据需要自定义或替换这些文件。你也可以通过 通过--variable_file将这些文件的您自己的版本发送到ukbparse, --datacoding_file、--type_file和--processing_file命令行 分别选择。ukbparse将加载所有变量和数据编码文件, 并将它们合并到一个表中,其中包含每个表的清理规则 变量。
最后,可以使用--no_builtins选项绕过 内置的清洁和处理规则。
输出
ukbparse的主要输出是一个纯文本制表符分隔的[*]\ 包含在清理和处理之后的输入数据,可能是 删除了一些列,添加了新列。
如果使用--non_numeric_file选项,则主输出文件将仅 包含数字列;非数字列将保存到单独的 文件。
您可以使用自己选择的任何工具加载此输出文件,例如python, Matlab或Excel。也可以将输出传递回 ukbparse。
[*] | You can change the delimiter via the ^{tt30}$ / ^{tt31}$ option. |
将输出加载到Matlab
如果您使用的是Matlab,则有几个选项可用于加载^{TT1}$ 输出。最好的选项是^{tt33}$,它将加载列名,并且 将同时处理非数字数据和缺少的值。使用readtablelike 所以:
data = readtable('out.tsv', 'FileType', 'text');
readtable函数返回一个^{tt36}$对象,该对象存储每个列 作为单独的向量(或非数值列的单元格数组)。如果你只是 对数字列感兴趣,您可以将其作为如下数组来检索:
rawdata = data(:, vartype('numeric')).Variables;
readtable函数可能会重命名列名以确保 它们是有效的Matlab标识符。你可以找回原稿 来自table对象的名称如下:
colnames = data.Properties.VariableDescriptions; colnames = regexp(colnames, '''(.+)''', 'tokens', 'once'); empty = cellfun(@isempty, colnames); colnames(empty) = data.Properties.VariableNames(empty); colnames = vertcat(colnames{:});
如果使用了--description_file选项,则可以在 各栏说明如下:
descs = readtable('descriptions.tsv', ... 'FileType', 'text', ... 'Delimiter', '\t', ... 'ReadVariableNames',false); descs = [descs; {'eid', 'ID'}]; idxs = cellfun(@(x) find(strcmp(descs.Var1, x)), colnames, ... 'UniformOutput', false); idxs = cell2mat(idxs); descs = descs.Var2(idxs);
测试
要运行测试套件,您需要安装一些附加依赖项:
pip install ukbparse[test]
然后可以使用pytest:
运行测试套件pytest
引用
如果您想引用ukbparse,请参考其Zenodo page。