Queries

Queries are useful for exploring the available imaging data. The general hierarchy of the cancer imaging archive (TCIA) is:

Collection -> PatientID -> StudyInstanceUID -> SeriesInstanceUID -> SOPInstanceUID

To download images, the SeriesInstanceUID and/or SOPInstanceUID must be known. The query functions are meant to help identify the relevant unique identifiers (UIDs)

Detailed information is available in the TCIA's user guide which includes a list of available query endpoints and the type of information returned by each query.

Note

As mentioned in the Formats section, each query returns either a DataFrame or a Dictionary Array. The current section will exclusively use the DataFrame output. That being said, a dictionary array can always be obtained by any of these functions by passing format = "json" as an input argument.

All collections

The names of all available collections on TCIA is obtained by:

julia> tcia_collections()128×1 DataFrame
 Row │ Collection
     │ String31…
─────┼───────────────────────────
   1 │ TCGA-GBM
   2 │ LIDC-IDRI
   3 │ BREAST-DIAGNOSIS
   4 │ PROSTATE-MRI
   5 │ QIN-BREAST
   6 │ QIN-HEADNECK
   7 │ REMBRANDT
   8 │ PROSTATE-DIAGNOSIS
  ⋮  │             ⋮
 122 │ TCGA-UCEC
 123 │ TCGA-SARC
 124 │ TCGA-STAD
 125 │ VICTRE
 126 │ Vestibular-Schwannoma-SEG
 127 │ covid-19
 128 │ Training-Pseudo
                 113 rows omitted

Imaging modalities

The imaging modalities in a specific collection and/or anatomy are listed by:

julia> tcia_modalities(collection = "TCGA-KIRP")3×1 DataFrame
 Row │ Modality
     │ String3…
─────┼──────────
   1 │ CT
   2 │ MR
   3 │ PT
julia> tcia_modalities(bodypart = "BRAIN")5×1 DataFrame Row │ Modality │ String3… ─────┼────────── 1 │ MR 2 │ CT 3 │ DX 4 │ PT 5 │ SEG
julia> tcia_modalities(collection = "CPTAC-HNSCC", bodypart = "HEAD")2×1 DataFrame Row │ Modality │ String3… ─────┼────────── 1 │ CT 2 │ MR
Note

Capitalization matters when passing in arguments, i.e. bodypart = "BRAIN" works but passing bodypart = "brain" will return an empty object. However, there are some cases where different versions are valid. As an example, passing bodypart = Kidney or bodypart = "KIDNEY" will both return valid (but different!) results. So although fully-capitalized body part names will work most of the time, do double-check if alternative spellings exist when using the bodypart argument (see next section for names)

Anatomy/body parts

The anatomy scanned in a specific collection and/or modality are listed by:

julia> tcia_bodyparts(collection = "CPTAC-HNSCC")7×1 DataFrame
 Row │ BodyPartExamined
     │ String15…
─────┼──────────────────
   1 │ NECK
   2 │ HEAD
   3 │ HEADNECK
   4 │ ABDOMEN
   5 │ CHEST
   6 │ CHEST_TO_PELVIS
   7 │ Head-Neck
julia> tcia_bodyparts(modality = "CT")69×1 DataFrame Row │ BodyPartExamined │ String15… ─────┼────────────────── 1 │ BRAIN 2 │ CHEST 3 │ BREAST 4 │ PROSTATE 5 │ COLON 6 │ PHANTOM 7 │ KIDNEY 8 │ ABDOMEN ⋮ │ ⋮ 63 │ THORAX 64 │ WHOLEBODY 65 │ CHESTABDOMEN 66 │ Thorax 67 │ THORAXABD 68 │ CHEST PE 69 │ CHEST_ABDOMEN 54 rows omitted
julia> tcia_bodyparts(collection = "CPTAC-SAR", modality = "MR")2×1 DataFrame Row │ BodyPartExamined │ String15… ─────┼────────────────── 1 │ Pelvis 2 │ EXTREMITY
julia> tcia_bodyparts(collection = "CPTAC-SAR", modality = "CT")4×1 DataFrame Row │ BodyPartExamined │ String15… ─────┼────────────────── 1 │ ABDOMEN 2 │ CHEST 3 │ WHOLEBODY 4 │ EXTREMITY

