【Colab代码调试】End-to-end reproducible AI pipelines in radiology using the cloud

文章目录

    • 报错MessageError: Error: credential propagation was unsuccessful
      • 解决办法
      • 原理
    • 找不到GPU
      • 解决办法
    • 关于文件结构
      • RTSTRUCT是什么
      • nrrd是什么格式
    • !gcloud config set project $GCP_PROJECT_ID
    • 报错Access Denied: User does not have bigquery.jobs.create permission
      • 解决办法
      • BigQuery访问公开数据集的原理
      • 数据集展示
    • Use SimpleITK to inspect the resampled volumes

第一在Colab上运行代码: https://colab.research.google.com/github/ImagingDataCommons/idc-radiomics-reproducibility/blob/main/notebooks/hosny_processing_example.ipynb#scrollTo=1ZXwYFoEuRM6

报错MessageError: Error: credential propagation was unsuccessful

解决办法

from google.colab import auth
auth.authenticate_user()

报错:MessageError: Error: credential propagation was unsuccessful
解决办法:将google Colaboratory Runtimes可以访问的权限都勾选上,再运行就不会报错了
参考链接:https://github.com/googlecolab/colabtools/issues/4343
在这里插入图片描述
翻译:我在尝试只允许我认为可能需要的权限时遇到了同样的问题。一旦我点击了启用全部选项,它就起作用了。

原理

from google.colab import auth
auth.authenticate_user()

这段代码是用于在 Google Colaboratory(Colab)环境中进行用户身份验证的。Colab 是一个免费的 Jupyter 笔记本环境,由 Google 提供,允许用户编写和执行代码,同时利用 Google Cloud Platform 的计算资源。
from google.colab import auth:这行代码从 Colab 的库中导入了 auth 模块。auth 模块包含了用于处理身份验证和授权的功能。
auth.authenticate_user():这行代码调用 auth 模块中的 authenticate_user() 函数。这个函数会启动一个身份验证流程,通常是通过弹出一个窗口来提示用户登录其 Google 账户。用户需要在这个弹出的窗口中输入他们的 Google 账户凭据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当用户成功登录后,Colab 笔记本将获得授权,可以访问那些需要用户权限的 Google 服务,比如 Google Drive。这样,用户就可以直接从 Colab 笔记本中读写 Google Drive 上的文件。

在执行需要访问用户个人数据或服务的代码之前,通常需要先执行这段身份验证代码。例如,如果你的 Colab 笔记本需要从用户的 Google Drive 中读取数据文件,或者需要将结果保存到用户的 Drive 上,那么在进行这些操作之前,你需要确保已经通过 auth.authenticate_user() 进行了身份验证。

找不到GPU

# check wether the use of a GPU was correctly enabled
gpu_list = !nvidia-smi --list-gpushas_gpu = False if "not found" in gpu_list[0] else True

print(has_gpu)返回false

解决办法

在这里插入图片描述

没有配置硬件加速器为GPU当然找不到GPU啦~

在这里插入图片描述

关于文件结构

在这里插入图片描述

  • the download folder will store the .dcm files cross-loaded from the buckets, without a defined structure.
  • The sorted folder, on the contrary, stores the output of the sorting process through dicomsort (details on dicomsort follow later in the notebook).
  • The processed folder stores the result of the different processing and pre-processing steps, such as conversion from DICOM to NRRD and resampling
  • the model_input and cropped_masks folder store, respectively, the subvolumes the pipeline uses for predicting survival and the corresponding segmentation mask (exported mainly for visualization purposes)

在这里插入图片描述

RTSTRUCT是什么

RTSTRUCT:在医学影像领域,RTSTRUCT 是一种特殊的 DICOM (Digital Imaging and Communications in Medicine) 文件格式,用于存储放射治疗的结构集信息。

