pyseqalignment 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyseqalign/__init__.py +14 -0
- pyseqalign/core/__init__.py +12 -0
- pyseqalign/core/alignment.py +67 -0
- pyseqalign/core/needleman_wunsch.py +122 -0
- pyseqalign/core/smith_waterman.py +173 -0
- pyseqalign/learning/__init__.py +20 -0
- pyseqalign/learning/aleph.py +212 -0
- pyseqalign/learning/aleph_files/__init__.py +0 -0
- pyseqalign/learning/aleph_files/aleph_swi_ak.pl +10420 -0
- pyseqalign/learning/base.py +68 -0
- pyseqalign/learning/popper.py +215 -0
- pyseqalign/learning/task_builder.py +213 -0
- pyseqalign/prolog/__init__.py +5 -0
- pyseqalign/prolog/engine.py +102 -0
- pyseqalign/prolog/knowledge/__init__.py +0 -0
- pyseqalign/prolog/knowledge/amino_acids.pl +53 -0
- pyseqalign/prolog/knowledge/blosum50.pl +800 -0
- pyseqalign/prolog/knowledge/defaults.pl +15 -0
- pyseqalign/prolog/knowledge/distances.pl +119 -0
- pyseqalign/scoring/__init__.py +11 -0
- pyseqalign/scoring/distance.py +100 -0
- pyseqalign/scoring/matrices.py +362 -0
- pyseqalign/scoring/matrix_data/BLOSUM100 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM50 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM60 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM62 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM70 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM80 +31 -0
- pyseqalign/scoring/matrix_data/BLOSUM90 +31 -0
- pyseqalign/scoring/matrix_data/PAM150 +34 -0
- pyseqalign/scoring/matrix_data/PAM200 +34 -0
- pyseqalign/scoring/matrix_data/PAM250 +34 -0
- pyseqalign/scoring/matrix_data/PAM50 +34 -0
- pyseqalign/scoring/matrix_data/__init__.py +0 -0
- pyseqalign/utils/__init__.py +9 -0
- pyseqalign/utils/helpers.py +47 -0
- pyseqalignment-0.1.0.dist-info/METADATA +317 -0
- pyseqalignment-0.1.0.dist-info/RECORD +41 -0
- pyseqalignment-0.1.0.dist-info/WHEEL +5 -0
- pyseqalignment-0.1.0.dist-info/licenses/LICENSE +21 -0
- pyseqalignment-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyseqalignment
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: pySeqAlign -- sequence alignment with Prolog-style distance functions and ILP learning
|
|
5
|
+
Author-email: Andreas Karwath <a.karwath@bham.ac.uk>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/athro/pySeqAlign
|
|
8
|
+
Project-URL: Repository, https://github.com/athro/pySeqAlign
|
|
9
|
+
Project-URL: Issues, https://github.com/athro/pySeqAlign/issues
|
|
10
|
+
Keywords: sequence-alignment,prolog,smith-waterman,needleman-wunsch,bioinformatics,ilp,inductive-logic-programming
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: numpy>=1.24
|
|
25
|
+
Provides-Extra: prolog
|
|
26
|
+
Requires-Dist: janus_swi>=1.5; extra == "prolog"
|
|
27
|
+
Provides-Extra: popper
|
|
28
|
+
Requires-Dist: clingo>=5.6; extra == "popper"
|
|
29
|
+
Provides-Extra: learning
|
|
30
|
+
Requires-Dist: janus_swi>=1.5; extra == "learning"
|
|
31
|
+
Requires-Dist: clingo>=5.6; extra == "learning"
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
35
|
+
Requires-Dist: ruff>=0.4; extra == "dev"
|
|
36
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
37
|
+
Dynamic: license-file
|
|
38
|
+
|
|
39
|
+
# pySeqAlign
|
|
40
|
+
|
|
41
|
+
Sequence alignment library with Prolog-style distance functions and ILP-based rule learning.
|
|
42
|
+
|
|
43
|
+
pySeqAlign provides Smith-Waterman (local) and Needleman-Wunsch (global) sequence alignment algorithms with pluggable distance/scoring functions. Distance functions can be defined natively in Python, via Prolog predicates, or *learned from data* using Inductive Logic Programming (ILP). This enables alignment of structured logical atoms beyond simple character or amino acid sequences.
|
|
44
|
+
|
|
45
|
+
> **Install:** the package is published on PyPI as **`pyseqalignment`**
|
|
46
|
+
> (the name `pyseqalign` was blocked by PyPI's name-similarity guard). The
|
|
47
|
+
> import package is `pyseqalign`:
|
|
48
|
+
>
|
|
49
|
+
> ```bash
|
|
50
|
+
> pip install pyseqalignment
|
|
51
|
+
> ```
|
|
52
|
+
> ```python
|
|
53
|
+
> import pyseqalign
|
|
54
|
+
> ```
|
|
55
|
+
|
|
56
|
+
## Features
|
|
57
|
+
|
|
58
|
+
- **Smith-Waterman** local alignment with k-best non-overlapping results
|
|
59
|
+
- **Needleman-Wunsch** global alignment
|
|
60
|
+
- **Prolog-based distance functions** via SWI-Prolog integration (optional)
|
|
61
|
+
- **Substitution matrices** -- BLOSUM (50, 60, 62, 70, 80, 90, 100) and PAM (50, 150, 200, 250) bundled; any NCBI-format matrix loadable from file or downloaded at runtime
|
|
62
|
+
- **Nienhuys-Cheng distance** for recursive structural comparison of logical atoms
|
|
63
|
+
- **ILP learning** of alignment rules and distance predicates:
|
|
64
|
+
- **Aleph** backend -- classic ILP system (Srinivasan, 2001)
|
|
65
|
+
- **Popper** backend -- modern ILP via learning from failures (Cropper & Morel, 2021)
|
|
66
|
+
- **Pure Python** core -- no C extension required (unlike the legacy version)
|
|
67
|
+
|
|
68
|
+
## Installation
|
|
69
|
+
|
|
70
|
+
### Prerequisites
|
|
71
|
+
|
|
72
|
+
- **Python >= 3.10** (tested on 3.10 -- 3.14)
|
|
73
|
+
- **SWI-Prolog** (optional, for Prolog-based scoring and ILP learning)
|
|
74
|
+
- **Clingo** (optional, for the Popper ILP backend)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# macOS (Homebrew)
|
|
78
|
+
brew install swi-prolog clingo
|
|
79
|
+
|
|
80
|
+
# Ubuntu / Debian
|
|
81
|
+
sudo apt install swi-prolog gringo
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Setting up with pyenv (recommended)
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Install a Python version
|
|
88
|
+
pyenv install 3.13.9
|
|
89
|
+
|
|
90
|
+
# Create a pyenv virtualenv
|
|
91
|
+
pyenv virtualenv 3.13.9 pyseqalign-env
|
|
92
|
+
|
|
93
|
+
# Activate it for this project directory
|
|
94
|
+
cd pySeqAlign
|
|
95
|
+
pyenv local pyseqalign-env
|
|
96
|
+
|
|
97
|
+
# Install all dependencies
|
|
98
|
+
pip install -r requirements.txt
|
|
99
|
+
pip install -e ".[learning,dev]"
|
|
100
|
+
|
|
101
|
+
# Register the Jupyter kernel so notebooks can use this environment
|
|
102
|
+
pip install ipykernel
|
|
103
|
+
python -m ipykernel install --user --name pyseqalign-env --display-name "Python (pySeqAlign)"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Setting up with venv (system Python)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
cd pySeqAlign
|
|
110
|
+
python3 -m venv .venv
|
|
111
|
+
source .venv/bin/activate # Linux / macOS
|
|
112
|
+
# .venv\Scripts\activate # Windows
|
|
113
|
+
|
|
114
|
+
# Install all dependencies
|
|
115
|
+
pip install -r requirements.txt
|
|
116
|
+
pip install -e ".[learning,dev]"
|
|
117
|
+
|
|
118
|
+
# Register the Jupyter kernel
|
|
119
|
+
pip install ipykernel
|
|
120
|
+
python -m ipykernel install --user --name pyseqalign-env --display-name "Python (pySeqAlign)"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Optional dependencies
|
|
124
|
+
|
|
125
|
+
Install selectively if you don't need everything:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Core only (no Prolog, no ILP)
|
|
129
|
+
pip install -e .
|
|
130
|
+
|
|
131
|
+
# Prolog-based distance functions (requires SWI-Prolog)
|
|
132
|
+
pip install -e ".[prolog]"
|
|
133
|
+
|
|
134
|
+
# Popper ILP backend's solver (Clingo). The Popper system itself is not on
|
|
135
|
+
# PyPI -- install it separately (see the note below).
|
|
136
|
+
pip install -e ".[popper]"
|
|
137
|
+
|
|
138
|
+
# Prolog + Clingo for the ILP backends (Popper installed separately)
|
|
139
|
+
pip install -e ".[learning]"
|
|
140
|
+
|
|
141
|
+
# Development tools (pytest, ruff, mypy)
|
|
142
|
+
pip install -e ".[dev]"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Using requirements.txt
|
|
146
|
+
|
|
147
|
+
A `requirements.txt` is provided listing all Python dependencies (core,
|
|
148
|
+
Prolog, Popper, Jupyter, and development tools):
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
pip install -r requirements.txt
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
> **Note (Python 3.14):** Popper currently uses `pkg_resources`, which was
|
|
155
|
+
> removed from `setuptools>=81`. If you are on Python 3.14, install
|
|
156
|
+
> `setuptools<81` before Popper: `pip install 'setuptools<81'`.
|
|
157
|
+
>
|
|
158
|
+
> **Note:** Popper is **not available on PyPI**, so it cannot be a declared
|
|
159
|
+
> dependency (PyPI forbids direct-URL deps). The `popper`/`learning` extras
|
|
160
|
+
> install its solver (Clingo); install the Popper system itself from the
|
|
161
|
+
> actively maintained [GitHub repository](https://github.com/logic-and-learning-lab/Popper)
|
|
162
|
+
> (v4.2.0+):
|
|
163
|
+
>
|
|
164
|
+
> ```bash
|
|
165
|
+
> pip install git+https://github.com/logic-and-learning-lab/Popper@main
|
|
166
|
+
> ```
|
|
167
|
+
|
|
168
|
+
## Quick Start
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
from pyseqalign import SmithWaterman, NeedlemanWunsch
|
|
172
|
+
from pyseqalign.scoring import Blosum50
|
|
173
|
+
|
|
174
|
+
# Local alignment with BLOSUM50 scoring
|
|
175
|
+
sw = SmithWaterman(scoring=Blosum50(), gap_penalty=-8.0)
|
|
176
|
+
results = sw.align(seq1, seq2, k=4, min_score=2.0)
|
|
177
|
+
|
|
178
|
+
for alignment in results:
|
|
179
|
+
print(f"Score: {alignment.score}")
|
|
180
|
+
print(f" Query: {alignment.query}")
|
|
181
|
+
print(f" Target: {alignment.target}")
|
|
182
|
+
|
|
183
|
+
# Global alignment
|
|
184
|
+
nw = NeedlemanWunsch(scoring=Blosum50(), gap_penalty=-8.0)
|
|
185
|
+
result = nw.align(seq1, seq2)
|
|
186
|
+
print(f"Score: {result.score}")
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Substitution Matrices
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
from pyseqalign.scoring import SubstitutionMatrix
|
|
193
|
+
|
|
194
|
+
# Load a bundled matrix by name
|
|
195
|
+
blosum62 = SubstitutionMatrix.from_bundled("BLOSUM62")
|
|
196
|
+
pam250 = SubstitutionMatrix.from_bundled("PAM250")
|
|
197
|
+
|
|
198
|
+
# Use with any aligner
|
|
199
|
+
sw = SmithWaterman(scoring=blosum62, gap_penalty=-8.0)
|
|
200
|
+
|
|
201
|
+
# Load from any NCBI-format file on disk
|
|
202
|
+
custom = SubstitutionMatrix.from_file("/path/to/my/MATRIX")
|
|
203
|
+
|
|
204
|
+
# Download directly from the NCBI FTP server at runtime
|
|
205
|
+
pam120 = SubstitutionMatrix.from_ncbi("PAM120")
|
|
206
|
+
|
|
207
|
+
# List all bundled matrices
|
|
208
|
+
print(SubstitutionMatrix.list_bundled())
|
|
209
|
+
# ['BLOSUM100', 'BLOSUM50', 'BLOSUM60', 'BLOSUM62', 'BLOSUM70',
|
|
210
|
+
# 'BLOSUM80', 'BLOSUM90', 'PAM150', 'PAM200', 'PAM250', 'PAM50']
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Using Prolog Distance Functions
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from pyseqalign.prolog import PrologEngine
|
|
217
|
+
|
|
218
|
+
engine = PrologEngine()
|
|
219
|
+
engine.consult("my_distances.pl")
|
|
220
|
+
|
|
221
|
+
sw = SmithWaterman(scoring=engine, gap_penalty=-8.0)
|
|
222
|
+
results = sw.align(seq1, seq2)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Learning Alignment Rules with ILP
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
from pyseqalign.learning import AlignmentTaskBuilder
|
|
229
|
+
from pyseqalign.learning.popper import PopperLearner
|
|
230
|
+
|
|
231
|
+
# Build an ILP task from labelled sequence pairs.
|
|
232
|
+
builder = AlignmentTaskBuilder()
|
|
233
|
+
builder.add_positive_pair([1, 2, 3], [1, 2, 4], label="similar")
|
|
234
|
+
builder.add_positive_pair([5, 6, 7], [5, 6, 8], label="similar")
|
|
235
|
+
builder.add_negative_pair([1, 2, 3], [10, 11, 12], label="similar")
|
|
236
|
+
builder.use_default_alignment_bias_popper()
|
|
237
|
+
|
|
238
|
+
task = builder.build()
|
|
239
|
+
|
|
240
|
+
# Learn rules with Popper (modern, recommended).
|
|
241
|
+
learner = PopperLearner(timeout=60)
|
|
242
|
+
result = learner.learn(task)
|
|
243
|
+
print(result.program_text)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Or using the classic Aleph backend:
|
|
247
|
+
|
|
248
|
+
```python
|
|
249
|
+
from pyseqalign.learning.aleph import AlephLearner
|
|
250
|
+
|
|
251
|
+
builder = AlignmentTaskBuilder()
|
|
252
|
+
# ... add examples ...
|
|
253
|
+
builder.use_default_alignment_bias_aleph()
|
|
254
|
+
task = builder.build()
|
|
255
|
+
|
|
256
|
+
learner = AlephLearner(induce_mode="induce")
|
|
257
|
+
result = learner.learn(task)
|
|
258
|
+
print(result.program_text)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Project Structure
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
pySeqAlign/
|
|
265
|
+
├── src/
|
|
266
|
+
│ └── pyseqalign/
|
|
267
|
+
│ ├── core/ # Alignment algorithms (SW, NW)
|
|
268
|
+
│ ├── prolog/ # Prolog engine integration
|
|
269
|
+
│ │ └── knowledge/ # Prolog knowledge bases (.pl files)
|
|
270
|
+
│ ├── scoring/ # Scoring/distance functions
|
|
271
|
+
│ │ └── matrix_data/ # Bundled NCBI substitution matrices
|
|
272
|
+
│ ├── learning/ # ILP learning backends
|
|
273
|
+
│ │ ├── base.py # Common types & protocol
|
|
274
|
+
│ │ ├── task_builder.py # Convert alignment data -> ILP format
|
|
275
|
+
│ │ ├── aleph.py # Aleph backend (classic ILP)
|
|
276
|
+
│ │ ├── popper.py # Popper backend (modern ILP)
|
|
277
|
+
│ │ └── aleph_files/ # Bundled Aleph Prolog source
|
|
278
|
+
│ └── utils/ # Helpers and data structures
|
|
279
|
+
├── tests/
|
|
280
|
+
├── examples/
|
|
281
|
+
└── docs/
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## ILP Backends
|
|
285
|
+
|
|
286
|
+
### Popper (recommended)
|
|
287
|
+
|
|
288
|
+
[Popper](https://github.com/logic-and-learning-lab/Popper) is a modern ILP system that learns from failures by combining ASP and Prolog. Advantages over Aleph:
|
|
289
|
+
|
|
290
|
+
- Learns optimal and recursive programs
|
|
291
|
+
- No metarules required
|
|
292
|
+
- Handles noise (MDL-based)
|
|
293
|
+
- Scales well (no grounding required)
|
|
294
|
+
- Native Python API
|
|
295
|
+
|
|
296
|
+
### Aleph (classic)
|
|
297
|
+
|
|
298
|
+
[Aleph](https://en.wikipedia.org/wiki/Aleph_(ILP)) is the classic ILP system by Ashwin Srinivasan, implementing Mode-Directed Inverse Entailment. The bundled `aleph_swi_ak.pl` is a SWI-Prolog compatible version ported from the legacy pySeqAlign codebase.
|
|
299
|
+
|
|
300
|
+
Supports multiple induction modes: `induce`, `induce_max`, `induce_cover`, `induce_tree`, `induce_features`, `induce_constraints`, `induce_incremental`, `induce_theory`.
|
|
301
|
+
|
|
302
|
+
### Other Modern ILP Systems
|
|
303
|
+
|
|
304
|
+
For reference, other notable systems in the field include:
|
|
305
|
+
|
|
306
|
+
- [PyILP](https://github.com/danyvarghese/PyILP) -- Python interface wrapping Aleph and Metagol for teaching
|
|
307
|
+
- [ILASP](https://github.com/ilaspltd/ILASP-releases) -- Answer Set Programming-based ILP
|
|
308
|
+
- [Metagol](https://github.com/metagol/metagol) -- Meta-Interpretive Learning
|
|
309
|
+
- [DeepStochLog](https://github.com/ML-KULeuven/deepstochlog) -- Neural-symbolic ILP combining logic and neural networks
|
|
310
|
+
|
|
311
|
+
## Background
|
|
312
|
+
|
|
313
|
+
**pySeqAlign** is a modern, pure-Python reimplementation that revives the name of one of its own ancestors. It succeeds two legacy libraries behind the ILP 2006 / ICDM 2008 work: the original **pyAlign** (SWIG-wrapped C with YAP Prolog bindings for alignment) and the original **pySeqAlign** (which held the Aleph ILP framework for learning rules from alignment examples). This version is pure Python, with optional SWI-Prolog integration via [Janus](https://www.swi-prolog.org/packs/list?p=janus) (the modern Python-Prolog bridge, replacing the older pyswip).
|
|
314
|
+
|
|
315
|
+
## License
|
|
316
|
+
|
|
317
|
+
MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
pyseqalign/__init__.py,sha256=m2gmsHPys1-GEXiBoL9AVRjQJXBlVvHC8iKEH2DKfb8,422
|
|
2
|
+
pyseqalign/core/__init__.py,sha256=o8fBDbufZ2NlPJjdT6oSqyH1QYLmyqxGcEs5vOl_USo,338
|
|
3
|
+
pyseqalign/core/alignment.py,sha256=CZ7U-9Yzim0WOLbR-i9N9DTwczHRG7zlxM-6cYD1Kn4,1752
|
|
4
|
+
pyseqalign/core/needleman_wunsch.py,sha256=6Yf8PfnryfHkEgoacXWmWKDSpUu--V_tz0X2a2wWquM,3665
|
|
5
|
+
pyseqalign/core/smith_waterman.py,sha256=PIUd8lXt0QlvMwGnXDt907lYm7R0fbum_0KaNfkNQzs,5862
|
|
6
|
+
pyseqalign/learning/__init__.py,sha256=-hFPztdoMTSWOhQeDA1uEKfEbeFAqTBIeucRmlgjGlM,726
|
|
7
|
+
pyseqalign/learning/aleph.py,sha256=ptYWWcow3CQr0t8ENkJFtOa1QSYcGTbGXj__ZlulOis,7329
|
|
8
|
+
pyseqalign/learning/base.py,sha256=inPz60usHjzovGKpz1fTFVUBNMPKddBdSepCKqtllcM,2352
|
|
9
|
+
pyseqalign/learning/popper.py,sha256=2xKCpI9AnJ2yfksjRq2Y9L94b3txDUf_lpYwczaSyx8,7191
|
|
10
|
+
pyseqalign/learning/task_builder.py,sha256=x3zhR-l92GqxY12_kgi9RNfBfazEnUG02KrhmRThvTQ,7794
|
|
11
|
+
pyseqalign/learning/aleph_files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
pyseqalign/learning/aleph_files/aleph_swi_ak.pl,sha256=0scBik8tfI7VW0vvcWLkV0OIV1rV6v_PoNcNwajh4g0,333241
|
|
13
|
+
pyseqalign/prolog/__init__.py,sha256=VzEEn5zhHkSM9uaGOHjkBU5iwsLmoH18mBeiorbTg14,142
|
|
14
|
+
pyseqalign/prolog/engine.py,sha256=IHu8IcBK3VyOXBcmgsXy4odV8EhJ3ItfPw_oVvCoPrY,3647
|
|
15
|
+
pyseqalign/prolog/knowledge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
pyseqalign/prolog/knowledge/amino_acids.pl,sha256=AU3XNYInKmTYvpGTyQ7mXBPArb5rFjF71qh770KdrIM,1188
|
|
17
|
+
pyseqalign/prolog/knowledge/blosum50.pl,sha256=0SlxvsQ2QfB8xXZdoaNnqZMmryzcQ18HoqtDGC0f9d4,27963
|
|
18
|
+
pyseqalign/prolog/knowledge/defaults.pl,sha256=O1Q9m2ytU85HYbctZ3nCHF6grBYcAn5lo3PG3tYIrw4,366
|
|
19
|
+
pyseqalign/prolog/knowledge/distances.pl,sha256=V5nW25rNyuMsIk-NoH6Ocw-qJGseWoRU3g2b8Pqrpmo,3406
|
|
20
|
+
pyseqalign/scoring/__init__.py,sha256=MltG1wbmLWUZu6Q3QpvcrSsxpUiq_HRbo2ga04caFh8,293
|
|
21
|
+
pyseqalign/scoring/distance.py,sha256=54_kSS0sCwO05Apraj7EX68s3vmB9w6eMQBO8UD1DoA,3245
|
|
22
|
+
pyseqalign/scoring/matrices.py,sha256=LbM46IxUSG0A1P5EnhvbDLdNKBij8R3_Ojjn1tEP12o,12384
|
|
23
|
+
pyseqalign/scoring/matrix_data/BLOSUM100,sha256=Lj6_ayLvWa6148OKEtyHuOsd6hszb0suzDIpuY4XPJI,2174
|
|
24
|
+
pyseqalign/scoring/matrix_data/BLOSUM50,sha256=oVLjC4r8q0IoH_hgS8UTWL6YJTFV_eYq4gcHgFoNPWc,2122
|
|
25
|
+
pyseqalign/scoring/matrix_data/BLOSUM60,sha256=iHPf06rge36Xi7k1uwFKwvTb_hHrGNL44TApk3C5Ss8,2122
|
|
26
|
+
pyseqalign/scoring/matrix_data/BLOSUM62,sha256=hVENOEbubV9HeOQlz42vbg27iJswby0TQ04SVHgO-0A,2122
|
|
27
|
+
pyseqalign/scoring/matrix_data/BLOSUM70,sha256=kl3LsfT3r8zCWRHW3sJjiBUP6S6xCSySRmHPOIhu9Hc,2122
|
|
28
|
+
pyseqalign/scoring/matrix_data/BLOSUM80,sha256=LllxdrgJKAi6GZz8nYDcjWV7Wj5QFd-4HVVyhYGc4Yc,2124
|
|
29
|
+
pyseqalign/scoring/matrix_data/BLOSUM90,sha256=TebOIl7Y7oTgQcT2PC2vL0Oqhs3RsSCGgHTchJXHIU8,2122
|
|
30
|
+
pyseqalign/scoring/matrix_data/PAM150,sha256=1Jbj7ITgahFFbjGbD3dS0WXrYL2HmSYj9_6ITsgNSWQ,2067
|
|
31
|
+
pyseqalign/scoring/matrix_data/PAM200,sha256=BUDVdPGRgVgxH552pwFA2WkO5QpM1gLLu6cgMiNhprs,2067
|
|
32
|
+
pyseqalign/scoring/matrix_data/PAM250,sha256=k2zF7yPgJixf2vdNXYH1iEjrdMyg1b7w85bSexaJcE4,2068
|
|
33
|
+
pyseqalign/scoring/matrix_data/PAM50,sha256=L3wZ938pS5_dWww1UAITFNql0NaDyIDk4NrCK9Yz9Ww,2666
|
|
34
|
+
pyseqalign/scoring/matrix_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
pyseqalign/utils/__init__.py,sha256=87vEw3kyRctvVHNuxTlUJcSrq3Uv3imd5k6fOzdivas,213
|
|
36
|
+
pyseqalign/utils/helpers.py,sha256=5SEMmrpyG9KWsIWAHWUxWJB1SzZr12WmnrIsDHTS4_k,1340
|
|
37
|
+
pyseqalignment-0.1.0.dist-info/licenses/LICENSE,sha256=dqESE79IRNKt4uCzLTn_h6x5Vn598nh0gwU1u_V8xYM,1077
|
|
38
|
+
pyseqalignment-0.1.0.dist-info/METADATA,sha256=_Qyf1u2qMlQq9fDt2Bv2_wKkPkNcJ7x3qQnE4hELn34,11234
|
|
39
|
+
pyseqalignment-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
40
|
+
pyseqalignment-0.1.0.dist-info/top_level.txt,sha256=iMtL6E0yvAf74Rgpe5DcYvYkV5pfky7d2w5LD8500Z0,11
|
|
41
|
+
pyseqalignment-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 Andreas Karwath
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pyseqalign
|