Manufacturers

A list of scanner manufacturers for a specific collection/modality/anatomy is obtained by

julia> tcia_manufacturers(collection = "TCGA-KICH")3×1 DataFrame
 Row │ Manufacturer
     │ String31…
─────┼────────────────────
   1 │ GE MEDICAL SYSTEMS
   2 │ SIEMENS
   3 │ TOSHIBA
julia> tcia_manufacturers(modality = "CT")39×1 DataFrame Row │ Manufacturer │ String63… ─────┼─────────────────────────────────── 1 │ GE MEDICAL SYSTEMS 2 │ SIEMENS 3 │ TOSHIBA 4 │ Philips 5 │ Vital Images, Inc 6 │ Philips Medical Systems 7 │ Siemens 8 │ Posda RTOG Converter ⋮ │ ⋮ 33 │ 003 34 │ 004 35 │ 004 313619.2.55.3.419501 36 │ 002 es scanned.ration 37 │ 005 38 │ 005 9 39 │ Varian Medical Systems \\/ MIM S… 24 rows omitted
julia> tcia_manufacturers(bodypart = "BREAST")10×1 DataFrame Row │ Manufacturer │ String31… ─────┼───────────────────────────── 1 │ Philips Medical Systems 2 │ GE MEDICAL SYSTEMS 3 │ LORAD 4 │ Lorad, A Hologic Company 5 │ Confirma Inc. 6 │ SIEMENS 7 │ Siemens 8 │ GE MEDICAL SYSTEMS, NUCLEAR 9 │ VICTRE 10 │ HOLOGIC, Inc.

The same manufacturer can have different names, e.g. Philips/Philips Medical Systems and SIEMENS/Siemens.

Patients

The patients in a given collection are listed by:

julia> tcia_patients(collection = "TCGA-SARC")5×4 DataFrame
 Row │ PatientID     PatientName   PatientSex  Collection
     │ String15…     String15…     String1…    String15…
─────┼────────────────────────────────────────────────────
   1 │ TCGA-QQ-A5V2  TCGA-QQ-A5V2  M           TCGA-SARC
   2 │ TCGA-QQ-A5VC  TCGA-QQ-A5VC  F           TCGA-SARC
   3 │ TCGA-QQ-A8VF  TCGA-QQ-A8VF  M           TCGA-SARC
   4 │ TCGA-QQ-A8VH  TCGA-QQ-A8VH  F           TCGA-SARC
   5 │ TCGA-QQ-A8VG  TCGA-QQ-A8VG  M           TCGA-SARC

Patients for specific modality

To get a patients for which a specific modality was used, a slightly different function is used:

julia> tcia_patients_by_modality(collection = "TCGA-SARC", modality = "CT")4×3 DataFrame
 Row │ PatientID     Collection  Modality
     │ String15…     String15…   String3…
─────┼────────────────────────────────────
   1 │ TCGA-QQ-A5V2  TCGA-SARC   CT
   2 │ TCGA-QQ-A5VC  TCGA-SARC   CT
   3 │ TCGA-QQ-A8VF  TCGA-SARC   CT
   4 │ TCGA-QQ-A8VG  TCGA-SARC   CT
julia> tcia_patients_by_modality(collection = "TCGA-SARC", modality = "MR")2×3 DataFrame Row │ PatientID Collection Modality │ String15… String15… String3… ─────┼──────────────────────────────────── 1 │ TCGA-QQ-A8VF TCGA-SARC MR 2 │ TCGA-QQ-A8VH TCGA-SARC MR
Note

Although the functionality of tcia_patients_by_modality() could be combined into the tcia_patients() function, they use a different query endpoint so the two functions were given different names to keep that difference explicit.

Patients added after specific date

In large collections, it can be useful to query patients that were added after a date specified as YYYY-MM-DD. This is accomplished by:

