Skip to content
Snippets Groups Projects
LaminScape

iXL: Inferring eXpLainable algorithmic approaches to identifying cancer stages, cancer grades and regions of interest automatically from medical images

Suryadipto Sarkar, A S Aravinthakshan, Teresa Wu, Alvin C. Silva

LaminScape

Generating executable (LaminScape.app)

pyinstaller -w -F -i LaminScape.icns --add-data="templates:templates" --add-data="static:static" main.py

About

This is a repository that contains information on how to reproduce results corresponding to the cutaneous T cell lymphoma (CTCL) case study reported in Spatial cell graph analysis reveals skin tissue organization characteristic for cutaneous T cell lymphoma.

Summary of methods

Part-1: Gradient-driven stochastic random walk identifies urologic cancer stages from CT and MRI images

Python packages:

  • Network-GradR-Walk (access here)
  • Spatial-GradR-Walk (access here)

Background:

Part-2: Heterogeneity-based approach

Python packages:

  • Network-Heterogeneity

  • Spatial-Heterogeneity

Background:

  • SHouT(entropy, egophily, homophily) (access here)

  • Leibovici entropy, Altieri entropy

  • Spatial entropy (Moran's I, Geary's C)

Part-3: Classifying cancer ROIs by combining imaging-based heterogeneity in tumor microenvironments, in combination with molecular data (for example, gene expression data)

  • Can this help explain underlying molecular mechanisms (eg. gene and/ or protein expressions), and how they manifest in scans?

  • Very loosely related to this work (ECCB2024 poster presentation):

ECCB2024-heterogeneity-poster

Data

Overview


Description


Availability

Data will be made available under reasonable request to the corresponding author, Suryadipto Sarkar (more contact details below).

Installation

Install conda environment as follows (there also exists a requirements.txt)

conda create --name imaging_heterogeneity_study
conda activate imaging_heterogeneity_study
pip install scipy==1.10.1 numpy==1.23.5 squidpy==1.3.0 pandas==1.5.3 scikit-learn==1.2.2

Note: Additionally, modules math and statistics were used, however no installation is required as they are provided with Python by default.

Robustness testing

Pending

Scalability testing

Pending

Reproducing figures

Pending

Citing the work

MLA

Will be made available upon publication.

APA

Will be made available upon publication.

BibTex

Will be made available upon publication.

Contact

:envelope:  suryadipto.sarkar@fau.de
:envelope:  ssarka34@asu.edu
:envelope:  ssarkarmanipal@gmail.com

Impressum

Suryadipto Sarkar ("Surya"), MS

PhD Candidate
Biomedical Network Science Lab
Department of Artificial Intelligence in Biomedical Engineering (AIBE)
Friedrich-Alexander University Erlangen-Nürnberg (FAU)
Werner von Siemens Strasse
91052 Erlangen

MS in CEN from Arizona State University, AZ, USA.
B.Tech in ECE from MIT Manipal, KA, India.

Installation

Install conda environment as follows (there also exists an environment.yml but it contains more packages than necessary)

conda create --name robust python=3.7
conda activate robust
conda install numpy matplotlib pandas networkx pip jupyter
pip install pcst_fast

Running

You can simply run by calling

python3 robust.py data/data-example1-prec-puberty/BioGRID.txt data/data-example1-prec-puberty/prec-pub-seeds.txt prec_puberty.graphml

The positional arguments are:


[1] file with a list of seed genes (delimiter: newline-separated)
[2] path to output file (supported output file types: .graphml, .csv, others) [read more below]


The suffix of the path to the output file you specify, determine the format of the output.
You can either choose
- .graphml: A .graphml file is written that contains the following vertex properties: isSeed, significance, nrOfOccurrences, connected_components_id, trees
- .csv: A .csv file which contains a vertex table with #occurrences, %occurrences, terminal (isSeed) 
- everything else: An edge list

The optional arguments are:


[1] --network NETWORK					Description: Specify path to graph or identifier of networks shipped with ROBUST ('BioGRID', 'APID', 'STRING'), type=str or file (allowed types: .graphml, .txt, .csv, .tsv), default: 'BioGRID' [read more below]

Network input options:
	- A two-column edgelist. File types and corresponding delimiters are as follows: 1. '.txt' file should be space-separated 2. '.tsv' file should be tab-separated 3. '.csv' file should be comma-separated. No other file  formats except '.txt', '.csv' and '.tsv' are accepted at the moment.
	- A valid .graphml file
	- In-built network name {'BioGRID', 'APID', 'STRING'}


[2] --alpha ALPHA					Description: initial fraction for ROBUST, type=float, expected range=[0,1], default: 0.25

[3] --beta BETA						Description: reduction factor for ROBUST, type=float, expected range=[0,1], default: 0.90

[4] --n N						Description: # of steiner trees for ROBUST, type=int, expected range=(0,+inf], default: 30

[5] --tau TAU						Description: threshold value for ROBUST, type=float, expected range=(0,+inf], default: 0.1

[6] --namespace {'ENTREZ', 'GENE_SYMBOL', 'UNIPROT', 'ENSEMBL'}	Description: gene/ protein identifier options for study bias data, type=str, default: 'GENE_SYMBOL'

[7] --study-bias-scores					Description: specify edge weight function used by ROBUST, type=str, default: 'BAIT_USAGE' [read more below]

Study bias score input options:
	- A two-column file (delimiter: comma), where the first column is the gene or protein name (column datatype: string) and the second column is the study bias score (column datatype: int).
	- In-built study-bias-score options {'NONE' or 'None', 'BAIT_USAGE', 'STUDY_ATTENTION'} ('NONE' or 'None' leads to running ROBUST with uniform edge costs.)


--gamma							Description: Hyper-parameter gamma used by bias-aware edge weights. This hyperparameter regulates to what extent the study bias data is being leveraged when running ROBUST., type=float, expected range=[0,1], default: 1.00

Updating in-built PPI networks

python3 ./data/networks/update_inbuilt_ppi_networks.py

Updating study bias scores

python3 ./data/study_bias_scores/update_inbuilt_study_bias_scores.py

Running individual functions

.czi to .tiff disassembly

python3 czi_to_tiff_disassembly.py ../data/Stacks_single_sample_test ../data/Individual_single_sample_test --process_mode sum --vox_dim_1 0.4 --deconvolve False --deconvolution_iterations 5 --psf_kernel_size 10 --psf_sigma 0.75
python3 czi_to_tiff_disassembly.py ../data/Stacks_single_sample_test ../data/Sum_single_sample_test --process_mode sum --vox_dim_1 0.4

Stack and composite handling

python3 stack_and_composite_handling.py ../data/Individual_single_sample_test ../data/Composites_single_sample_test
python3 stack_and_composite_handling.py ../data/Sum_test_copy ../data/Composites_single_sample_test
python3 stack_and_composite_handling.py ../data/Sum_test ../data/Composites_single_sample_test

Evaluating ROBUST

For a large-scale empirical evaluation of ROBUST, please follow the instructions given here: https://github.com/bionetslab/robust-eval.

Citing ROBUST

Please cite ROBUST as follows:

  • citation will be added once available