diff --git a/notebooks/getting_started/exploring_clinical_data.ipynb b/notebooks/getting_started/exploring_clinical_data.ipynb index d481c6a..92c3f0f 100644 --- a/notebooks/getting_started/exploring_clinical_data.ipynb +++ b/notebooks/getting_started/exploring_clinical_data.ipynb @@ -43,7 +43,7 @@ "---\n", "Initial version: Jul 2024\n", "\n", - "Updated: Sep 2024" + "Updated: Feb 2025" ], "metadata": { "id": "RVHEoPZJgVbl" @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "id": "k8B1uiZkYlHu" }, @@ -89,9 +89,9 @@ { "cell_type": "code", "source": [ - "from idc_index import index\n", + "from idc_index import IDCClient\n", "\n", - "c = index.IDCClient()\n", + "c = IDCClient()\n", "\n", "c.fetch_index('clinical_index')\n", "\n", @@ -99,12 +99,12 @@ ], "metadata": { "id": "ehb4MeuPYy4c", - "outputId": "c7267c6e-9a3f-4378-86aa-9868c78cf5dc", + "outputId": "36e97296-465a-4e13-9dd5-6a423abf1a82", "colab": { "base_uri": "https://localhost:8080/" } }, - "execution_count": 2, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -115,7 +115,8 @@ "table_name\n", "short_table_name\n", "column\n", - "column_label\n" + "column_label\n", + "values\n" ] } ] @@ -157,7 +158,7 @@ "metadata": { "id": "L6rMuMEHjiML" }, - "execution_count": 3, + "execution_count": null, "outputs": [] }, { @@ -171,181 +172,60 @@ "height": 1000 }, "id": "X5jfORxlaQ-Q", - "outputId": "76af1c40-a713-4639-a730-b7e82bf56414" + "outputId": "d4eadd7c-cdf9-4fa8-eca6-4c7ce0f86086" }, - "execution_count": 4, + "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - " collection_id \\\n", - "0 rms_mutation_prediction \n", - "1 rms_mutation_prediction \n", - "2 rms_mutation_prediction \n", - "3 rms_mutation_prediction \n", - "4 rms_mutation_prediction \n", - "5 rms_mutation_prediction \n", - "6 rms_mutation_prediction \n", - "7 rms_mutation_prediction \n", - "8 rms_mutation_prediction \n", - "9 rms_mutation_prediction \n", - "10 rms_mutation_prediction \n", - "11 rms_mutation_prediction \n", - "12 rms_mutation_prediction \n", - "13 rms_mutation_prediction \n", - "14 rms_mutation_prediction \n", - "15 rms_mutation_prediction \n", - "16 rms_mutation_prediction \n", - "17 rms_mutation_prediction \n", - "18 rms_mutation_prediction \n", - "19 rms_mutation_prediction \n", - "20 rms_mutation_prediction \n", - "21 rms_mutation_prediction \n", - "22 rms_mutation_prediction \n", - "23 rms_mutation_prediction \n", - "24 rms_mutation_prediction \n", - "25 rms_mutation_prediction \n", - "26 rms_mutation_prediction \n", - "27 rms_mutation_prediction \n", - "28 rms_mutation_prediction \n", - "29 rms_mutation_prediction \n", - "30 rms_mutation_prediction \n", - "31 rms_mutation_prediction \n", - "32 rms_mutation_prediction \n", - "33 rms_mutation_prediction \n", - "34 rms_mutation_prediction \n", - "35 rms_mutation_prediction \n", - "36 rms_mutation_prediction \n", - "37 rms_mutation_prediction \n", - "38 rms_mutation_prediction \n", - "\n", - " table_name \\\n", - "0 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "1 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "2 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "3 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "4 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "5 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "6 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "7 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "8 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "9 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "10 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "11 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "12 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "13 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "14 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "15 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "16 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "17 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "18 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "19 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "20 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "21 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "22 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "23 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "24 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "25 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "26 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "27 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "28 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "29 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "30 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "31 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "32 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "33 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "34 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "35 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "36 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "37 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "38 bigquery-public-data.idc_v19_clinical.rms_muta... \n", - "\n", - " short_table_name column \\\n", - "0 rms_mutation_prediction_demographics source_batch \n", - "1 rms_mutation_prediction_demographics race \n", - "2 rms_mutation_prediction_demographics gender \n", - "3 rms_mutation_prediction_demographics dicom_patient_id \n", - "4 rms_mutation_prediction_demographics participant_id \n", - "5 rms_mutation_prediction_diagnosis source_batch \n", - "6 rms_mutation_prediction_diagnosis diagnosis_id \n", - "7 rms_mutation_prediction_diagnosis disease_type \n", - "8 rms_mutation_prediction_diagnosis primary_diagnosis \n", - "9 rms_mutation_prediction_diagnosis primary_diagnosis_reference_source \n", - "10 rms_mutation_prediction_diagnosis metastasis_at_diagnosis \n", - "11 rms_mutation_prediction_diagnosis stage \n", - "12 rms_mutation_prediction_diagnosis last_known_disease_status \n", - "13 rms_mutation_prediction_diagnosis days_to_last_known_disease_status \n", - "14 rms_mutation_prediction_diagnosis tissue_or_organ_of_origin \n", - "15 rms_mutation_prediction_diagnosis progression_or_recurrence \n", - "16 rms_mutation_prediction_diagnosis site_of_resection_or_biopsy \n", - "17 rms_mutation_prediction_diagnosis dicom_patient_id \n", - "18 rms_mutation_prediction_diagnosis participantparticipant_id \n", - "19 rms_mutation_prediction_diagnosis primary_site \n", - "20 rms_mutation_prediction_diagnosis days_to_recurrence \n", - "21 rms_mutation_prediction_diagnosis days_to_last_followup \n", - "22 rms_mutation_prediction_diagnosis age_at_diagnosis \n", - "23 rms_mutation_prediction_sample source_batch \n", - "24 rms_mutation_prediction_sample sample_type \n", - "25 rms_mutation_prediction_sample histological_classification \n", - "26 rms_mutation_prediction_sample tumor_grade \n", - "27 rms_mutation_prediction_sample tumor_stage_clinical_t \n", - "28 rms_mutation_prediction_sample tumor_stage_clinical_n \n", - "29 rms_mutation_prediction_sample tumor_stage_clinical_m \n", - "30 rms_mutation_prediction_sample tumor_morphology \n", - "31 rms_mutation_prediction_sample tumor_incidence_type \n", - "32 rms_mutation_prediction_sample sample_description \n", - "33 rms_mutation_prediction_sample sample_tumor_status \n", - "34 rms_mutation_prediction_sample dicom_patient_id \n", - "35 rms_mutation_prediction_sample participantparticipant_id \n", - "36 rms_mutation_prediction_sample sample_id \n", - "37 rms_mutation_prediction_sample sample_anatomic_site \n", - "38 rms_mutation_prediction_sample participant_age_at_collection \n", - "\n", - " column_label \n", - "0 idc_provenance_source_batch \n", - "1 race \n", - "2 gender \n", - "3 idc_provenance_dicom_patient_id \n", - "4 participant_id \n", - "5 idc_provenance_source_batch \n", - "6 diagnosis_id \n", - "7 disease_type \n", - "8 primary_diagnosis \n", - "9 primary_diagnosis_reference_source \n", - "10 Metastasis_at_diagnosis \n", - "11 Stage \n", - "12 last_known_disease_status \n", - "13 days_to_last_known_disease_status \n", - "14 tissue_or_organ_of_origin \n", - "15 progression_or_recurrence \n", - "16 site_of_resection_or_biopsy \n", - "17 idc_provenance_dicom_patient_id \n", - "18 participant.participant_id \n", - "19 primary_site \n", - "20 days_to_recurrence \n", - "21 days_to_last_followup \n", - "22 age_at_diagnosis \n", - "23 idc_provenance_source_batch \n", - "24 sample_type \n", - "25 Histological_Classification \n", - "26 tumor_grade \n", - "27 tumor_stage_clinical_t \n", - "28 tumor_stage_clinical_n \n", - "29 tumor_stage_clinical_m \n", - "30 tumor_morphology \n", - "31 tumor_incidence_type \n", - "32 sample_description \n", - "33 sample_tumor_status \n", - "34 idc_provenance_dicom_patient_id \n", - "35 participant.participant_id \n", - "36 sample_id \n", - "37 sample_anatomic_site \n", - "38 participant_age_at_collection " + " collection_id ... values\n", + "0 rms_mutation_prediction ... [{'option_code': '0', 'option_description': No...\n", + "1 rms_mutation_prediction ... [{'option_code': '', 'option_description': Non...\n", + "2 rms_mutation_prediction ... [{'option_code': 'Female', 'option_description...\n", + "3 rms_mutation_prediction ... []\n", + "4 rms_mutation_prediction ... []\n", + "5 rms_mutation_prediction ... [{'option_code': '0', 'option_description': No...\n", + "6 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "7 rms_mutation_prediction ... [{'option_code': 'Soft Tissue Tumors and Sarco...\n", + "8 rms_mutation_prediction ... [{'option_code': 'Rhabdomyosarcoma', 'option_d...\n", + "9 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "10 rms_mutation_prediction ... [{'option_code': '', 'option_description': Non...\n", + "11 rms_mutation_prediction ... [{'option_code': '', 'option_description': Non...\n", + "12 rms_mutation_prediction ... [{'option_code': '', 'option_description': Non...\n", + "13 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "14 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "15 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "16 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "17 rms_mutation_prediction ... []\n", + "18 rms_mutation_prediction ... []\n", + "19 rms_mutation_prediction ... []\n", + "20 rms_mutation_prediction ... []\n", + "21 rms_mutation_prediction ... []\n", + "22 rms_mutation_prediction ... []\n", + "23 rms_mutation_prediction ... [{'option_code': '0', 'option_description': No...\n", + "24 rms_mutation_prediction ... [{'option_code': 'Tumor', 'option_description'...\n", + "25 rms_mutation_prediction ... [{'option_code': '', 'option_description': Non...\n", + "26 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "27 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "28 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "29 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "30 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "31 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "32 rms_mutation_prediction ... [{'option_code': '', 'option_description': None}]\n", + "33 rms_mutation_prediction ... [{'option_code': 'Tumor', 'option_description'...\n", + "34 rms_mutation_prediction ... []\n", + "35 rms_mutation_prediction ... []\n", + "36 rms_mutation_prediction ... []\n", + "37 rms_mutation_prediction ... []\n", + "38 rms_mutation_prediction ... []\n", + "\n", + "[39 rows x 6 columns]" ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "\n", - " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "one_patient_images" + } + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "We can also use `IDCClient` to generate the URL to view the image for the given patient!" + ], + "metadata": { + "id": "piRqLYkCaEgR" + } + }, + { + "cell_type": "code", + "source": [ + "viewer_url = c.get_viewer_URL(seriesInstanceUID=one_patient_images['SeriesInstanceUID'].values[0], viewer_selector=\"slim\")\n", + "\n", + "viewer_url" + ], + "metadata": { + "id": "nK5nkjO8aL5H", + "outputId": "dcbcb37e-b41d-4764-b039-236cb51b95ce", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + } + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'https://viewer.imaging.datacommons.cancer.gov/slim/studies/2.25.178459043216141635419628463075271643072/series/1.3.6.1.4.1.5962.99.1.3049362635.826230255.1686676575435.4.0'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 22 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "We can even view the image using IDC viewer directly in the notebook cell." + ], + "metadata": { + "id": "co_GzgJbasDe" + } + }, + { + "cell_type": "code", + "source": [ + "from IPython.display import IFrame\n", + "IFrame(viewer_url, width=1500, height=900)" + ], + "metadata": { + "id": "Y14qWLTtaxxJ", + "outputId": "13e7a623-c624-4141-bfa2-ab04875cb348", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 921 + } + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + " \n", + " " + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] + }, { "cell_type": "markdown", "source": [ diff --git a/notebooks/pathomics/README.md b/notebooks/pathomics/README.md index 6d0569c..0ff2774 100644 --- a/notebooks/pathomics/README.md +++ b/notebooks/pathomics/README.md @@ -2,7 +2,7 @@ This repository contains * a short notebook (getting_started_with_digital_pathology.ipynb) giving an idea on how to explore and work with available collections of pathology whole-slide images (WSIs) in the IDC. * an notebook (slide_microscopy_metadata_search.ipynb) to introduce the key metadata accompanying IDC slide microscopy images that can be used for subsetting data and building cohorts. -* a notebook (Tutorial_MicroscopyBulkSimpleAnnotations.ipynb) that shows how to work with bulk annotations encoded in DICOM using the example of nuclei annotations. +* a notebook (microscopy_dicom_ann_intro.ipynb) that shows how to work with bulk annotations encoded in DICOM using the example of nuclei annotations. More tutorials that show, for example, how to train a tissue classification model can be found in the Github repository [idc-comppath-reproducibility](https://github.com/ImagingDataCommons/idc-comppath-reproducibility) as part of the publication below: diff --git a/notebooks/pathomics/getting_started_with_digital_pathology.ipynb b/notebooks/pathomics/getting_started_with_digital_pathology.ipynb index 2aefeee..7f79137 100644 --- a/notebooks/pathomics/getting_started_with_digital_pathology.ipynb +++ b/notebooks/pathomics/getting_started_with_digital_pathology.ipynb @@ -73,7 +73,7 @@ "metadata": { "collapsed": true, "id": "Y9weWEaezOmg", - "outputId": "984556f7-fd5d-4bc5-838d-f718ee7b5071", + "outputId": "74286b9f-4569-4f91-8ab0-1109f3f364f3", "colab": { "base_uri": "https://localhost:8080/" } @@ -83,12 +83,11 @@ "output_type": "stream", "name": "stdout", "text": [ - "Collecting idc-index>=0.6.3\n", - " Downloading idc_index-0.8.2-py3-none-any.whl.metadata (8.5 kB)\n", - "Collecting wsidicom\n", - " Downloading wsidicom-0.24.0-py3-none-any.whl.metadata (25 kB)\n", - "Collecting tensorflow==2.15\n", - " Downloading tensorflow-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\n", + "Requirement already satisfied: idc-index>=0.6.3 in /usr/local/lib/python3.11/dist-packages (0.8.2)\n", + "Requirement already satisfied: wsidicom in /usr/local/lib/python3.11/dist-packages (0.24.0)\n", + "Requirement already satisfied: tensorflow==2.15 in /usr/local/lib/python3.11/dist-packages (2.15.0)\n", + "Requirement already satisfied: openslide-python in /usr/local/lib/python3.11/dist-packages (1.4.1)\n", + "Requirement already satisfied: openslide-bin in /usr/local/lib/python3.11/dist-packages (4.0.0.6)\n", "Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.4.0)\n", "Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.6.3)\n", "Requirement already satisfied: flatbuffers>=23.5.26 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (25.2.10)\n", @@ -96,8 +95,7 @@ "Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (0.2.0)\n", "Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (3.12.1)\n", "Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (18.1.1)\n", - "Collecting ml-dtypes~=0.2.0 (from tensorflow==2.15)\n", - " Downloading ml_dtypes-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)\n", + "Requirement already satisfied: ml-dtypes~=0.2.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (0.2.0)\n", "Requirement already satisfied: numpy<2.0.0,>=1.23.5 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.26.4)\n", "Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (3.4.0)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (24.2)\n", @@ -106,45 +104,31 @@ "Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.17.0)\n", "Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (2.5.0)\n", "Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (4.12.2)\n", - "Collecting wrapt<1.15,>=1.11.0 (from tensorflow==2.15)\n", - " Downloading wrapt-1.14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.7 kB)\n", + "Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.14.1)\n", "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (0.37.1)\n", "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (1.70.0)\n", - "Collecting tensorboard<2.16,>=2.15 (from tensorflow==2.15)\n", - " Downloading tensorboard-2.15.2-py3-none-any.whl.metadata (1.7 kB)\n", - "Collecting tensorflow-estimator<2.16,>=2.15.0 (from tensorflow==2.15)\n", - " Downloading tensorflow_estimator-2.15.0-py2.py3-none-any.whl.metadata (1.3 kB)\n", - "Collecting keras<2.16,>=2.15.0 (from tensorflow==2.15)\n", - " Downloading keras-2.15.0-py3-none-any.whl.metadata (2.4 kB)\n", + "Requirement already satisfied: tensorboard<2.16,>=2.15 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (2.15.2)\n", + "Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (2.15.0)\n", + "Requirement already satisfied: keras<2.16,>=2.15.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow==2.15) (2.15.0)\n", "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (8.1.8)\n", - "Collecting duckdb<1.1.0,>=0.10.0 (from idc-index>=0.6.3)\n", - " Downloading duckdb-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (762 bytes)\n", - "Collecting idc-index-data==20.0.1 (from idc-index>=0.6.3)\n", - " Downloading idc_index_data-20.0.1-py3-none-any.whl.metadata (5.4 kB)\n", - "Collecting pandas<2.2 (from idc-index>=0.6.3)\n", - " Downloading pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)\n", + "Requirement already satisfied: duckdb<1.1.0,>=0.10.0 in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (1.0.0)\n", + "Requirement already satisfied: idc-index-data==20.0.1 in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (20.0.1)\n", + "Requirement already satisfied: pandas<2.2 in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (2.1.4)\n", "Requirement already satisfied: platformdirs in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (4.3.6)\n", "Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (5.9.5)\n", "Requirement already satisfied: pyarrow in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (17.0.0)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (2.32.3)\n", - "Collecting s5cmd (from idc-index>=0.6.3)\n", - " Downloading s5cmd-0.2.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.7 kB)\n", - "Collecting sphinx-click (from idc-index>=0.6.3)\n", - " Downloading sphinx_click-6.0.0-py3-none-any.whl.metadata (3.4 kB)\n", + "Requirement already satisfied: s5cmd in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (0.2.0)\n", + "Requirement already satisfied: sphinx-click in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (6.0.0)\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from idc-index>=0.6.3) (4.67.1)\n", "Requirement already satisfied: Pillow>=9.1.1 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (11.1.0)\n", - "Collecting dicomweb-client<0.60.0,>=0.59.2 (from wsidicom)\n", - " Downloading dicomweb_client-0.59.3-py3-none-any.whl.metadata (4.5 kB)\n", + "Requirement already satisfied: dicomweb-client<0.60.0,>=0.59.2 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (0.59.3)\n", "Requirement already satisfied: fsspec<2025.0.0,>=2024.2.0 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (2024.10.0)\n", - "Collecting marshmallow<4.0.0,>=3.20.1 (from wsidicom)\n", - " Downloading marshmallow-3.26.1-py3-none-any.whl.metadata (7.3 kB)\n", - "Collecting pydicom>=3.0.0 (from wsidicom)\n", - " Downloading pydicom-3.0.1-py3-none-any.whl.metadata (9.4 kB)\n", - "Collecting universal-pathlib<0.3.0,>=0.2.1 (from wsidicom)\n", - " Downloading universal_pathlib-0.2.6-py3-none-any.whl.metadata (25 kB)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.20.1 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (3.26.1)\n", + "Requirement already satisfied: pydicom>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (3.0.1)\n", + "Requirement already satisfied: universal-pathlib<0.3.0,>=0.2.1 in /usr/local/lib/python3.11/dist-packages (from wsidicom) (0.2.6)\n", "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from astunparse>=1.6.0->tensorflow==2.15) (0.45.1)\n", - "Collecting retrying>=1.3.3 (from dicomweb-client<0.60.0,>=0.59.2->wsidicom)\n", - " Downloading retrying-1.3.4-py3-none-any.whl.metadata (6.9 kB)\n", + "Requirement already satisfied: retrying>=1.3.3 in /usr/local/lib/python3.11/dist-packages (from dicomweb-client<0.60.0,>=0.59.2->wsidicom) (1.3.4)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas<2.2->idc-index>=0.6.3) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas<2.2->idc-index>=0.6.3) (2025.1)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.11/dist-packages (from pandas<2.2->idc-index>=0.6.3) (2025.1)\n", @@ -177,115 +161,13 @@ "Requirement already satisfied: imagesize>=1.3 in /usr/local/lib/python3.11/dist-packages (from sphinx>=4.0->sphinx-click->idc-index>=0.6.3) (1.4.1)\n", "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.11/dist-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow==2.15) (3.0.2)\n", "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.11/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow==2.15) (0.6.1)\n", - "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15) (3.2.2)\n", - "Downloading tensorflow-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (475.3 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m475.3/475.3 MB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading idc_index-0.8.2-py3-none-any.whl (26 kB)\n", - "Downloading idc_index_data-20.0.1-py3-none-any.whl (61.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.4/61.4 MB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading wsidicom-0.24.0-py3-none-any.whl (230 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m230.6/230.6 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading dicomweb_client-0.59.3-py3-none-any.whl (61 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.6/61.6 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading duckdb-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.5 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.5/18.5 MB\u001b[0m \u001b[31m52.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading keras-2.15.0-py3-none-any.whl (1.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m46.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading marshmallow-3.26.1-py3-none-any.whl (50 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading ml_dtypes-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m39.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.2/12.2 MB\u001b[0m \u001b[31m65.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading pydicom-3.0.1-py3-none-any.whl (2.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.4/2.4 MB\u001b[0m \u001b[31m40.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading tensorboard-2.15.2-py3-none-any.whl (5.5 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.5/5.5 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading tensorflow_estimator-2.15.0-py2.py3-none-any.whl (441 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m442.0/442.0 kB\u001b[0m \u001b[31m27.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading universal_pathlib-0.2.6-py3-none-any.whl (50 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.1/50.1 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading wrapt-1.14.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (78 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m78.4/78.4 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading s5cmd-0.2.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.7/4.7 MB\u001b[0m \u001b[31m51.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading sphinx_click-6.0.0-py3-none-any.whl (9.9 kB)\n", - "Downloading retrying-1.3.4-py3-none-any.whl (11 kB)\n", - "Installing collected packages: wrapt, universal-pathlib, tensorflow-estimator, s5cmd, retrying, pydicom, ml-dtypes, marshmallow, keras, idc-index-data, duckdb, pandas, dicomweb-client, wsidicom, sphinx-click, tensorboard, idc-index, tensorflow\n", - " Attempting uninstall: wrapt\n", - " Found existing installation: wrapt 1.17.2\n", - " Uninstalling wrapt-1.17.2:\n", - " Successfully uninstalled wrapt-1.17.2\n", - " Attempting uninstall: ml-dtypes\n", - " Found existing installation: ml-dtypes 0.4.1\n", - " Uninstalling ml-dtypes-0.4.1:\n", - " Successfully uninstalled ml-dtypes-0.4.1\n", - " Attempting uninstall: keras\n", - " Found existing installation: keras 3.8.0\n", - " Uninstalling keras-3.8.0:\n", - " Successfully uninstalled keras-3.8.0\n", - " Attempting uninstall: duckdb\n", - " Found existing installation: duckdb 1.1.3\n", - " Uninstalling duckdb-1.1.3:\n", - " Successfully uninstalled duckdb-1.1.3\n", - " Attempting uninstall: pandas\n", - " Found existing installation: pandas 2.2.2\n", - " Uninstalling pandas-2.2.2:\n", - " Successfully uninstalled pandas-2.2.2\n", - " Attempting uninstall: tensorboard\n", - " Found existing installation: tensorboard 2.18.0\n", - " Uninstalling tensorboard-2.18.0:\n", - " Successfully uninstalled tensorboard-2.18.0\n", - " Attempting uninstall: tensorflow\n", - " Found existing installation: tensorflow 2.18.0\n", - " Uninstalling tensorflow-2.18.0:\n", - " Successfully uninstalled tensorflow-2.18.0\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "google-colab 1.0.0 requires pandas==2.2.2, but you have pandas 2.1.4 which is incompatible.\n", - "plotnine 0.14.5 requires pandas>=2.2.0, but you have pandas 2.1.4 which is incompatible.\n", - "tensorflow-text 2.18.1 requires tensorflow<2.19,>=2.18.0, but you have tensorflow 2.15.0 which is incompatible.\n", - "mizani 0.13.1 requires pandas>=2.2.0, but you have pandas 2.1.4 which is incompatible.\n", - "tf-keras 2.18.0 requires tensorflow<2.19,>=2.18, but you have tensorflow 2.15.0 which is incompatible.\n", - "tensorstore 0.1.71 requires ml_dtypes>=0.3.1, but you have ml-dtypes 0.2.0 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed dicomweb-client-0.59.3 duckdb-1.0.0 idc-index-0.8.2 idc-index-data-20.0.1 keras-2.15.0 marshmallow-3.26.1 ml-dtypes-0.2.0 pandas-2.1.4 pydicom-3.0.1 retrying-1.3.4 s5cmd-0.2.0 sphinx-click-6.0.0 tensorboard-2.15.2 tensorflow-2.15.0 tensorflow-estimator-2.15.0 universal-pathlib-0.2.6 wrapt-1.14.1 wsidicom-0.24.0\n" + "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow==2.15) (3.2.2)\n" ] } ], "source": [ "\n", - "!pip3 install \"idc-index>=0.6.3\" wsidicom tensorflow==2.15" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "YStGX-uGHUQa", - "outputId": "72940436-65ad-4b27-84bd-9b0847064c0f", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting openslide-python\n", - " Downloading openslide_python-1.4.1-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (4.3 kB)\n", - "Collecting openslide-bin\n", - " Downloading openslide_bin-4.0.0.6-py3-none-manylinux_2_28_x86_64.whl.metadata (4.4 kB)\n", - "Requirement already satisfied: Pillow in /usr/local/lib/python3.11/dist-packages (from openslide-python) (11.1.0)\n", - "Downloading openslide_python-1.4.1-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (33 kB)\n", - "Downloading openslide_bin-4.0.0.6-py3-none-manylinux_2_28_x86_64.whl (4.3 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.3/4.3 MB\u001b[0m \u001b[31m31.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hInstalling collected packages: openslide-python, openslide-bin\n", - "Successfully installed openslide-bin-4.0.0.6 openslide-python-1.4.1\n" - ] - } - ], - "source": [ - "!pip install openslide-python openslide-bin" + "!pip3 install \"idc-index>=0.6.3\" wsidicom tensorflow==2.15 openslide-python openslide-bin" ] }, { @@ -302,7 +184,7 @@ "execution_count": null, "metadata": { "id": "7w2gWiBuZMkC", - "outputId": "06f44d89-42f7-49a2-f2f6-1b5f234ee21a", + "outputId": "437ce8cd-a697-4ef4-8eaa-0e47ceceec45", "colab": { "base_uri": "https://localhost:8080/" } @@ -313,12 +195,12 @@ "name": "stdout", "text": [ "Cloning into 'IDC-Tutorials'...\n", - "remote: Enumerating objects: 2474, done.\u001b[K\n", - "remote: Counting objects: 100% (365/365), done.\u001b[K\n", - "remote: Compressing objects: 100% (172/172), done.\u001b[K\n", - "remote: Total 2474 (delta 269), reused 204 (delta 193), pack-reused 2109 (from 3)\u001b[K\n", - "Receiving objects: 100% (2474/2474), 147.68 MiB | 17.47 MiB/s, done.\n", - "Resolving deltas: 100% (1465/1465), done.\n", + "remote: Enumerating objects: 2479, done.\u001b[K\n", + "remote: Counting objects: 100% (372/372), done.\u001b[K\n", + "remote: Compressing objects: 100% (177/177), done.\u001b[K\n", + "remote: Total 2479 (delta 275), reused 206 (delta 195), pack-reused 2107 (from 3)\u001b[K\n", + "Receiving objects: 100% (2479/2479), 148.37 MiB | 24.68 MiB/s, done.\n", + "Resolving deltas: 100% (1470/1470), done.\n", "Updating files: 100% (104/104), done.\n" ] } @@ -346,7 +228,7 @@ "outputs_hidden": true }, "tags": [], - "outputId": "018e7792-5198-472a-f0ae-4713f9798c8c", + "outputId": "75421a6c-383c-40b9-c4a2-1019c4e3c5d2", "colab": { "base_uri": "https://localhost:8080/" } @@ -438,10 +320,10 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 504 + "height": 329 }, "id": "8Ja50OuORgv9", - "outputId": "30749e3c-374f-413c-c49f-baf42a0c0ee6" + "outputId": "8462642f-cd36-4512-d2b0-cb58e00466aa" }, "outputs": [ { @@ -478,7 +360,7 @@ ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "