Skip to main content

A tool for exploring multiple sequence alignments.

Project description

Logo

language License: GPL v3 PiPy Downloads

MSAexplorer is a python package and also a standalone app to analyse multiple sequence alignments and generate publication ready figures. Want to just use MSAexplorer and generate publication ready figures? The curently stable version of the MSAexplorer app is hosted on github pages.

Requirements

python >= python 3.11

Requirements:

  • matplotlib>=3.8
  • numpy>=2.0
  • shiny>=1.3
  • shinywidgets>=0.5.2
  • plotly>=5.23

And optionally tools for in-app calculations (aligning and trimming):

  • pyfamsa>=0.5.3
  • pytrimal>=0.8.1

Installation

Via pip (recommended)

pip install msaexplorer # or
# additionally installs pyfamsa and pytrimal (not required, but optional in the app)
pip install msaexplorer[process]

From this repo

git clone https://github.com/jonas-fuchs/MSAexplorer
cd MSAexplorer
pip install . # or
pip install .[process]

Features of MSAexplorer as an app

usage:  msaexplorer --run

The MSAexplorer app is an interactive visualization tool designed for exploring multiple sequence alignments (MSAs).

options:
  -h, --help  show this help message and exit
  --run       Run the MSAexplorer app
  --version   show program version and exit
  
  • :white_check_mark: The app runs solely in your browser. No need to install anything, just might take a few seconds to load.
  • :white_check_mark: Use the app offline (after loading it).
  • :white_check_mark: Analyse alignments on your smartphone or tablet.
  • :white_check_mark: Download alignment statistics (e.g. entropy, SNPs, coverage, consensus, ORFs and more).
  • :white_check_mark: Annotate the alignment by additionally reading in gb, gff or bed files.
  • :white_check_mark: Flexibility to customize plots and colors.
  • :white_check_mark: Easily export the plot as pdf.
  • :white_check_mark: Generate plots of the whole alignment as well as just parts of it.
  • :white_check_mark: Publication ready figures with just a few clicks.

Hosting MSAexplorer yourself

If you want to host MSAexplorer e.g. for your group, you can export the app as a static html with a few easy steps. However, in-app calculations with pyfamsa and pytrimal are currently not supported.

# install shinylive for exporting
pip install shinylive
git clone https://github.com/jonas-fuchs/MSAexplorer
cd MSAexplorer
shinylive export ./ site/  # you should now have a new 'site' folder with the app

Features of MSAexplorer as a python package (full documentation)

  • :white_check_mark: Access MSAexplorer as a python package
  • :white_check_mark: Maximum flexibility for the plotting and analysis features while retaining minimal syntax.
  • :white_check_mark: Integrates seamlessly with matplotlib.
  • :white_check_mark: Minimal requirements.
### Minimal analysis example ###

from msaexplorer import explore, export

# load the alignment
aln = explore.MSA('example_alignments/DNA.fasta')
print(aln.aln_type)  # print alignment type
print(aln.length)  # print alignment length

# adjust what you want to look at
aln.reference_id = 'AB032031.1 Borna disease virus 1 genomic RNA, complete genome'  # set a reference if needed
aln.zoom = (0, 1000)  # set a zoom range

# now print for example all snps in that zoom range compared to the reference id
snps = aln.get_snps(include_ambig=True)
print(snps)
# and then save to file
export.snps(snps, path='my_path/snps.vcf', format_type='vcf')

# see documentation for full usage
### Two minimal plotting examples ###

from msaexplorer import explore, draw
import matplotlib.pyplot as plt

# Example 1
draw.identity_alignment('example_alignments/DNA.fasta')
plt.show()

# Example 2
aln = explore.MSA('example_alignments/DNA.fasta')
# adjust zoom levels (for example to also plot sequence text)
aln.zoom = (0,60)
plt.figure(figsize=(10,12))  # adjust so the sequence text fits in your figure well
draw.identity_alignment(aln, show_identity_sequence=True)
plt.show()
### Extended plotting example  ####

import matplotlib.pyplot as plt
from msaexplorer import explore
from msaexplorer import draw

#  load alignment
aln = explore.MSA("example_alignments/DNA.fasta", reference_id=None, zoom_range=None)
# set reference to first sequence
aln.reference_id = list(aln.alignment.keys())[0]

fig, ax = plt.subplots(nrows=2, height_ratios=[0.2, 2], sharex=False)

draw.stat_plot(
    aln,
    ax[0],
    stat_type="entropy",
    rolling_average=1,
    line_color="indigo"
)

draw.identity_alignment(
    aln,
    ax[1],
    show_gaps=False,
    show_mask=True,
    show_mismatches=True,
    reference_color='lightsteelblue',
    color_scheme='purine_pyrimidine',
    show_seq_names=False,
    show_ambiguities=True,
    fancy_gaps=True,
    show_x_label=False,
    show_legend=True,
    bbox_to_anchor=(1,1.05)
)

plt.show()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

msaexplorer-0.4.tar.gz (122.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

msaexplorer-0.4-py3-none-any.whl (116.8 kB view details)

Uploaded Python 3

File details

Details for the file msaexplorer-0.4.tar.gz.

File metadata

  • Download URL: msaexplorer-0.4.tar.gz
  • Upload date:
  • Size: 122.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for msaexplorer-0.4.tar.gz
Algorithm Hash digest
SHA256 ec82736ca0b66775864b4a4bf58958ff4281d526126bfea4215ef490f8bc62f0
MD5 c25ff31f14d2ba1c5cdff003d292e5cc
BLAKE2b-256 d018d15a43569d84f6d4081e2f77a8fc9a6936d63842d56e2b18630c68e79e7e

See more details on using hashes here.

File details

Details for the file msaexplorer-0.4-py3-none-any.whl.

File metadata

  • Download URL: msaexplorer-0.4-py3-none-any.whl
  • Upload date:
  • Size: 116.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for msaexplorer-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aef419cad4d1d4440500b1d2d7893b13f4df9803bb6316c09958f7b86b3464e2
MD5 46512f347e3e7cccd92a596e09002884
BLAKE2b-256 69b7f61b17129723c7393beb4f41491d70a2c647b12f51db0b76c28a97e9dd99

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page