Skip to main content

BioTuring SpatialX Connector

Project description

BioTuring SpatialX Connector

Installation

!pip install -U spatialx_connector

Import

import warnings
warnings.filterwarnings("ignore")
import os

import spatialx_connector

from spatialx_connector import SpatialXConnector
from spatialx_connector import Technologies
from spatialx_connector import DefaultGroup
from spatialx_connector import Species

from spatialx_connector import ConnectorKeys
from spatialx_connector import SubmissionElementKeys
from spatialx_connector import ExtendSegmentationSubmission
from spatialx_connector import ExtendExpressionSubmission

Domain and Token

DOMAIN = "DOMAIN"
TOKEN = "TOKEN"

Explore Account

Information
connector = SpatialXConnector(domain=DOMAIN, token=TOKEN)
spatialx_connector.format_print(connector.info)
spatialx_connector.format_print(connector.groups)
Storage
spatialx_connector.format_print(connector.s3)
spatialx_connector.format_print(connector.folders)
Study Information
studies = connector.list_study(
    group=DefaultGroup.PERSONAL_WORKSPACE.value,
    species=Species.HUMAN.value,
)
spatialx_connector.format_print(studies)
study_details = connector.get_study_detail(studies[0][ConnectorKeys.STUDY_ID.value])
spatialx_connector.format_print(study_details)
Sample Information
samples = connector.list_sample(studies[0][ConnectorKeys.STUDY_ID.value])
spatialx_connector.format_print(samples)
sample_details = connector.get_sample_detail(samples[0][ConnectorKeys.SAMPLE_ID.value])
spatialx_connector.format_print(sample_details)

Uploading

uploading_results = connector.upload_file("/s3/colab/content/xenium/experiment.xenium")
spatialx_connector.format_print(uploading_results)
uploading_results = connector.upload_big_file("/s3/colab/content/xenium/morphology_mip.ome.tif", debug_mode=True)
spatialx_connector.format_print(uploading_results)
uploading_results = connector.upload_folder("/s3/colab/content/xenium", debug_mode=True)
spatialx_connector.format_print(uploading_results)

Submission

Submit data
visium_submission_information = connector.parse_data_information(
    "Visium_V2_Human_Colon_Cancer_P2",
    Technologies.VISIUM.value,
    os.path.join(
        connector.s3["bioturingpublic"],
        "SpatialX_datasets/Human_Colon_Cancer_P2/Visium_V2_Human_Colon_Cancer_P2"
    )
)
spatialx_connector.format_print(visium_submission_information)
xenium_submission_information = connector.parse_data_information(
    "Xenium_V1_Human_Colon_Cancer_P2_CRC_Add_on_FFPE",
    Technologies.XENIUM.value,
    os.path.join(
        connector.s3["bioturingpublic"],
        "SpatialX_datasets/Human_Colon_Cancer_P2/Xenium_V1_Human_Colon_Cancer_P2_CRC_Add_on_FFPE"
    )
)
spatialx_connector.format_print(xenium_submission_information)
submission_results = connector.submit(
    DefaultGroup.PERSONAL_WORKSPACE.value,
    Species.HUMAN.value,
    "10xgenomics",
    "Human_Colon_Cancer_P2",
    visium_submission_information
)
spatialx_connector.format_print(submission_results)
xenium_submission_results = connector.add_sample_data(
    submission_results[ConnectorKeys.STUDY_ID.value],
    submission_results[ConnectorKeys.SAMPLE_ID.value],
    xenium_submission_information,
)
submission_results[ConnectorKeys.SAMPLE_DATA.value].extend(xenium_submission_results[ConnectorKeys.SAMPLE_DATA.value])
spatialx_connector.format_print(submission_results)
Submit multiple samples
multiple_samples_submission_information = connector.parse_multiple_samples_information(
    Technologies.COSMX_VER1.value,
    os.path.join(
        connector.s3["bioturingpublic"],
        "SpatialX_datasets/COSMX_VER1"
    )
)
spatialx_connector.format_print(multiple_samples_submission_information)
multiple_samples_submission_results = connector.submit_multiple_samples(
    DefaultGroup.PERSONAL_WORKSPACE.value,
    Species.HUMAN.value,
    "Multiple CosMX Ver1",
    multiple_samples_submission_information
)
spatialx_connector.format_print(multiple_samples_submission_results)
Add extend elements
DATA_ID = "DATA ID"
sample_data_info = connector.get_sample_data_detail(DATA_ID)
spatialx_connector.format_print(sample_data_info)
add_segmentation_result = connector.add_sample_data_element(
    title="Proteomics Segmentation",
    study_id=sample_data_info[ConnectorKeys.STUDY_ID.value],
    sample_id=sample_data_info[ConnectorKeys.SAMPLE_ID.value],
    data_id=sample_data_info[ConnectorKeys.DATA_ID.value],
    adding_types=[ExtendSegmentationSubmission.PARQUET.value],
    paths={
        SubmissionElementKeys.SEGMENTATION.value: os.path.join(
            connector.s3["bioturingpublic"],
            "SpatialX_datasets/human_pancreas_codex/human_pancreas_segmentation.parquet",
        )
    }
)
spatialx_connector.format_print(add_segmentation_result)
sample_data_elements = connector.get_sample_data_elements(DATA_ID)
spatialx_connector.format_print(sample_data_elements)
add_expression_result = connector.add_sample_data_element(
    title="Proteomics Expression",
    study_id=sample_data_info[ConnectorKeys.STUDY_ID.value],
    sample_id=sample_data_info[ConnectorKeys.SAMPLE_ID.value],
    data_id=sample_data_info[ConnectorKeys.DATA_ID.value],
    adding_types=[ExtendExpressionSubmission.IMPORT_ANNDATA.value],
    paths={
        SubmissionElementKeys.EXPRESSION.value: os.path.join(
            connector.s3["bioturingpublic"],
            "SpatialX_datasets/human_pancreas_codex/human_pancreas_protein.h5ad",
        ),
    },
    args={
        SubmissionElementKeys.SPATIAL_ID.value: sample_data_elements[SubmissionElementKeys.CELL_CENTERS.value][0],
    }
)
spatialx_connector.format_print(add_expression_result)