RTSTRUC一般包含:

  • 轮廓数据:医生或放射治疗师在影像上绘制的轮廓,用于定义肿瘤(GTV - 肿瘤体积)、临床目标体积(CTV - 临床目标体积)、计划目标体积(PTV - 计划目标体积)以及需要保护的正常组织和器官。
  • 剂量体积直方图:与结构集相关的剂量分布信息,用于评估治疗计划的质量。
  • 其他放射治疗相关信息:可能包括治疗计划的详细信息,如射束方向、能量、剂量等。

RTSTRUCT 文件使得放射治疗团队能够可视化和量化治疗区域,确保治疗的精确性,同时最大限度地减少对周围正常组织的损伤。这些文件通常与 RTDOSE(用于存储剂量分布的 DICOM 文件)一起使用,以实现放射治疗计划的优化。

nrrd是什么格式

NRRD(Nearly Raw Raster Data)是一种用于存储三维多维影像数据的文件格式,它被广泛用于医学成像和科学可视化领域。NRRD格式由美国芝加哥大学(The University of Chicago)开发,特别适用于存储体数据(volume data),例如医学成像中的CT(计算机断层扫描)MRI(磁共振成像)数据

医学影像文件格式Value
NIfTI (.nii)神经影像学研究,功能磁共振成像(fMRI)、结构磁共振成像(sMRI)和正电子发射断层扫描(PET)。包含一个头文件(.nii)和一个数据文件(.img),头文件描述了数据的元数据,而数据文件包含了实际的图像数据。
NRRD (.nrrd)适用于各种类型的三维或多维图像数据,NRRD 文件包含一个文本头文件,描述了数据的维度、数据类型和元数据,后跟实际的图像数据。
DICOM (.dcm)医学影像的国际标准,广泛用于临床环境,包括放射科、核医学和心脏病学等,DICOM 文件包含图像数据和大量的元数据,如患者信息、扫描参数、设备信息等。

总结:

  • NIfTI 主要用于神经影像学研究,NRRD 更通用,适用于各种医学影像数据,而 DICOM 用于临床环境和医院信息系统
  • NIfTI 和 NRRD 都支持多维数据,但 NRRD 更加灵活,可以处理任意维度的数据。DICOM 文件则包含更详细的临床和设备信息。
  • NIfTI 和 NRRD 支持数据压缩,有助于减少文件大小,而 DICOM 文件通常不压缩,以确保图像质量。
  • DICOM 文件包含最详细的元数据,包括患者信息和扫描参数,而 NIfTI 和 NRRD 则侧重于图像数据和相关的技术参数。

!gcloud config set project $GCP_PROJECT_ID

是将当前 Colab 会话的默认项目设置为你的 Google Cloud Platform 项目。这样,当你运行其他 gcloud 命令时,它们将与你指定的项目相关联。这在处理与特定项目相关的资源(如存储桶、数据集等)时非常有用。

WARNING: [verse.armour@gmail.com] does not have permission to access projects instance [idc-sandbox-000] (or it may not exist): The caller does not have permission. This command is authenticated as verse.armour@gmail.com which is the active account specified by the [core/account] property Are you sure you wish to set property [core/project] to idc-sandbox-000?

Do you want to continue (Y/n)? Y

Updated property [core/project].

报错Access Denied: User does not have bigquery.jobs.create permission

具体报错信息:
ERROR:403 POST https://bigquery.googleapis.com/bigquery/v2/projects/idc-sandbox-000/jobs?prettyPrint=false: Access Denied: Project idc-sandbox-000: User does not have bigquery.jobs.create permission in project idc-sandbox-000.
Location: None
Job ID: 9f15e4e0-2358-4e3b-bcee-c34ea7a0666e

# initialize this variable with your Google Cloud Project ID!
my_ProjectID = "idc-sandbox-000"import os
os.environ["GCP_PROJECT_ID"] = my_ProjectID!gcloud config set project $GCP_PROJECT_ID

解决办法

出现这个问题主要是因为我自己没有很清楚BigQuery的工作原理。
只需要在google cloud上面创建一个名为my_ProjectID的项目即可。
一开始google cloud上面没有这个项目,自然就没有访问权限了。创建一个即可。
tips:项目名称和项目ID不是一个东西。
在这里插入图片描述
代码里面应该改成项目ID。

