Metadata-Version: 2.4
Name: scloop
Version: 0.1.24
Summary: single-cell loop analysis
Author-email: "Zhiyuan(Stan) Yu and Idse Heemskerk" <zyyu@umich.edu>
Project-URL: Issues, https://github.com/stanfish06/scloop/issues
Project-URL: Repository, https://github.com/stanfish06/scloop.git
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cython>=3.0.12
Requires-Dist: glasbey==0.3
Requires-Dist: igraph>=0.11
Requires-Dist: loguru==0.7.3
Requires-Dist: numba>=0.62.1
Requires-Dist: numpy<2
Requires-Dist: pandas
Requires-Dist: pip>=25.2
Requires-Dist: pydantic>=2.11.4
Requires-Dist: pygam>=0.12
Requires-Dist: pynndescent>=0.5.13
Requires-Dist: pytest>=8.4
Requires-Dist: rich==14.2
Requires-Dist: scanpy[leiden]>=1.11.2
Requires-Dist: scikit-misc>=0.5.2
Requires-Dist: statsmodels==0.14.4
Requires-Dist: tensorflow>=2.18.1
Requires-Dist: torch
Requires-Dist: torchdyn>=1.0.6
Requires-Dist: torchvision
Requires-Dist: tqdm-joblib>=0.0.5
Requires-Dist: umap-learn>=0.5.7
Dynamic: license-file

# scloop - single-cell loop analysis

[![CI](https://github.com/stanfish06/scLoop/actions/workflows/ci.yml/badge.svg)](https://github.com/stanfish06/scLoop/actions/workflows/ci.yml)
[![Test Import](https://github.com/stanfish06/scLoop/actions/workflows/test-import.yml/badge.svg)](https://github.com/stanfish06/scLoop/actions/workflows/test-import.yml)
[![Test Build](https://github.com/stanfish06/scLoop/actions/workflows/test-build.yml/badge.svg)](https://github.com/stanfish06/scLoop/actions/workflows/test-build.yml)
[![PyPI](https://img.shields.io/pypi/v/scloop)](https://pypi.org/project/scloop)

**Note: this package is in early stages of development.**

scLoop is a library to identify statistically significant loops in single-cell RNA-seq data.

![persistent homology](https://raw.githubusercontent.com/stanfish06/scloop/master/examples/loop.png)

## Basic Usage
```python
import scloop as scl
# Preprocess anndata
scl.pp.prepare_adata(adata, downsample=True, n_downsample=500)
# Identify statistically significant loops
scl.tl.find_loops(adata, ...)
# Compute trajectories, gene trends, and important features of each loop
scl.tl.analyze_loops(adata, ...)
# Match loops across datasets
scl.tl.match_loops([adata1, adata2, ...], ...)
```

## Build Instructions
```bash
make build
```

or

```bash
make rebuild
```

## Virtual Envrionemnt
```bash
make sync
```

or

```bash
make full-sync
```

to prevent partial compilation of some modules

## Installation
**Note: this package is in early stages of development. The current build will have issues.**
```bash
pip install scloop
```

## Project Structure
```
src/scloop/
├── analyzing
│   ├── bootstrap.py
│   ├── feature_selection.py
│   ├── gene_trend.py
│   ├── hodge.py
│   ├── __init__.py
│   └── stats.py
├── benchmarking
│   └── __init__.py
├── computing
│   ├── boundary.py
│   ├── hodge_decomposition.py
│   ├── homology.py
│   ├── __init__.py
│   ├── loops.py
│   └── matching.py
├── data
│   ├── analysis_containers.py
│   ├── base_components.py
│   ├── boundary.py
│   ├── constants.py
│   ├── containers.py
│   ├── __init__.py
│   ├── metadata.py
│   ├── ripser.cpp
│   ├── ripser.hpp
│   ├── ripser_lib.cpp
│   ├── ripser_lib.pyx
│   ├── types.py
│   └── utils.py
├── __init__.py
├── io
│   └── __init__.py
├── matching
│   ├── cross_dataset.py
│   ├── data_modules.py
│   ├── __init__.py
│   ├── mlp.py
│   └── nf.py
├── plotting
│   ├── _cross_match.py
│   ├── custom_colormaps.py
│   ├── _hodge.py
│   ├── _homology.py
│   ├── __init__.py
│   ├── _trajectory.py
│   └── _utils.py
├── preprocessing
│   ├── delve
│   │   ├── delve.py
│   │   ├── __init__.py
│   │   └── kh.py
│   ├── downsample.py
│   ├── __init__.py
│   └── prepare.py
├── py.typed
├── tools
│   ├── _cross_match.py
│   ├── __init__.py
│   └── _loops.py
└── utils
    ├── distance_metrics
    │   ├── discrete-frechet-distance
    │   ├── frechet.cpp
    │   ├── frechet_py.py
    │   ├── frechet.pyx
    │   └── __init__.py
    ├── __init__.py
    ├── linear_algebra_gf2
    │   ├── gf2_toolkit_lib.pyx
    │   ├── __init__.py
    │   ├── m4ri_lib.c
    │   └── m4ri_lib.pyx
    ├── logging.py
    └── pvalues.py
```
