Aki-Predictor实验之MIMIC-III数据集导入本地postgres数据库

实验github地址:GitHub - ExaScience/Aki-Predictor

数据集地址(全量的,demo数据集上面的github里有介绍):MIMIC-III Clinical Database v1.4 (physionet.org)

数据集导入本地postgresSQL数据库的官方教程:在 Windows 上的本地 Postgres 数据库中安装 MIMIC-III |模仿 (mit.edu)

首先看官方教程,先完成数据和脚本的下载

  1. 下载 MIMIC-III 临床数据库(有关获得访问权限的详细信息,请参阅此处)。
  2. 将MIMIC-III临床数据库提取为本地计算机上某个位置的.csv文件。
  3. 这里下载 PostgreSQL 脚本 - 只需要以结尾的文件.sql

以下默认已经装好了postgresSQL,下好了6.2G的MIMIC-III数据集以及sql脚本

首先将postgresSQL服务启动,如图

windows搜索框搜索SQL shell,打开,然后三个回车,接着输入用户名和密码(我的都为postgres)

然后大部分就是执行官方给出的步骤

运行以下命令:(此处数据库名为mimic1)

DROP DATABASE IF EXISTS mimic1;
CREATE DATABASE mimic1 OWNER postgres;

执行结果如下

接下来,连接到数据库mimic1

\c mimic1;

然后官方给出的创建SCHEMA这步可以跳过,因为我执行了这一步后期会报错。

目前的状态是:

然后创建表格,需要执行下载好的脚本,我的路径是这样的(千万注意!路径复制后还要把斜杠换成这种!要不会出现permission  denied)

\i E:/mimic2postgres_sql/postgres_create_tables.sql

执行完后为下面的,这种报错是正常的

准备将数据加载到表中

首先,让我们通过指定运行几个命令来准备加载数据:

此命令告诉脚本在出现任何错误时停止执行:我们宁愿在出现错误时停止,这样我们就知道我们的数据库尚未完全加载。

\set ON_ERROR_STOP 1

此命令指定包含数据的文件夹,(注意文件路径中的斜杠方向!)

\set mimic_data_dir 'E:/mimic-iii-clinical-database-1.4'

然后根据数据集的压缩情况和解压缩软件的不同,运行不同的sql脚本

我导入的是全量的MIMIC-III数据(6.2G),默认文件夹里面是压缩的文件,而且我的解压缩软件

是7zip,所以我运行以下代码(注意把7zip的安装路径加入系统变量path,否则运行脚本时会报7zip的错),此过程需要耐心等待,大概4-6个小时。

\i E:/mimic2postgres_sql/postgres_load_data_7zip.sql

通常,在打印以下三行后,加载会出现暂停:

COPY 58976
COPY 34499
COPY 7567

这是意料之中的 - 第四个表是 chartevents,是迄今为止最大的表,因此加载时间最长。 另请注意,最终第四行将显示为0 。这是意料之中的:CHARTEVENTS 充当多个子表的“映射”表,并且其中实际上没有存储任何数据,因此 postgres 报告插入了 0 行。这是预期的行为,稍后我们将运行检查以验证所有数据是否已加载。

完成后是这样的:

构建索引

加载完成后,建议安装索引以提高数据库查询速度。 运行以下命令:

\i E:/mimic2postgres_sql/postgres_add_indexes.sql

运行后是这样的:

测试生成

您现在应该可以查询 MIMIC-III!请尝试以下简单查询:

select
  icustay_id, intime, outtime
from icustays
limit 10;

在pgAdmin图形界面查询,可以查到数据。

要验证所有加载是否正确,您可以运行检查脚本:

\i E:/mimic2postgres_sql/postgres_checks.sql

下图可以看到全部通过,至此MIMIC-III数据集已经导入postgres数据库。

后续还需要利用github的AKI-Predictor中的脚本处理数据,分别是:

执行python aki-postgres.py,从 MIMIC III 表中提取 AKI 患者数据。

其中部分代码的作用:

  • get_comorbidities:此查询提取患者入住ICU时的合并症清单。
  • get_vitals_chart:此查询提取患者入住首个7天内的生命体征数据。
  • get_labevents:此查询提取患者入住首个7天内的实验室数值。
  • kidigo_7_days_creatinine:此查询基于肌酐特征检查患者是否在ICU首个7天内根据KDIGO指南患有AKI。
  • kidigo_7_days:此查询基于肌酐和尿液特征检查患者是否在ICU首个7天内根据KDIGO指南患有AKI。

执行python aki-preprocess.py以清理和预处理从数据提取步骤生成的 csv 文件。

其中部分代码的作用:

  • check_AKI_before:检查患者在入院前是否患有AKI。
  • get_info_admissions:选择有关入院的信息。
  • check_CKD:检查患者在入院前是否患有慢性肾脏病。
  • calculate_eGFR_MDRD_equation:计算经估算的肾小球滤过率的最小值。

做完以上操作就可以运行机器学习模型:执行python aki-ml.py 。该模型是一组多层感知器。我们使用超参数调优来找到最佳架构(15 层深度学习网络)。我们遵循 80% 的训练 - 20% 的测试数据划分,并进行了五倍交叉验证。根据 83 个特征开发了我们的模型,这些特征参考了使用上述脚本提取的常规收集的临床参数。

  • run_aki_model:预测患者是否在入住的头7天内发生AKI,以及根据KIDIGO指南确定AKI的阶段。
  • cluster_ethnicity:按种族对数据进行子集划分:在“高加索人”(所有变种)上进行训练,并对所有其他种族进行预测。
  • change_data_size:对可用的训练数据进行随机子采样。
  • cluster_drift:按电子病历系统对数据进行子集划分:在2008年之前的数据上进行训练,并在2008年之后的子集上进行测试,忽略同时出现在两个系统中的患者。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值