Analysis

data_id = submission_results["sample_data"][-1]["data_id"]
data_id
Embeddings
response = connector.analysis.embeddings.pca(data_id=data_id, title="Connector - PCA")
spatialx_connector.format_print(response)
response = connector.analysis.embeddings.scvi(data_id=data_id, title="Connector - scVI", n_top_genes=2000)
spatialx_connector.format_print(response)
embeddings = connector.analysis.list_embedding(data_id)
spatialx_connector.format_print(embeddings)
response = connector.analysis.embeddings.umap(data_id=data_id, embedding_key=embeddings[0], title="Connector - UMAP")
spatialx_connector.format_print(response)
response = connector.analysis.embeddings.tsne(data_id=data_id, embedding_key=embeddings[0], title="Connector - tSNE")
spatialx_connector.format_print(response)
Clustering
response = connector.analysis.clustering.louvain(
    data_id=data_id,
    embedding_key=embeddings[0],
    resolution=0.1,
    title="Connector - Louvain",
)
spatialx_connector.format_print(response)
response = connector.analysis.clustering.kmeans(
    data_id=data_id,
    embedding_key=embeddings[0],
    n_clusters=5,
    title="Connector - k-means",
)
spatialx_connector.format_print(response)
Prediction
embeddings = connector.analysis.list_embedding(data_id)
spatialx_connector.format_print(embeddings)
metadata = connector.analysis.list_metadata(data_id)
spatialx_connector.format_print(metadata)
response = connector.analysis.prediction.metadata_reference(
    data_id=data_id,
    cluster_key=metadata[0],
    species=spatialx_connector.Species.HUMAN.value.value,
    title="Connector - Metadata Reference",
)
spatialx_connector.format_print(response)
Differential Expression
response = connector.analysis.de.differential_expression_genes(
    data_id_1=data_id,
    data_id_2=data_id,
    group_1_indices=[i for i in range(10000)],
    group_2_indices=[i for i in range(10000, 20000)],
    title="Connector - DE genes",
)
spatialx_connector.format_print(response)
Spatial Analysis
response = connector.analysis.spatial_analysis.region_segmentation(
    data_id=data_id,
    radius=50,
    mpp=0.2125,
    resolution=0.5,
    species=spatialx_connector.Species.HUMAN.value.value,
    title="Connector - Region Segmentation",
)
spatialx_connector.format_print(response)

Convert data from Lens

!pip install bioturing_connector
LENS_SC_HOST: str = "LENS_SC_HOST"
LENS_SC_TOKEN: str = "LENS_SC_TOKEN"
lens_sc_studies = connector.list_lens_sc_studies(
    host=LENS_SC_HOST, token=LENS_SC_TOKEN,
    group=spatialx_connector.DefaultGroup.PERSONAL_WORKSPACE,
    species=spatialx_connector.Species.HUMAN.value.value,
)
spatialx_connector.format_print(lens_sc_studies)
# Convert a study
connector.convert_data_from_lens(lens_sc_studies[0])
LENS_BULK_HOST: str = "LENS_BULK_HOST"
LENS_BULK_TOKEN: str = "LENS_BULK_TOKEN"
lens_bulk_studies = connector.list_lens_bulk_studies(
    host=LENS_BULK_HOST, token=LENS_BULK_TOKEN,
    group=spatialx_connector.DefaultGroup.PERSONAL_WORKSPACE,
    species=spatialx_connector.Species.HUMAN.value.value,
)
spatialx_connector.format_print(lens_bulk_studies)
# Convert multiple studies
connector.convert_data_from_lens(lens_bulk_studies)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spatialx_connector-0.1.6.tar.gz (17.6 kB view details)

Uploaded Source

File details

Details for the file spatialx_connector-0.1.6.tar.gz.

File metadata

  • Download URL: spatialx_connector-0.1.6.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.14

File hashes

Hashes for spatialx_connector-0.1.6.tar.gz
Algorithm Hash digest
SHA256 9f2afe17aa1593cb61de6a82a200a820a0d92327198481a28feca07ee74318ad
MD5 62ccb7045e68308eb3aa5f2090cfc43e
BLAKE2b-256 611fba2ddc3de71f9ad4c585a3ee96648826f3954525976862479776474507c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page