{ "info": { "author": "Samuel L. Wolock", "author_email": "swolock@g.harvard.edu", "bugtrack_url": null, "classifiers": [], "description": "# Scrublet\n**S**ingle-**C**ell **R**emover of Do**ublet**s \n\nPython code for identifying doublets in single-cell RNA-seq data. For details and validation of the method, see our paper in [Cell Systems](https://www.sciencedirect.com/science/article/pii/S2405471218304745) or the preprint on [bioRxiv](https://www.biorxiv.org/content/early/2018/07/09/357368).\n\n#### Quick start:\nFor a typical workflow, including interpretation of predicted doublet scores, see the example [notebook](./examples/scrublet_basics.ipynb). \n\nGiven a raw (unnormalized) UMI counts matrix `counts_matrix` with cells as rows and genes as columns, calculate a doublet score for each cell: \n```python\nimport scrublet as scr\nscrub = scr.Scrublet(counts_matrix)\ndoublet_scores, predicted_doublets = scrub.scrub_doublets()\n```\n`scr.scrub_doublets()` simulates doublets from the observed data and uses a k-nearest-neighbor classifier to calculate a continuous `doublet_score` (between 0 and 1) for each transcriptome. The score is automatically thresholded to generate `predicted_doublets`, a boolean array that is `True` for predicted doublets and `False` otherwise. \n\n#### Best practices: \n- When working with data from multiple samples, run Scrublet on each sample separately. Because Scrublet is designed to detect technical doublets formed by the random co-encapsulation of two cells, it may perform poorly on merged datasets where the cell type proportions are not representative of any single sample. \n- Check that the doublet score threshold is reasonable (in an ideal case, separating the two peaks of a bimodal simulated doublet score histogram, as in [this example](./examples/scrublet_basics.ipynb)), and adjust manually if necessary.\n- Visualize the doublet predictions in a 2-D embedding (e.g., UMAP or t-SNE). Predicted doublets should mostly co-localize (possibly in multiple clusters). If they do not, you may need to adjust the doublet score threshold, or change the pre-processing parameters to better resolve the cell states present in your data.\n\n#### Installation:\nTo install with PyPI:\n```bash\npip install scrublet\n```\n\nTo install from source:\n```bash\ngit clone https://github.com/AllonKleinLab/scrublet.git\ncd scrublet\npip install -r requirements.txt\npip install --upgrade .\n```\n\n#### Old versions:\nPrevious versions can be found [here](./old_versions/).\n\n#### Other doublet detection tools:\n[DoubletFinder](https://github.com/chris-mcginnis-ucsf/DoubletFinder) \n[DoubletDecon](https://github.com/EDePasquale/DoubletDecon) \n[DoubletDetection](https://github.com/JonathanShor/DoubletDetection)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/allonkleinlab/scrublet", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "scrublet", "package_url": "https://pypi.org/project/scrublet/", "platform": "", "project_url": "https://pypi.org/project/scrublet/", "project_urls": { "Homepage": "https://github.com/allonkleinlab/scrublet" }, "release_url": "https://pypi.org/project/scrublet/0.2.1/", "requires_dist": [ "cython", "numpy", "scipy", "scikit-learn", "scikit-image", "matplotlib", "annoy", "numba", "pandas", "umap-learn" ], "requires_python": "", "summary": "Doublet prediction in single-cell RNA-sequencing data", "version": "0.2.1" }, "last_serial": 5482227, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "8eb1339c4c0409be00e9a412080d7191", "sha256": "81a3763c6d9b1e3482219c11a1a13f84732ed01fcaf68d740cf502ec0a2cab9d" }, "downloads": -1, "filename": "scrublet-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8eb1339c4c0409be00e9a412080d7191", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15203, "upload_time": "2019-04-18T17:54:42", "url": "https://files.pythonhosted.org/packages/a1/9b/17f3f05a126db52e42982737cd2398613b687f0a7ddda2bcae2546f4ec6c/scrublet-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "207ee4abce1f66cd1973ce8fb45094e1", "sha256": "0013a2852729503ac2162b44870ef85be2e8985403f387648c0ea270e9c4321a" }, "downloads": -1, "filename": "scrublet-0.2.tar.gz", "has_sig": false, "md5_digest": "207ee4abce1f66cd1973ce8fb45094e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13335, "upload_time": "2019-04-18T17:54:44", "url": "https://files.pythonhosted.org/packages/41/d3/59d5c84d4ce35e3d9ecef17c4040d46de6d6faac45d79b03f936f1336210/scrublet-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "895d77c88cb2c71ceed401ba6056b94a", "sha256": "ea716a6d074d823caca21e9bc2d4e54e7098ea70db237ff6d5c8f126a3cffd69" }, "downloads": -1, "filename": "scrublet-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "895d77c88cb2c71ceed401ba6056b94a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15382, "upload_time": "2019-07-03T15:11:10", "url": "https://files.pythonhosted.org/packages/10/b4/b0ca43b6a13f48be738b8c66135876fa4a8219b225343e2e46b9b0e0def7/scrublet-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60e477e5a792a640cdfceddd21b1bf5e", "sha256": "592b443292fdc69d4228ffdf63493d81a537d6ae987c3c631c5ca0d7654c99f6" }, "downloads": -1, "filename": "scrublet-0.2.1.tar.gz", "has_sig": false, "md5_digest": "60e477e5a792a640cdfceddd21b1bf5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13504, "upload_time": "2019-07-03T15:11:11", "url": "https://files.pythonhosted.org/packages/69/44/bec8309bab2a8b99e2306cbca9d346ed719f299cce3075136e0e6fdcfb0b/scrublet-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "895d77c88cb2c71ceed401ba6056b94a", "sha256": "ea716a6d074d823caca21e9bc2d4e54e7098ea70db237ff6d5c8f126a3cffd69" }, "downloads": -1, "filename": "scrublet-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "895d77c88cb2c71ceed401ba6056b94a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15382, "upload_time": "2019-07-03T15:11:10", "url": "https://files.pythonhosted.org/packages/10/b4/b0ca43b6a13f48be738b8c66135876fa4a8219b225343e2e46b9b0e0def7/scrublet-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60e477e5a792a640cdfceddd21b1bf5e", "sha256": "592b443292fdc69d4228ffdf63493d81a537d6ae987c3c631c5ca0d7654c99f6" }, "downloads": -1, "filename": "scrublet-0.2.1.tar.gz", "has_sig": false, "md5_digest": "60e477e5a792a640cdfceddd21b1bf5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13504, "upload_time": "2019-07-03T15:11:11", "url": "https://files.pythonhosted.org/packages/69/44/bec8309bab2a8b99e2306cbca9d346ed719f299cce3075136e0e6fdcfb0b/scrublet-0.2.1.tar.gz" } ] }