semvec/pypi-packages huggingface dataset:
linkapy 1.7.0
A common framework to analyse multi-modal single-cell data.
Requires Python: <3.13,>=3.10

[![documentation](https://github.com/WardDeb/linkapy/actions/workflows/docs.yml/badge.svg)](https://github.com/WardDeb/linkapy/actions/workflows/docs.yml)
[![installation](https://github.com/WardDeb/linkapy/actions/workflows/pip.yml/badge.svg)](https://github.com/WardDeb/linkapy/actions/workflows/pip.yml)
[![lint](https://github.com/WardDeb/linkapy/actions/workflows/lint.yml/badge.svg)](https://github.com/WardDeb/linkapy/actions/workflows/lint.yml)
[![PyPI version](https://img.shields.io/pypi/v/linkapy)](https://pypi.org/project/linkapy/)
[![real data test](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_example.yml/badge.svg)](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_example.yml)
[![pytests](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_python.yml/badge.svg)](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_python.yml)
[![rusttests](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_rust.yml/badge.svg)](https://github.com/FunctionalEpigeneticsLab/linkapy/actions/workflows/test_rust.yml)
![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/WardDeb/d0010eb142b962632f94c164c502b506/raw/coverage.json)
![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/WardDeb/f4d532defe4f2caecec457d6653d933e/raw/coverage.json)
# linkapy
A framework to process and analyse multi-modal single-cell data.
Linkapy is mainly used to process single-cell methylation data, and is focused on creating an integrated (muData) object of multimodal single-cell data. In this context it means that multiple modalities (e.g. accessibility, DNA methylation, RNA expression) are available from the same cell. 

# Documentation

Note that this package is still in development and is prone to change without notice. 
A rudimentary [documentation](https://linkapy.readthedocs.io/en/latest/) is available.

# Quickstart

  > pip install linkapy  
  > linkapy --help
specula 1.0.1
PYramid Simulator Software for Adaptive OpTics Arcetri
Requires Python: >=3.8
Keywords: Adaptive Optics, Astrophysics, INAF, Arcetri

# SPECULA
Python AO end-to-end simulator

SPECULA is a Python-based, object-oriented software derived from [PASSATA](https://arxiv.org/abs/1607.07624) and developed
by the Adaptive Optics group at the Arcetri Observatory for end-to-end Monte-Carlo simulations of adaptive optics systems.
It can be accelerated using GPU-CUDA via CuPy.

See the documentation here: [specula.readthedocs.io](https://specula.readthedocs.io/en/latest/)

## Directories

- **docs**: contains the documentation.
- **config**: contains functions and parameter files to calibrate and run a closed loop of an adaptive optics system (single-conjugated, multi-conjugated, natural, laser, ...).
- **specula**: the main library, structured as follows:
  - **data**: data required by utility functions.
  - **data_objects**: classes that wrap the data and provide methods to access them.
  - **display**: classes for data visualization.
  - **lib**: utility functions used by multiple objects.
  - **processing_objects**: classes that model the simulation elements as a function of inputs and time.
  - **scripts**: various scripts.
- **test**: contains functions to test SPECULA using the `unittest` framework.

## Requirements

- Python 3.8+
- numpy
- scipy
- matplotlib
- flask
- flask-socketio
- socketio
- cupy (for GPU acceleration, optional)

### Optional libraries

Some features require additional libraries:
- **orthogram**: for automatic block diagram creation (see [orthogram](https://pypi.org/project/orthogram/), requires **pycairo**)
- **control**: for conversion of transfer function system in SPECULA format and vice-versa and analysis of transfer function

## Contributing to SPECULA
To contribute to SPECULA, follow these steps:

1. Fork this repository.
2. Create a branch: `git checkout -b <branch_name>`
3. Make your changes and **add tests for the new functionality.**
4. Commit your changes: `git commit -m '<commit_message>'`
5. Push to the branch: `git push`
6. Create the pull request.

We require tests for all new features to ensure the stability of the project.

## Citation

If you use SPECULA in your research, please cite:

```bibtex
@article{specula2026,
  author = {Fabio Rossi and Alfio Puglisi and Guido Agapito},
  title = {{Introducing a new generation adaptive optics simulation framework: from PASSATA to SPECULA}},
  volume = {12},
  journal = {Journal of Astronomical Telescopes, Instruments, and Systems},
  number = {1},
  publisher = {SPIE},
  pages = {019001},
  year = {2026},
  doi = {10.1117/1.JATIS.12.1.019001},
  URL = {https://doi.org/10.1117/1.JATIS.12.1.019001}
}
```