Multiple sequence aligner for arbitrary objects.
Project description
Versalign is Python package that allows you to create multiple sequence alignments for arbitrary lists of objects.
💪 Getting Started
Pairwise alignment:
from versalign.motif import Motif
from versalign.pairwise import PairwiseAlignment, align_pairwise
from versalign.sequence import Sequence
class A(Motif):
def __eq__(self, other):
return isinstance(other, A)
def __str__(self):
return "A"
class B(Motif):
def __eq__(self, other):
return isinstance(other, B)
def __str__(self):
return "B"
def score_func(a, b):
if a == b:
return 1
return -1
seq_a = Sequence("seq_a", [A(), A(), A()])
seq_b = Sequence("seq_b", [B(), B(), B()])
aligned_seq_a, aligned_seq_b, score = align_pairwise(
seq_a=seq_a,
seq_b=seq_b,
gap_penalty=2,
end_gap_penalty=1,
score_func=score_func,
algorithm=PairwiseAlignment.NEEDLEMAN_WUNSCH
)
print(aligned_seq_a)
print(aligned_seq_b)
>> AAA---
>> ---BBB
Multiple sequence alignment:
from versalign.msa import multiple_sequence_alignment
seq_a = Sequence("seq_a", [A(), A(), A()])
seq_b = Sequence("seq_b", [B(), B(), B()])
seq_c = Sequence("seq_c", [A(), B(), B()])
result = multiple_sequence_alignment(
seqs=[seq_a, seq_b, seq_c],
gap_penalty=2,
end_gap_penalty=1,
score_func=score_func,
)
for seq in result:
print(seq)
>> ---BBB
>> --ABB-
>> AAA---
🚀 Installation
The most recent code and data can be installed directly from GitHub with:
pip install git+https://github.com/davidmeijer/versalign.git
👐 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.md for more information on getting involved.
👋 Attribution
⚖️ License
The code in this package is licensed under the MIT License.
🍪 Cookiecutter
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
🛠️ For Developers
See developer instructions
The final section of the README is for if you want to get involved by making a code contribution.
Development Installation
To install in development mode, use the following:
git clone git+https://github.com/davidmeijer/versalign.git
cd versalign
pip install -e .
🥼 Testing
After cloning the repository and installing tox
with pip install tox
, the unit tests in the tests/
folder can be
run reproducibly with:
tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
📦 Making a Release
After installing the package in development mode and installing
tox
with pip install tox
, the commands for making a new release are contained within the finish
environment
in tox.ini
. Run the following from the shell:
tox -e finish
This script does the following:
- Uses Bump2Version to switch the version number in the
setup.cfg
,src/versalign/version.py
, anddocs/source/conf.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel using
build
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion -- minor
after.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for versalign-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99ed34d6cc0798d754e9b340d5a673e00dcd119f10776054f5176361a2d917c4 |
|
MD5 | 089bd9efa62aed5625fa6c747a6f8c56 |
|
BLAKE2b-256 | e027aa115fdf1c6ded658708f1012c51d5a330bf3007f8552fc95584b295facc |