julia> tcia_newpatients(collection = "TCGA-GBM", date = "2015-01-01")104×2 DataFrame
 Row │ PatientID     Collection
     │ String15…     String15…
─────┼──────────────────────────
   1 │ TCGA-02-0060  TCGA-GBM
   2 │ TCGA-06-1806  TCGA-GBM
   3 │ TCGA-02-0006  TCGA-GBM
   4 │ TCGA-02-0009  TCGA-GBM
   5 │ TCGA-02-0011  TCGA-GBM
   6 │ TCGA-02-0027  TCGA-GBM
   7 │ TCGA-02-0033  TCGA-GBM
   8 │ TCGA-02-0034  TCGA-GBM
  ⋮  │      ⋮            ⋮
  98 │ TCGA-76-6285  TCGA-GBM
  99 │ TCGA-76-6656  TCGA-GBM
 100 │ TCGA-76-6657  TCGA-GBM
 101 │ TCGA-76-6661  TCGA-GBM
 102 │ TCGA-76-6662  TCGA-GBM
 103 │ TCGA-76-6663  TCGA-GBM
 104 │ TCGA-76-6664  TCGA-GBM
                 89 rows omitted

Patient studies

A list of visits/studies for a given collection/patient is obtained by:

julia> tcia_studies(collection = "TCGA-THCA")7×9 DataFrame
 Row │ Collection  PatientID     PatientName   PatientSex  StudyInstanceUID    ⋯
     │ String15…   String15…     String15…     String1…    String              ⋯
─────┼──────────────────────────────────────────────────────────────────────────
   1 │ TCGA-THCA   TCGA-DE-A4MD  TCGA-DE-A4MD  M           1.3.6.1.4.1.14519.5 ⋯
   2 │ TCGA-THCA   TCGA-DE-A4MA  TCGA-DE-A4MA  F           1.3.6.1.4.1.14519.5
   3 │ TCGA-THCA   TCGA-DE-A4MA  TCGA-DE-A4MA  F           1.3.6.1.4.1.14519.5
   4 │ TCGA-THCA   TCGA-DE-A4MC  TCGA-DE-A4MC  F           1.3.6.1.4.1.14519.5
   5 │ TCGA-THCA   TCGA-DE-A4MB  TCGA-DE-A4MB  F           1.3.6.1.4.1.14519.5 ⋯
   6 │ TCGA-THCA   TCGA-E3-A3DZ  TCGA-E3-A3DZ  F           1.3.6.1.4.1.14519.5
   7 │ TCGA-THCA   TCGA-E3-A3E5  TCGA-E3-A3E5  M           1.3.6.1.4.1.14519.5
                                                               5 columns omitted
julia> tcia_studies(patient = "TCGA-QQ-A8VF")0×9 DataFrame

If the unique identifier (UID) for a study is known (a.k.a. StudyInstanceUID), then that can also be used

julia> tcia_studies(study = "1.3.6.1.4.1.14519.5.2.1.3023.4024.298690116465423805879206377806")0×9 DataFrame

Patient studies added after specific data

A list of visits/studies that were added after some date, formatted by YYYY-MM-DD, can be obtained by:

julia> tcia_newstudies(collection="TCGA-GBM", date="2015-01-01")106×3 DataFrame
 Row │ StudyInstanceUID                   PatientID     Collection
     │ String                             String15…     String15…
─────┼─────────────────────────────────────────────────────────────
   1 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0060  TCGA-GBM
   2 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…  TCGA-06-1806  TCGA-GBM
   3 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…  TCGA-06-1806  TCGA-GBM
   4 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0006  TCGA-GBM
   5 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0009  TCGA-GBM
   6 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0011  TCGA-GBM
   7 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0027  TCGA-GBM
   8 │ 1.3.6.1.4.1.14519.5.2.1.1706.400…  TCGA-02-0033  TCGA-GBM
  ⋮  │                 ⋮                       ⋮            ⋮
 100 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6285  TCGA-GBM
 101 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6656  TCGA-GBM
 102 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6657  TCGA-GBM
 103 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6661  TCGA-GBM
 104 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6662  TCGA-GBM
 105 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6663  TCGA-GBM
 106 │ 1.3.6.1.4.1.14519.5.2.1.1188.400…  TCGA-76-6664  TCGA-GBM
                                                    91 rows omitted

