echidna-sc


Nameechidna-sc JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/azizilab/echidna
SummaryMapping genotype to phenotype through joint probabilistic modeling of single-cell gene expression and chromosomal copy number variation.
upload_time2024-12-16 00:57:32
maintainerNone
docs_urlNone
authorJoy Linyue Fan
requires_python<4.0,>=3.10
licenseMIT
keywords scrna wgs cnv
VCS
bugtrack_url
requirements scanpy pandas numpy seaborn hmmlearn pyro-ppl graphviz requests scikit-learn leidenalg
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Echidna
<img src=./echidna_logo.png width="100" />

 A Bayesian framework for quantifying gene dosage effect impacting phenotypic plasticity through integrating single-cell RNA sequencing (scRNA-seq) and bulk whole-genome sequencing (WGS) from a single or multiple time points. 


<img src=./echidna_concept.png width="800" />


# Tutorial

There are four example notebooks:

1. 1-single-timepoint.ipynb
2. 2-multi-timepoint.ipynb
3. 3-infer-gene-dosage.ipynb
4. 4-echidna-model.ipynb

The notebooks are meant to be run sequentially, and they build off of each other.

Notebook 1 introduces you to the package - preparing your data, setting hyperparamters, performing posterior predictive checks - with data collected from a single point in time.

In notebook 2, we look at a multi-timepoint setting, where we have paired single-cell and WGS data collected over time. 

The saved model runs from notebook 2 will be used in notebook 3, where you will see how to infer amplifications and deletions by cluster of genes across a given genome. This notebook also shows you how to calculate and plot gene dosage effect with Echidna.

