TOAD: ارزیابی منشاء تومور از طریق یادگیری عمیق
در این کار پیشنهاد می کنیم از آسیب شناسی محاسباتی چند کاره با نظارت ضعیف برای کمک به تشخیص افتراقی سرطانهای اولیه ناشناخته (CUP) استفاده کنیم. CUP ها 1-2٪ از همه سرطان ها را شامل می شوند و پیش آگهی ضعیفی دارند زیرا درمان مدرن سرطان مخصوص موارد اولیه است. ما TOAD (ارزیابی منشاء تومور از طریق یادگیری عمیق) را برای پیش بینی منشا اولیه این تومورها از تصاویر H&E بدون استفاده از ایمونوهیستوشیمی، آزمایش مولکولی یا همبستگی بالینی ارائه می دهیم. مدل ما روی 22833 تصویر اسلاید تشخیصی گیگاپیکسلی (WSI) از 18 منشاء اولیه سرطان اولیه آموزش دیده و بر روی مجموعه ای از 6،499 (WSI) و یک مجموعه خارجی 682 WSI از 200+ موسسه آزمایش شده است. علاوه بر این، ما مجموعه داده ای چند موسسه ای بزرگ از 743 مورد CUP را که در 150+ مرکز پزشکی مختلف سرچشمه گرفته بود، تنظیم کردیم و مدل خود را در زیر مجموعه 317 مورد که برای آنها یک دیفرانسیل اولیه بر اساس شواهد آزمایش گسترده IHC ، رادیولوژی و/یا تعیین هم بستگی کلینیکی شده بود، اعتبارسنجی کردیم.
پیش نیازها:
لینوکس (تست شده در اوبونتو 18.04)
GPU NVIDIA (تست شده بر روی Nvidia GeForce RTX 2080 Ti x 16)
Python (3.7.7), h5py (2.10.0), matplotlib (3.1.1), numpy (1.18.1), opencv-python (4.1.1), openslide-python (1.1.1), openslide (3.4.1), pandas (1.0.3), pillow (7.0.0), PyTorch (1.5.1), scikit-learn (0.22.1), scipy (1.3.1), tensorflow (1.14.0), tensorboardx (1.9), torchvision (0.6).
راهنمای نصب برای لینوکس (با استفاده از anaconda)
راهنمای نصب CLAM
برای دستورالعمل نصب آناکوندا بر روی دستگاه خود (توزیع همراه با پایتون 3 را بارگیری کنید):
پس از راه اندازی anaconda ، ابتدا installlide را نصب کنید:
sudo apt-get install windowslide-tools
در مرحله بعد ، از فایل پیکربندی محیط واقع در docs/clam.yaml برای ایجاد یک محیط conda استفاده کنید:
conda env create -n clam -f docs/clam.yaml
فعال کردن محیط:
conda activation clam
پس از ورود به محیط ایجاد شده ، برای نصب smooth-topk (ابتدا سی دی را در محلی که خارج از پوشه پروژه است و برای شبیه سازی مخازن جدید git مناسب است):
cd smooth-topk
python setup.py install
پس از انجام آزمایشات ، برای غیرفعال کردن محیط:
conda را غیر فعال کنید
استفاده از فایل های .svs:
توجه داشته باشید که CLAM از openlide استفاده می کند که به کتابخانه pixman متکی است و pixman نسخه 0.38 دارای یک نقص شناخته شده است که باعث می شود برخی از فایل های .svs نادرست خوانده شوند. برای مثال، بحث و راهکارهای احتمالی اینجا[1] را ببینید (راه حل دقیق بسته به نحوه تنظیم محیط آپارتمان شما ممکن است متفاوت باشد).
آسیب شناسی محاسباتی مبتنی بر یادگیری عمیق، منشاء سرطانهای ناشناخته اولیه را پیش بینی می کند
سرطان اولیه ناشناخته[2] (CUP) یک گروه معمای تشخیص است که در آن محل آناتومیکی اولیه منشا تومور مشخص نمی شود. این یک چالش مهم است زیرا درمانهای مدرن مانند رژیم شیمی درمانی و مهارکننده های بازرسی ایمنی مخصوص تومور اولیه هستند. کارهای اخیر بر استفاده از ژنومیک و ترانسکریپتومیکس برای شناسایی منشا تومور متمرکز شده است. با این حال، آزمایش ژنومیک برای هر بیمار انجام نمی شود و فاقد نفوذ بالینی در شرایط کم منابع است. برای غلبه بر این چالش ها، یک الگوریتم آسیب شناسی محاسباتی مبتنی بر یادگیری عمیق-TOAD-ارائه می دهیم که می تواند با استفاده از اسلایدهای بافت شناسی معمول به دست آمده، تشخیص متفاوتی برای CUP ارائه دهد. ما از 17،486 تصویر اسلاید کامل با مقدماتی شناخته شده در 18 منشاء مشترک استفاده کردیم تا یک مدل عمیق چند کاره را آموزش دهیم تا همزمان تومور را اولیه یا متاستاتیک تشخیص داده و محل منشأ آن را پیش بینی کنیم. ما مدل خود را بر روی یک مجموعه آزمایشی داخلی از 4،932 مورد با مقدماتی شناخته شده آزمایش کردیم و به دقت 1 از 0.84، از بالا از 3 از 0.94 دست یافتیم، در حالی که در مجموعه آزمایش خارجی ما از 662 مورد از 202 بیمارستان مختلف، به بالاترین حد دست یافتیم. دقت top-1 و top-3 به ترتیب 0.79 و 0.93 است. ما همچنین مجموعه داده ای از 717 مورد CUP را از 151 مرکز پزشکی مختلف تهیه کردیم و زیرمجموعه ای از 290 مورد را شناسایی کردیم که تشخیص افتراقی برای آنها تعیین شده بود. پیش بینی های مدل ما منجر به مطابقت 50٪ موارد (\ k {appa} = 0.4 در صورت تنظیم تصادفی برای توافق) و top-3 توافق برتر 75٪ شد. روش پیشنهادی ما می تواند به عنوان یک ابزار کمکی برای تعیین تشخیص افتراقی در موارد پیچیده متاستاتیک و CUP مورد استفاده قرار گیرد و می تواند همراه یا به جای تجزیه و تحلیل ایمونوهیستوشیمی و اقدامات تشخیصی گسترده برای کاهش وقوع CUP مورد استفاده قرار گیرد.
آماده سازی داده ها
ما انتخاب کردیم که هر وصله بافتی را با یک وکتور ویژگی 1024-dim با استفاده از ResNet50 کوتاه شده و از پیش آموزش داده رمزگذاری کنیم. برای هر WSI ، انتظار می رود که این ویژگی ها به عنوان ماتریس تنسورهای torch با اندازه N x 1024 ذخیره شوند ، که در آن N تعداد وصله های هر WSI است (از اسلاید به اسلاید متفاوت است). ساختار پوشه زیر فرض می شود:
DATA_ROOT_DIR/
└──DATASET_DIR/
├── h5_files
├── slide_1.h5
├── slide_2.h5
└── …
└── pt_files
├── slide_1.pt
├── slide_2.pt
└── …
DATA_ROOT_DIR فهرست اصلی همه مجموعه داده ها است (به عنوان مثال فهرست SSD شما). DATASET_DIR نام پوشه ای است که حاوی داده های خاص یک آزمایش است و ویژگی های هر اسلاید به صورت فایل .pt ذخیره می شود.
مجموعه داده ها
انتظار می رود مجموعه داده ها در قالب csv حاوی حداقل 5 ستون تهیه شوند: ستون موردی، شناسه اسلاید، جنس و برچسب ها برای برچسب های سطح اسلاید: برچسب، سایت. هر case_id یک شناسه منحصر به فرد برای یک بیمار است، در حالی که slide_id یک شناسه منحصر به فرد برای یک اسلاید است که مطابق با .pt file. یک ویژگی استخراج شده است. این امر ضروری است زیرا اغلب یک بیمار چندین اسلاید دارد که ممکن است برچسب های مختلفی نیز داشته باشند. هنگامی که اسپلیت های train/val/test ایجاد می شود، همچنین مطمئن می شویم که اسلایدهای یک بیمار به اسپلیت های مختلف نمی روند. شناسه های اسلاید باید با آنچه در مرحله استخراج ویژگی استفاده شده است، مطابقت داشته باشد. ما یک نمونه ساختگی از یک فایل csv مجموعه داده در پوشه dataset_csv با نام dummy_dataset.csv ارائه می دهیم. تا زمانی که نقشه های فرهنگ لغت مناسب را زیر آرگومان label_dicts سازنده شیء مجموعه داده (در زیر مشاهده کنید) می توانید برچسب های داده خود را به هر نحوی وارد کنید. برای اهداف نمایشی، از “M” و “F” برای sex و “Primary” و “Metastatic” برای سایت استفاده کردیم. 18 کلاس منشأ تومور ما با “ریه”، “سینه”، “روده بزرگ”، “تخمدان”، “لوزالمعده”، “آدرنال”، “پوست”، “پروستات”، “کلیه”، “مثانه”، ” مری، تیروئید، “گردن سر”، “گلیوما”، “سلول جوانه”، “آندومتر”، “سرویکس” و “کبد”.
اشیاء مجموعه داده مورد استفاده برای training/validation/testing واقعی را می توان با استفاده از کلاس Generic_MIL_MTL_Dataset (تعریف شده در مجموعه داده ها/مجموعه داده_ داده ها). نمونه هایی از چنین اشیاء مجموعه داده ای که به مدل ها منتقل شده اند را می توان در main_mtl_concat.py و eval_mtl_concat.py یافت.
برای آموزش، به main.py نگاه کنید:
if args.task == ‘dummy_mtl_concat’:
args.n_classes=18
dataset = Generic_MIL_MTL_Dataset(csv_path = ‘dataset_csv/dummy_dataset.csv’,
data_dir= os.path.join(args.data_root_dir,’DATASET_DIR’),
shuffle = False,
seed = args.seed,
print_info = True,
label_dicts = [{‘Lung’:0, ‘Breast’:1, ‘Colorectal’:2, ‘Ovarian’:3,
‘Pancreatobiliary’:4, ‘Adrenal’:5,
‘Skin’:6, ‘Prostate’:7, ‘Renal’:8, ‘Bladder’:9,
‘Esophagogastric’:10, ‘Thyroid’:11,
‘Head Neck’:12, ‘Glioma’:13,
‘Germ Cell’:14, ‘Endometrial’: 15,
‘Cervix’: 16, ‘Liver’: 17},
{‘Primary’:0, ‘Metastatic’:1},
{‘F’:0, ‘M’:1}],
label_cols = [‘label’, ‘site’, ‘sex’],
patient_strat= False)
علاوه بر تعداد کلاس ها (args.n_classes)، آرگومان های زیر نیز باید مشخص شوند:
csv_path (str): مسیر فایل مجموعه csv
data_dir (str): مسیر دسترسی به ویژگی های .pt ذخیره شده برای مجموعه داده
label_dicts (لیست dict): لیست فرهنگ لغت ها با کلید، جفت مقدار برای تبدیل برچسب های str به int برای هر ستون برچسب
label_cols (لیست str): لیستی از عناوین ستون برای استفاده به عنوان برچسب و نقشه با label_dicts
در نهایت، کاربر باید این “وظیفه” خاص را که توسط این مجموعه داده مشخص شده است، اضافه کند تا یکی از گزینه های آرگومان –task مانند تصویر زیر باشد:
parser.add_argument(‘–task’, type=str, choices=[‘dummy_mtl_concat’])
تقسیم بندی های آموزشی
برای ارزیابی عملکرد الگوریتم، ما مجموعه داده های خود را به صورت تصادفی به آموزش، اعتبارسنجی و آزمایش تقسیم کردیم. یک نمونه تقسیم 70/10/20 برای مجموعه داده های ساختگی را می توان در splits/dummy_mtl_concat یافت. این تقسیم ها را می توان به طور خودکار با استفاده از اسکریپت create_splits.py با حداقل تغییرات درست مانند main_mtl_concat.py ایجاد کرد. به عنوان مثال، شکاف های ساختگی با تماس زیر ایجاد می شوند:
python create_splits.py –task dummy_mtl_concat –seed 1 –k 1
این اسکریپت از کلاس Generic_WSI_MTL_Dataset استفاده می کند که سازنده برای آن همان آرگومان های Generic_MIL_MTL_Dataset (بدون استدلال data_dir) را انتظار دارد. برای جزئیات بیشتر، لطفاً به تعریف مجموعه داده در مجموعه داده ها/dataset_mtl_concat.py مراجعه کنید
آموزش
CUDA_VISIBLE_DEVICES=0 python main_mtl_concat.py –drop_out –early_stopping –lr 2e-4 –k 1 –exp_code dummy_mtl_sex –task dummy_mtl_concat –log_data –data_root_dir DATA_ROOT_DIR
GPU مورد استفاده برای آموزش را می توان با استفاده از CUDA_VISIBLE_DEVICES مشخص کرد، در دستور مثال، GPU 0 استفاده می شود. برای سفارشی کردن آزمایش های خود می توانید استدلال های دیگری –drop_out, –early_stopping, –lr, –reg, and –max_epochs را مشخص کنید.
برای اطلاعات در مورد هر استدلال، مراجعه کنید:
python main_mtl_concat.py –h
به طور پیش فرض نتایج در results/exp_code مربوط به آرگومان ورودی exp_code از کاربر ذخیره می شود. اگر ورود به سیستم tensorboard فعال است (با آرگومان toggle –log_data) ، کاربر می تواند به پوشه نتایج آزمایش خاصی برود، اجرا کنید:
tensorboard –logdir=.
با این کار باید یک پنجره مرورگر باز شود و آمار آموزش/اعتبارسنجی ثبت شده در زمان واقعی نشان داده شود.
ارزیابی
کاربر همچنین می تواند از اسکریپت تکامل برای آزمایش عملکرد مدلهای آموزش دیده استفاده کند. نمونه های مربوط به مدل های آموزش داده شده در زیر ارائه شده است:
CUDA_VISIBLE_DEVICES=0 python eval_mtl_concat.py –drop_out –k 1 –models_exp_code dummy_mtl_sex_s1 –save_exp_code dummy_mtl_sex_s1_eval –task study_v2_mtl_sex –results_dir results –data_root_dir DATA_ROOT_DIR
برای اطلاعات در مورد هر استدلال خط فرمان، به موارد زیر مراجعه کنید:
python eval_mtl_concat.py –h
برای آزمایش مدل های آموزش دیده در مجموعه داده های سفارشی خود، می توانید آنها را به روش eval_mtl_concat.py اضافه کنید، همانطور که برای main_mtl_concat.py انجام می دهید.
شما می توانید فایل کامل شبیه سازی متلب را از این پروژه دانلود کنید.
سفارش پروژه مشابه دارید؟ به این صفحه مراجعه کنید.
منبع
Lu, M. Y., Chen, T. Y., Williamson, D., Zhao, M., Shady, M., Lipkova, J., & Mahmood, F. (2021). AI-based pathology predicts origins for cancers of unknown primary. Nature, 594(7861), 106–110. https://doi.org/10.1038/s41586-021-03512-4
[1] https://github.com/mahmoodlab/CLAM/issues/13
[2] Cancer of unknown primary
پروژه مشابه دارید؟
برای ثبت سفارش در سیمیا می توانید از طریق اپلیکیشن سیمیا، یا فرم ثبت سفارش در سایت اقدام کرده و یا از طریق ایمیل، واتساپ، تلگرام و اینستاگرام اقدام نمایید.
اپلیکیشن سیمیا را از بازار و مایکت دانلود کنید.
سریع ترین راه پاسخگویی سیمیا، واتساپ می باشد. لینک واتساپ، اینستاگرام و تلگرام در پایین سایت وجود دارد.
نشانی ایمیل سیمیا simiya_ht@yahoo.com می باشد.
از برقراری تماس برای هماهنگی پروژه خودداری کنید، حجم بالای سفارشات به ما اجازه نمی دهد تا از طریق تلفن پاسخگوی شما عزیزان باشیم، حتما درخواست خود را به صورت مکتوب و از طریق یکی از راه های ذکر شده فوق ارسال نمایید، درخواست خود را به طور کامل و با تمام فایل ها و توضیحات لازم ارسال نمایید تا مدت زمان بررسی آن به حداقل برسد. پس از تعیین کارشناس، در اسرع وقت به شما پاسخ می دهیم.
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.