Imaging series

Each patient study consists of one or more imaging series which can be obtained by:

julia> tcia_series(collection = "TCGA-THCA")28×16 DataFrame
 Row │ PatientID     StudyInstanceUID                   SeriesInstanceUID      ⋯
     │ String15…     String                             String                 ⋯
─────┼──────────────────────────────────────────────────────────────────────────
   1 │ TCGA-DE-A4MD  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2. ⋯
   2 │ TCGA-DE-A4MD  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
   3 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
   4 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
   5 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2. ⋯
   6 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
   7 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
   8 │ TCGA-DE-A4MA  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
  ⋮  │      ⋮                        ⋮                                  ⋮      ⋱
  22 │ TCGA-DE-A4MC  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2. ⋯
  23 │ TCGA-DE-A4MC  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
  24 │ TCGA-DE-A4MB  1.3.6.1.4.1.14519.5.2.1.8421.401…  1.3.6.1.4.1.14519.5.2.
  25 │ TCGA-E3-A3DZ  1.3.6.1.4.1.14519.5.2.1.3023.401…  1.3.6.1.4.1.14519.5.2.
  26 │ TCGA-E3-A3DZ  1.3.6.1.4.1.14519.5.2.1.3023.401…  1.3.6.1.4.1.14519.5.2. ⋯
  27 │ TCGA-E3-A3E5  1.3.6.1.4.1.14519.5.2.1.3023.401…  1.3.6.1.4.1.14519.5.2.
  28 │ TCGA-E3-A3E5  1.3.6.1.4.1.14519.5.2.1.3023.401…  1.3.6.1.4.1.14519.5.2.
                                                  14 columns and 13 rows omitted
julia> tcia_series(patient = "TCGA-QQ-A8VF")15×16 DataFrame Row │ PatientID StudyInstanceUID SeriesInstanceUID ⋯ │ String15… String String ⋯ ─────┼────────────────────────────────────────────────────────────────────────── 1 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 2 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 3 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 4 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 5 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 6 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 7 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 8 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 9 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 10 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 11 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 12 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 13 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 14 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 15 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 14 columns omitted
julia> tcia_series(study = "1.3.6.1.4.1.14519.5.2.1.3023.4024.298690116465423805879206377806")6×16 DataFrame Row │ PatientID StudyInstanceUID SeriesInstanceUID ⋯ │ String15… String String ⋯ ─────┼────────────────────────────────────────────────────────────────────────── 1 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 2 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 3 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 4 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 5 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. ⋯ 6 │ TCGA-QQ-A8VF 1.3.6.1.4.1.14519.5.2.1.3023.402… 1.3.6.1.4.1.14519.5.2. 14 columns omitted
julia> tcia_series(modality = "CT", manufacturer = "TOSHIBA")2088×16 DataFrame Row │ PatientID StudyInstanceUID SeriesInstanceUID ⋯ │ String31… String String ⋯ ──────┼───────────────────────────────────────────────────────────────────────── 1 │ LIDC-IDRI-0104 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 ⋯ 2 │ LIDC-IDRI-0151 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 3 │ LIDC-IDRI-0156 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 4 │ LIDC-IDRI-0310 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 5 │ LIDC-IDRI-0315 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 ⋯ 6 │ LIDC-IDRI-0334 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 7 │ LIDC-IDRI-0346 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 8 │ LIDC-IDRI-0354 1.3.6.1.4.1.14519.5.2.1.6279.600… 1.3.6.1.4.1.14519.5 ⋮ │ ⋮ ⋮ ⋮ ⋱ 2082 │ AP-DRVN 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 ⋯ 2083 │ AP-6H6G 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 2084 │ AP-97PG 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 2085 │ AP-95DK 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 2086 │ AP-95DK 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 ⋯ 2087 │ AP-95DK 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 2088 │ AP-DRVN 1.3.6.1.4.1.14519.5.2.1.5438.560… 1.3.6.1.4.1.14519.5 14 columns and 2073 rows omitted
julia> tcia_series(bodypart = "EXTREMITY")625×16 DataFrame Row │ PatientID StudyInstanceUID SeriesInstanceUID ⋯ │ String15… String String ⋯ ─────┼────────────────────────────────────────────────────────────────────────── 1 │ STS_001 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. ⋯ 2 │ STS_010 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. 3 │ STS_001 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. 4 │ STS_001 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. 5 │ STS_010 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. ⋯ 6 │ STS_010 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. 7 │ STS_001 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. 8 │ STS_001 1.3.6.1.4.1.14519.5.2.1.5168.190… 1.3.6.1.4.1.14519.5. ⋮ │ ⋮ ⋮ ⋮ ⋱ 619 │ C3L-02846 1.3.6.1.4.1.14519.5.2.1.6450.262… 1.3.6.1.4.1.14519.5. ⋯ 620 │ C3L-02846 1.3.6.1.4.1.14519.5.2.1.6450.262… 1.3.6.1.4.1.14519.5. 621 │ C3N-00875 1.3.6.1.4.1.14519.5.2.1.3320.327… 1.3.6.1.4.1.14519.5. 622 │ Pseudo-PHI-009 1.3.6.1.4.1.14519.5.2.1.8700.966… 1.3.6.1.4.1.14519.5. 623 │ Pseudo-PHI-018 1.3.6.1.4.1.14519.5.2.1.8700.966… 1.3.6.1.4.1.14519.5. ⋯ 624 │ 8834647487 2.25.274670750841988288332269850… 2.25.227201128343065 625 │ 6614238035 2.25.141609806662491954314930913… 2.25.316416899981897 14 columns and 610 rows omitted

