MIMIC-CXR数据集加载及配置

MIMIC-CXR数据集文件目录格式
- MIMIC-CXR
    - mimic-cxr-2.0.0-metadata.csv
        - mimic-cxr-2.0.0-metadata.csv
    - mimic-cxr-2.0.0-split.csv
        - mimic-cxr-2.0.0-split.csv
    - mimic-cxr-images
        - files
            - p10
                 - p10000032

                         - s50414267

                                - 4a0397d2-1c7cac8d-bd1e1991-d3459191-3e510506.jpg

                                ...

                        ...
                 ...
            - p11
            ...
            - p19
    - mimic-cxr-reports
        - files
            - p10

                 - p10000032

                         - s50414267.txt

                        ...

                ...

            - p11
            ...
            - p19

mimic-cxr-2.0.0-metadata.csv文件内容:

mimic-cxr-2.0.0-split.csv文件内容

其中 dicom_id:图片名;s+study_id:图片的上级目录(病人在不同时期的检查);p+subject_id:图片的上上级目录也是病人的编码(这个文件夹内是这位病人在不同时期做的检查);split:分为train、validate和test

我的项目中需要图像以及图像的文本描述,所以我们要做的就是提取对应文件夹下的图像以及他的描述性文本,具体操作如下:

导入要用的库:

import csv
from collections import defaultdict
import chardet
from PIL import Image
import os

图像加载及文本加载:

# 使用Pillow库加载一张图片,并将其转换为RGB模式
def pil_loader(path):
    with open(path, 'rb') as f:
        img = Image.open(f)
        return img.convert('RGB')
# 找到txt文件中文本描述部分
def mimix_reports_loader(path_reports):
    with open(path_reports, 'r') as file:
        content = file.read()
        start_index_findings = content.find('FINDINGS:') + len('FINDINGS:')
        end_index_findings = content.find('IMPRESSION:')
        findings_text = content[start_index_findings:end_index_findings].replace('\n', '').strip()

    return findings_text

定义一个名为DatasetProcessor的类用来加载数据集:
 

class DatasetProcessor:
    def __init__(self, dataset, metadata):
        self.dataset = dataset
        self.metadata = metadata
        self.samples = []

    def process_dataset(self):
        if self.dataset == 'mimic-cxr':
            samples = defaultdict(list)
            with open(metadata, 'rb') as f:
            # 使用chardet检测文件编码格式
                file_content = f.read()
                encoding = chardet.detect(file_content)['encoding']
            with open(self.metadata, mode='r', encoding=encoding) as f:
                reader = csv.DictReader((line.replace('\0', '') for line in f))
                print(reader.fieldnames)  # 打印列名
                for row in reader:
                    if row['split'] == 'train':  # 仅处理split为train的样本
                        key = (row['dicom_id'], row['study_id'], row['subject_id'], row['split'])
                        samples[key].append(None)  # 添加一个空值作为占位符
                    
                self.samples = list(samples.keys())  # 仅保存键值对的键

这里我只需要用训练集,所以只加载了train

设置文件路径:

# metadata是mimix数据集的CSV文件路径
metadata = '/.../MIMIC-CXR/mimic-cxr-2.0.0-split/mimic-cxr-2.0.0-split.csv'
# root是mimix数据集路径
root = "/.../data/MIMIC-CXR"

输出:

# 创建数据集处理器实例
processor = DatasetProcessor('mimic-cxr', metadata)

# 处理数据集
processor.process_dataset()

# 输出
for i in range(len(processor.samples)):
    dicom_id, study_id, subject_id, split = processor.samples[i]
    print(f"dicom_id: {dicom_id}, study_id: {study_id}, subject_id: {subject_id}, split: {split}")
    
    path = os.path.join(root, 'mimic-cxr-images/files', f'p{subject_id[:2]}', f'p{subject_id}', f's{study_id}', f"{dicom_id}.jpg")
    img = pil_loader(path)
    img.show()  # 显示图片
    path_reports = os.path.join(root, 'mimic-cxr-reports/files', f'p{subject_id[:2]}', f'p{subject_id}', f"s{study_id}.txt")
    caption = mimix_reports_loader(path_reports)
    print(caption)

输出结果:

这里我修改了mimic-cxr-2.0.0-split.csv文件,只留下了三个数据以便于展示。

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
MIMIC-IV是一份医疗数据集,包含了大规模的多模态(诊断、手术、实验室检验结果等)的持续监测数据。该数据集是通过开放存取权限取得的,并且在假名化的情况下提供给研究人员使用。 MIMIC-IV数据集的目标是促进医疗研究的发展。它包含了来自美国波士顿市的波士顿儿童医院和波士顿岁丰医院的数据。这些数据可用于进行各种类型的研究,如疾病模型构建、机器学习算法的开发等。使用者可以通过提出请求并接受数据使用许可证来获取MIMIC-IV数据集。 在使用MIMIC-IV数据集时,需要注意一些保密和隐私方面的问题。由于数据含有患者的敏感信息,包括姓名、家庭住址等,因此使用者需要严格遵守数据使用规则。在进行研究时,应保持对患者个人隐私的尊重,并采取相应的安全措施确保数据不会被滥用或泄露。 此外,为了更好的利用MIMIC-IV数据集,使用者需要具备一定的医学和数据分析知识。因为该数据集提供了大量的多模态数据,正确解释和分析这些信息需要具备相关的领域知识。同时,对于数据的预处理和清洗也需要具备数据分析技巧。 总之,MIMIC-IV是一份丰富的医疗数据集,可以支持各种类型的研究。但是,在使用该数据集时,需要遵守相关的规则和保护患者隐私的原则,同时具备医学和数据分析的知识。通过正确使用MIMIC-IV数据集,研究人员可以为医疗领域的发展和人类健康做出更多的贡献。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值