英国生物银行数据处理库

ukbparse的Python项目详细描述


注意

ukbparse已被funpack取代,将不再 得到发展。前往https://git.fmrib.ox.ac.uk/fsl/ukbparse进行 更多信息。

https://img.shields.io/pypi/v/ukbparse.svghttps://anaconda.org/conda-forge/ukbparse/badges/version.svghttps://zenodo.org/badge/DOI/10.5281/zenodo.1997626.svghttps://git.fmrib.ox.ac.uk/fsl/ukbparse/badges/master/coverage.svg

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使Eclipse在其控制台中显示最顶层的异常,而不是完整的堆栈跟踪   java如何为一个组件提供多个DropTargetListener?   在Eclipse包资源管理器中,有些文件不可见?   java在Spring Boot中使用@Bean配置设置类属性的默认值   在JTextPane中使用#链接的Java HTML?   java当应用程序打开时,如何将通知内容发送给活动?   java Android ROOM如何编写包含多个实体的查询,这是在哪里完成的?   Play Framework的java登录/注销问题?   java如何从安卓 Cordova/Phonegap调用javascript函数   JavaFX8如何在Java8中显示上次修改的LocalDateTime?   javabean验证中的多个约束注释   java使用JSTL设置请求属性   java在Android启动的服务中调用函数   用于检查xml是否包含键和值的java XPath表达式   在java游戏中使用斜坡因子挥杆   Java文件:尝试使用FileWriter将结果附加到已经存在的文件中   bootclasspath Java Xbootclasspath,相对路径   java我如何让这个“怪物战斗模拟器”工作?   swing使用动作侦听器隐藏和显示java桌面应用程序