A Python package for working with protein sequence and PTM
Project description
SEQUAL / seq=
Sequal is a Python package for in-silico generation of modified sequences from a sequence input and modifications. It is designed to assist in protein engineering, mass spectrometry analysis, drug design, and other bioinformatics research.
Features
- Generate all possible sequences with static and variable modifications.
- Support for custom modification annotations.
- Utilities for mass spectrometry fragment generation.
Installation
To install Sequal, use pip:
pip install sequal
Usage
Sequence comprehension
Using Sequence Object with Unmodified Protein Sequence
from sequal.sequence import Sequence
#Using Sequence object with unmodified protein sequence
seq = Sequence("TESTEST")
print(seq.seq) #should print "TESTEST"
print(seq[0:2]) #should print "TE"
Using Sequence Object with Modified Protein Sequence
from sequal.sequence import Sequence
#Using Sequence object with modified protein sequence. []{}() could all be used as modification annotation.
seq = Sequence("TEN[HexNAc]ST")
for i in seq.seq:
print(i, i.mods) #should print N [HexNAc] on the 3rd amino acid
seq = Sequence("TEN[HexNAc][HexNAc]ST")
for i in seq.seq:
print(i, i.mods) #should print N [HexNAc, HexNAc] on the 3rd amino acid
# .mods property provides an access to all amino acids at this amino acid
seq = Sequence("TE[HexNAc]NST", mod_position="left") #mod_position left indicate that the modification should be on the left of the amino acid instead of default which is right
for i in seq.seq:
print(i, i.mods) #should print N [HexNAc] on the 3rd amino acid
Custom Annotation Formatting
from sequal.sequence import Sequence
#Format sequence with custom annotation
seq = Sequence("TENST")
a = {1:"tes", 2:["1", "200"]}
print(seq.to_string_customize(a, individual_annotation_enclose=False, individual_annotation_separator="."))
# By supplying .to_string_customize with a dictionary of position on the sequence that you wish to annotate
# The above would print out TE[tes]N[1.200]ST
Modification
Creating a Modification Object
from sequal.modification import Modification
# Create a modification object and try to find all its possible positions using regex
mod = Modification("HexNAc", regex_pattern="N[^P][S|T]")
for ps, pe in mod.find_positions("TESNEST"):
print(ps, pe)
# this should print out the position 3 on the sequence as the start of the match and position 6 as the end of the match
Generating Modified Sequences
Static Modification
from sequal.sequence import ModdedSequenceGenerator
from sequal.modification import Modification
propiona = Modification("Propionamide", regex_pattern="C", mod_type="static")
seq = "TECSNTT"
mods = [propiona]
g = ModdedSequenceGenerator(seq, static_mods=mods)
for i in g.generate():
print(i) # should print {2: [Propionamide]}
Variable Modification
from sequal.sequence import ModdedSequenceGenerator
from sequal.modification import Modification
nsequon = Modification("HexNAc", regex_pattern="N[^P][S|T]", mod_type="variable", labile=True)
osequon = Modification("Mannose", regex_pattern="[S|T]", mod_type="variable", labile=True)
carbox = Modification("Carboxylation", regex_pattern="E", mod_type="variable", labile=True)
seq = "TECSNTT"
mods = [nsequon, osequon, carbox]
g = ModdedSequenceGenerator(seq, mods, [])
print(g.variable_map.mod_position_dict)
# should print {'HexNAc0': [3], 'Mannose0': [0, 2, 4, 5, 6], 'Carboxylation0': [1]}
for i in g.generate():
print(i)
# should print all possible combinations of variable modifications
Mass spectrometry utilities
Generating Non-Labile and Labile Ions
from sequal.mass_spectrometry import fragment_non_labile, fragment_labile
from sequal.modification import Modification
from sequal.sequence import ModdedSequenceGenerator, Sequence
nsequon = Modification("HexNAc", regex_pattern="N[^P][S|T]", mod_type="variable", labile=True, labile_number=1, mass=203)
propiona = Modification("Propionamide", regex_pattern="C", mod_type="static", mass=71)
seq = "TECSNTT"
static_mods = [propiona]
variable_mods = [nsequon]
g = ModdedSequenceGenerator(seq, variable_mods, static_mods)
for i in g.generate():
print(i)
s = Sequence(seq, mods=i)
for b, y in fragment_non_labile(s, "by"):
print(b, "b{}".format(b.fragment_number))
print(y, "y{}".format(y.fragment_number))
g = ModdedSequenceGenerator(seq, variable_mods, static_mods)
for i in g.generate():
s = Sequence(seq, mods=i)
ion = fragment_labile(s)
if ion.has_labile:
print(ion, "Y{}".format(ion.fragment_number))
print(ion.mz_calculate(1))
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
File details
Details for the file sequal-1.0.3.tar.gz
.
File metadata
- Download URL: sequal-1.0.3.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.11 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8674ffae9e2740377718c40b797f5cf3355cd41cbfc6acda759af526ffe1147d |
|
MD5 | 0b9bb52ac356afb1a7061b25d5dd31e3 |
|
BLAKE2b-256 | 271536a49fb9541b023b702b0dc033fb60a1f5a27ff8712b47c773186ed5921d |
File details
Details for the file sequal-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: sequal-1.0.3-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.11 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b09493b17853433771c586f5ab70c799906bbb7b48031a1c6b7e251923881aaf |
|
MD5 | 1eea418498e4efeb5a3f9d23fba7c722 |
|
BLAKE2b-256 | 0a7b16474c2871d462c0b5dd5ddf04e88355edd522f5d8f1bbc8cbbcdf9db73f |