Notebook 4 is meant to show you how to do more custom work with the model. We package together many functions for your convenience, but this notebook will show you how to work directly with the model for the experiments not covered in the package. Some [Pyro](https://pyro.ai/) knowledge is assumed.

# Echidna Configuration Settings

## `.obs` Labels

| Setting        | Type   | Default         | Description                               |
|----------------|--------|-----------------|-------------------------------------------|
| `timepoint_label` | `str`  | `"timepoint"`    | Label for timepoints in the data.         |
| `counts_layer`    | `str`  | `"counts"`       | Name of the counts layer in the data.     |
| `clusters`        | `str`  | `"leiden"`       | Clustering method used in the data. This can also be celltype annotations, if you have them.       |

## Training Parameters

| Setting         | Type   | Default         | Description                                               |
|-----------------|--------|-----------------|-----------------------------------------------------------|
| `seed`          | `int`  | `42`            | Random seed for reproducibility.                          |
| `n_steps`       | `int`  | `10000`         | Maximum number of steps for Stochastic Variational Inference (SVI). |
| `learning_rate` | `float`| `0.1`           | Learning rate for the Adam optimizer.                     |
| `val_split`     | `float`| `0.1`           | Percentage of training data to use for validation.         |
| `patience`      | `int`  | `30`            | Early stopping patience (set to >0 to enable early stopping). |
| `device`        | `str`  | `"cuda" if is_available() else "cpu"` | Device to use for training (GPU if available, otherwise CPU). |
| `verbose`       | `bool` | `True`          | Whether to enable logging output.                         |

## Model Hyperparameters

| Setting              | Type    | Default   | Description                                                                        |
|----------------------|---------|-----------|------------------------------------------------------------------------------------|
| `inverse_gamma`       | `bool`  | `False`   | Whether to use inverse gamma for noisier data.                                     |
| `lkj_concentration`   | `float` | `1.0`     | Concentration parameter of LKJ prior. Values > 1.0 result in more diagonal covariance matrices. |
| `q_shape_rate_scaler` | `float` | `10.0`    | Scaler for the shape and rate parameters of the covariance diagonal for variational inference. |
| `q_corr_init`         | `float` | `0.01`    | Initial scale of the variational correlation.                                      |
| `q_cov_scaler`        | `float` | `0.01`    | Scaler for the covariance of the variational correlation.                          |
| `eta_mean_init`       | `float` | `2.0`     | Initial mean value for the eta parameter.                                          |
| `eps`                 | `float` | `5e-3`    | Small constant added to the diagonal to ensure positive definiteness (PD).         |


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/azizilab/echidna",
    "name": "echidna-sc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "scRNA, wgs, cnv",
    "author": "Joy Linyue Fan",
    "author_email": "lf2684@columbia.edu",
    "download_url": "https://files.pythonhosted.org/packages/04/6a/12df6bf6557eebf51e4516a71cb8abecc65419c1f15429493351aba29274/echidna_sc-1.0.0.tar.gz",
    "platform": null,
    "description": "# Echidna\n<img src=./echidna_logo.png width=\"100\" />\n\n A Bayesian framework for quantifying gene dosage effect impacting phenotypic plasticity through integrating single-cell RNA sequencing (scRNA-seq) and bulk whole-genome sequencing (WGS) from a single or multiple time points. \n\n\n<img src=./echidna_concept.png width=\"800\" />\n\n\n# Tutorial\n\nThere are four example notebooks:\n\n1. 1-single-timepoint.ipynb\n2. 2-multi-timepoint.ipynb\n3. 3-infer-gene-dosage.ipynb\n4. 4-echidna-model.ipynb\n\nThe notebooks are meant to be run sequentially, and they build off of each other.\n\nNotebook 1 introduces you to the package - preparing your data, setting hyperparamters, performing posterior predictive checks - with data collected from a single point in time.\n\nIn notebook 2, we look at a multi-timepoint setting, where we have paired single-cell and WGS data collected over time. \n\nThe saved model runs from notebook 2 will be used in notebook 3, where you will see how to infer amplifications and deletions by cluster of genes across a given genome. This notebook also shows you how to calculate and plot gene dosage effect with Echidna.\n\nNotebook 4 is meant to show you how to do more custom work with the model. We package together many functions for your convenience, but this notebook will show you how to work directly with the model for the experiments not covered in the package. Some [Pyro](https://pyro.ai/) knowledge is assumed.\n\n# Echidna Configuration Settings\n\n## `.obs` Labels\n\n| Setting        | Type   | Default         | Description                               |\n|----------------|--------|-----------------|-------------------------------------------|\n| `timepoint_label` | `str`  | `\"timepoint\"`    | Label for timepoints in the data.         |\n| `counts_layer`    | `str`  | `\"counts\"`       | Name of the counts layer in the data.     |\n| `clusters`        | `str`  | `\"leiden\"`       | Clustering method used in the data. This can also be celltype annotations, if you have them.       |\n\n## Training Parameters\n\n| Setting         | Type   | Default         | Description                                               |\n|-----------------|--------|-----------------|-----------------------------------------------------------|\n| `seed`          | `int`  | `42`            | Random seed for reproducibility.                          |\n| `n_steps`       | `int`  | `10000`         | Maximum number of steps for Stochastic Variational Inference (SVI). |\n| `learning_rate` | `float`| `0.1`           | Learning rate for the Adam optimizer.                     |\n| `val_split`     | `float`| `0.1`           | Percentage of training data to use for validation.         |\n| `patience`      | `int`  | `30`            | Early stopping patience (set to >0 to enable early stopping). |\n| `device`        | `str`  | `\"cuda\" if is_available() else \"cpu\"` | Device to use for training (GPU if available, otherwise CPU). |\n| `verbose`       | `bool` | `True`          | Whether to enable logging output.                         |\n\n## Model Hyperparameters\n\n| Setting              | Type    | Default   | Description                                                                        |\n|----------------------|---------|-----------|------------------------------------------------------------------------------------|\n| `inverse_gamma`       | `bool`  | `False`   | Whether to use inverse gamma for noisier data.                                     |\n| `lkj_concentration`   | `float` | `1.0`     | Concentration parameter of LKJ prior. Values > 1.0 result in more diagonal covariance matrices. |\n| `q_shape_rate_scaler` | `float` | `10.0`    | Scaler for the shape and rate parameters of the covariance diagonal for variational inference. |\n| `q_corr_init`         | `float` | `0.01`    | Initial scale of the variational correlation.                                      |\n| `q_cov_scaler`        | `float` | `0.01`    | Scaler for the covariance of the variational correlation.                          |\n| `eta_mean_init`       | `float` | `2.0`     | Initial mean value for the eta parameter.                                          |\n| `eps`                 | `float` | `5e-3`    | Small constant added to the diagonal to ensure positive definiteness (PD).         |\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Mapping genotype to phenotype through joint probabilistic modeling of single-cell gene expression and chromosomal copy number variation.",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/azizilab/echidna",
        "Repository": "https://github.com/azizilab/echidna"
    },
    "split_keywords": [
        "scrna",
        " wgs",
        " cnv"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "140d31a5b9851fc08724c3fcb5bb2967c0bc793a30063a83eb50cb49966f17d0",
                "md5": "c99595fa3736bff47c6d5cf4bdc4c575",
                "sha256": "548dc1e445d1505a92302b370d353654815a312d04621818c477bad6b7d98d6a"
            },
            "downloads": -1,
            "filename": "echidna_sc-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c99595fa3736bff47c6d5cf4bdc4c575",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 38762,
            "upload_time": "2024-12-16T00:57:29",
            "upload_time_iso_8601": "2024-12-16T00:57:29.597920Z",
            "url": "https://files.pythonhosted.org/packages/14/0d/31a5b9851fc08724c3fcb5bb2967c0bc793a30063a83eb50cb49966f17d0/echidna_sc-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "046a12df6bf6557eebf51e4516a71cb8abecc65419c1f15429493351aba29274",
                "md5": "d06e48790d713d1f9a2fdd269d89a319",
                "sha256": "ab4037371f1908655415710993f8bbf3db65571d6e9cabc41368f028be44ad59"
            },
            "downloads": -1,
            "filename": "echidna_sc-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d06e48790d713d1f9a2fdd269d89a319",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 33951,
            "upload_time": "2024-12-16T00:57:32",
            "upload_time_iso_8601": "2024-12-16T00:57:32.034799Z",
            "url": "https://files.pythonhosted.org/packages/04/6a/12df6bf6557eebf51e4516a71cb8abecc65419c1f15429493351aba29274/echidna_sc-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-16 00:57:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "azizilab",
    "github_project": "echidna",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "scanpy",
            "specs": [
                [
                    ">=",
                    "1.10"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.21"
                ]
            ]
        },
        {
            "name": "seaborn",
            "specs": []
        },
        {
            "name": "hmmlearn",
            "specs": []
        },
        {
            "name": "pyro-ppl",
            "specs": [
                [
                    ">=",
                    "1.9.1"
                ]
            ]
        },
        {
            "name": "graphviz",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "scikit-learn",
            "specs": []
        },
        {
            "name": "leidenalg",
            "specs": []
        }
    ],
    "lcname": "echidna-sc"
}
        
Elapsed time: 0.39853s