在 Google Cloud Platform (GCP)中,当你创建一个项目时,你会给它指定一个项目名称,但系统还会自动生成一个唯一的项目ID。项目ID是用于程序化操作的标识符,它在整个Google Cloud 中必须是唯一的。项目名称可以更改,但项目ID一旦创建就不能更改。

# initialize this variable with your Google Cloud Project ID!
my_ProjectID = "idc-sandbox-000-435408"import os
os.environ["GCP_PROJECT_ID"] = my_ProjectID!gcloud config set project $GCP_PROJECT_ID

在这里插入图片描述
From the cohort DataFrame we parsed, we can get additional information on PatientID, SeriesInstanceUID, and so on. For example:

patients_list = np.unique(cohort_df["PatientID"].values).tolist()
print(patients_list[:5])

在这里插入图片描述

BigQuery访问公开数据集的原理

Google BigQuery 是 Google Cloud Platform (GCP) 上的一项服务,它专门用于数据仓库和分析。而一个 Google Cloud 项目(Project)是 GCP 的基本构建块,用于组织资源、启用服务和控制权限。

在某些开发环境(如 Google Colab 或本地开发环境)中,你可能需要设置一个默认项目,这样当你执行 BigQuery 操作时,系统知道应该在哪个项目上下文中执行。

!gcloud config set project $GCP_PROJECT_ID

数据集展示

display(subcohort_df.info())

在这里插入图片描述

display(subcohort_df.head())

在这里插入图片描述

  • Patient ID:患者的唯一标识符或医疗记录号
  • StudyInstanceUID:代表一个医学影像研究的唯一标识符,通常在DICOM(数字成像和通信医学)标准中使用。
  • SeriesInstanceUID:代表医学影像系列的唯一标识符,一个研究可能包含多个系列。
  • SOPInstanceUID:代表单一医学影像对象(如CT或MRI图像)的唯一标识符。
  • gcs_url:代表Google Cloud Storage(GCS)中的URL,这通常是指向存储在GCS上的医学影像文件的链接。

Use SimpleITK to inspect the resampled volumes

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 比较对象新思路,利用反射技术打造更灵活的比较工具

前言 嘿,大家好!如果你之前看过我分享的文章《C# 7个方法比较两个对象是否相等》,你可能会意识到对象比较在实际业务中经常出现的场景。今天,我想继续与大家分享一个在实际项目中遇到的问题。 有一次,我接手了一个别…

个人健康信息系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,健康分析师管理,健康手册管理,健康饮食管理,系统管理 微信端账号功能包括:系统首页,健康手册,健康饮食&…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点,苹果新品发布会如期举行,全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机,在第二代3nm工艺A18和A18 Pro芯片的加持下,iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组(变成类似list列表的形状)重复一个数组——np.tile 分组聚集——pandas.…

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日,中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话:悟空》正式上线,并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中,有人说他的成功在于对《西游记》为背景进行改编,对原著进行了分析…

数据分析与挖掘课程相关资源

这是在gitee上整的关于这门课的一个开源项目。 https://gitee.com/rainpet/python-data-analysis-and-mining-demo 头歌平台。 常见问题: 1、如何确认conda的版本,执行如下命令: conda list anaconda$2、实验室登陆后,无法上网&a…

基于Java+SpringBoot+Vue+MySQL的智能菜谱推荐管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的智能菜谱推荐管理系统【附源码文档】、…

“汉语新解” Prompt新高度,火爆的李继刚

“汉语新解” prompt 是由李继刚设计的一个用于启发人工智能模型进行创意性文本生成的指令模板。这个 prompt 的设计初衷是为了让AI能够以一种独特的方式解析和重新诠释常见的中文词汇,从而产生出具有深刻洞察力和幽默感的文本内容,仿佛是由鲁迅或林语堂…

装杯 之 Linux 指令1

hello,欢迎来到linux世界,在害没有学习linux时,看到别人操作,网课,真高级,感觉好厉害,就是说白了,看起来牛逼。ok,接下来,请大佬们进入linux之旅。 1.ls指令…

mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析

mfc140u.dll是 Microsoft Foundation Class (MFC) 库的一部分,通常与 Visual Studio 2015 及其后续版本相关联。如果系统中缺少 mfc140u.dll,可能会导致依赖该库的应用程序无法启动,并显示错误消息,如“程序无法启动,因…

分类预测|基于麻雀优化支持向量机的Adaboost集成的数据分类预测Matlab程序SSA-SVM-Adaboost

分类预测|基于麻雀优化支持向量机的Adaboost集成的数据分类预测Matlab程序SSA-SVM-Adaboost 文章目录 一、基本原理SSA-SVM-Adaboost 分类预测原理和流程总结 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 SSA-SVM-Adaboost 分类预测原理和流程 1. 麻雀优化算…

开源FormCreate低代码表单组件的配置项和事件的详解

在使用开源FormCreate低代码表单时,您可以通过各种 props 来定制表单的行为和外观。这些参数允许您控制表单的生成规则、配置选项、双向数据绑定等,为复杂的表单场景提供了强大的支持。 源码地址: Github | Gitee FormCreate组件Props 以下是常用的 pr…

由于安装nvm 引发的vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

🎈亲爱的读者朋友们: 如果你觉得这篇文章对你有所帮助,恳请你为我点个赞👍。你的每一个赞都是对我辛勤创作的认可,是我继续前行的动力源泉。 同时,也欢迎你关注我的 CSDN 博客。在这里,我会持续…

探索数据可视化的奥秘:Seaborn库的魔力

文章目录 探索数据可视化的奥秘:Seaborn库的魔力背景:为何选择Seaborn?Seaborn是什么?如何安装Seaborn?简单函数介绍与示例场景应用示例常见问题与解决方案总结 探索数据可视化的奥秘:Seaborn库的魔力 背景…

深度剖析iOS渲染

iOS App 图形图像渲染的基本流程: 1.CPU:完成对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制。 2.GPU:GPU拿到CPU计算好的显示内容,完成纹理的渲染, 渲染完成后将渲…

c# Csv文件读写示例,如果文件存在追加写入

功能 1.写入 2.读取 导出文件效果 调用示例 注意示例中的ToDataTable()方法是自己的封装的扩展方法&#xff0c;源码在集合扩展方法-CSDN博客 private List<MarkDataModel> createMarkDataList(int count){var markDataModels new List<MarkDataModel>();for (…

RTMP播放器延迟最低可以做到多少?

技术背景 RTMP播放器的延迟可以受到多种因素的影响&#xff0c;包括网络状况、推流设置、播放器配置以及CDN分发等。因此&#xff0c;RTMP播放器的延迟并不是一个固定的数值&#xff0c;而是可以在一定范围内变化的。 正常情况下&#xff0c;网上大多看到的&#xff0c;针对R…

小琳AI课堂:LLaMA 3.1 开源大模型的全新里程碑

引言 大家好&#xff0c;这里是小琳AI课堂&#xff01;今天我们要聊的是Meta最新发布的开源大模型LLaMA 3.1。这个版本在AI界掀起了不小的波澜&#xff0c;不仅在参数规模上有显著提升&#xff0c;还在多项性能上实现了突破。让我们一起来看看LLaMA 3.1带来的新变化和意义吧&a…

爆改YOLOv8|利用SCConv改进yolov8-即轻量又涨点

1&#xff0c;本文介绍 SCConv&#xff08;空间和通道重构卷积&#xff09;是一种高效的卷积模块&#xff0c;旨在优化卷积神经网络&#xff08;CNN&#xff09;的性能&#xff0c;通过减少空间和通道的冗余来降低计算资源的消耗。该模块由两个核心组件构成&#xff1a; 空间重…

PHP轻量级高性能HTTP服务框架 - webman

摘要 webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构&#xff0c;提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站&#xff0c;也可以开发 HTTP 接口或者微服务。 除此之外&#xff0c;webman 还支持自定义进程&am…