This query's importance is hinted by the smorgasbord of parameters it accepts. That's because this query returns the SeriesInstanceUID which is needed to download images. Although the above examples only show PatientID, the query actually returns more information which is not shown because of limited screen space. The complete list of columns are:

julia> series_dataframe = tcia_series(patient = "TCGA-QQ-A8VF");
julia> names(series_dataframe)16-element Vector{String}: "PatientID" "StudyInstanceUID" "SeriesInstanceUID" "Modality" "ProtocolName" "SeriesDate" "SeriesDescription" "BodyPartExamined" "SeriesNumber" "AnnotationsFlag" "Collection" "Manufacturer" "ManufacturerModelName" "SoftwareVersions" "Visibility" "ImageCount"
Note

The entire table could have been printed by:

show(series_dataframe, allrows = true, allcols = true)
Warning

Passing format = "json" will result in one fewer column. This is because the AnnotationsFlag field is returned for CSV output but not for JSON.

Imaging series size

The size (in bytes) and number of images for a given imaging series is given by

julia> tcia_series_size(series = "1.3.6.1.4.1.14519.5.2.1.4591.4001.241972527061347495484079664948")1×2 DataFrame
 Row │ TotalSizeInBytes  ObjectCount
     │ Float64           Int64
─────┼───────────────────────────────
   1 │        1.49149e8         1120
Warning

It is recommended that tcia_series_size() should not be used with format = json. This is because the json version interprets the TotalSizeInBytes as string/text rather than a number.

Service-Object Pairs (SOP)

Each imaging series consists of one or more images, each of which have a service-object-pair unique identifier (SOPInstanceUID). These can be listed by

julia> tcia_sop(series = "1.3.6.1.4.1.14519.5.2.1.4591.4001.241972527061347495484079664948")1120×1 DataFrame
  Row │ SOPInstanceUID
      │ String
──────┼───────────────────────────────────
    1 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    2 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    3 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    4 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    5 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    6 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    7 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
    8 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
  ⋮   │                 ⋮
 1114 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1115 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1116 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1117 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1118 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1119 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
 1120 │ 1.3.6.1.4.1.14519.5.2.1.4591.400…
                         1105 rows omitted

These identifiers are useful for accessing a specific image without having to download the entire imaging series.