Skip to main content

A python package for drawing some bioinformatic pictures.

Project description

bioplotz: A package for plotting images for bioinformatics

Latest PyPI version Downloads

Dependencies

Python modules:

  • numpy
  • matplotlib
  • pandas

Installation

Install via pip

pip install bioplotz

Install from source code

pip install git+https://github.com/sc-zhang/bioplotz.git --user

Usage

Manhattan Plot

import bioplotz as bp

fig, ax = bp.manhattan(data, threshold=0, color=['orange', 'green'], threshold_line_color='blue', log_base=0,
                       reverse=False, xtick_labels=True, ytick_labels=True, ax=None, marker='.', s=1, **kwargs)
parameter value type explain
data dict
list
dict key: block name
    value: [[x1,x2,...,xn], [y1,y2,...,yn]]
list is a list like: [[x1,y1], [x2, y2], ..., [xn, yn]]
threshold value
list
value if only one threshold line to plot, Notice: if log_base was set, threshold values should be calculated with same log_base manunally, if reverse is True, threshold values should be set to its opposite number
list if more than one threshold line need to plot, a list can be used for different lines, like: [threshold_value1, threshol_value2]
color list color is a list used for blocks, if the count of block greater than color count, it will be used circularly
threshold_line_color value
list
value if threshold is a single value
list if threshold is a list
threshold_line_width value value the line width of threshold lines
block_line_width value value if there are only one color, the block line will display as border, the width is set by this parameter
log_base value log_base = 0 means not calucate value with log
log_base != 0 means log base for log values with it
reverse Boolean if all data lower than 0, you may use it to show opposite values
other parameters value same with parameters used in pyplot.scatter

Chromosome Plot

import matplotlib.pyplot as plt
import bioplotz as bp

fig, ax, mapper = bp.chromosome(chr_len_db, chr_order, bed_data, centro_pos, value_type="numeric",
                                orientation="vertical", **kwargs)
plt.colorbar(mapper, ax=ax, shrink=0.5)
parameter value type Optional Default explain
chr_len_db dict No - key: chromosome name
value: chromosome length
chr_order list Yes None list: the custom chromosome order, like: ["Chr1", "Chr3", "Chr2"]
must same with keys in chr_len
bed_data list Yes None list: two dimension list, like: [[chrome name, start pos, end pos, value/color]]
centro_pos dict Yes None key: chromosome name
value: middle position of centromere
value_type str Yes numeric numeric: the 4th column of bed_data should be value
color: the 4th column of bed_data is color
marker: different with other two types, it need 5 columns, the 4th column of bed_data is marker, the 5th column is color (marker is same with the parameter which be used in pyplot.scatter)
orientation str Yes vertical "vertical" or "horizontal"
cmap str Yes gist_rainbow cmap for colorbar
cmap_parts int Yes 100 how many parts for splitting cmap
s float or array-like, shape(n,) Yes None same with parameter s use in pyplot.scatter
fig_ratio float Yes None if plot with subplots, use this parameter to keep the arcs of chromosomes correct, for "vertical", this parameter should be fig_width/fig_height, otherwise, fig_height/fig_width
other parameters value Yes None same with parameters used in pyplot.plot
  • If value_type is numeric, the return value mapper will be a mappable which could be used with plt.colorbar, else None

Gene Cluster Plot

import bioplotz as bp

fig, ax = bp.genecluster(gene_list)
parameter value type Optional Default explain
gene_list list No - list: 2-dimension list, like [[gene name, start pos, end pos, direct(+/-), color], ..., [gene name, start pos, end pos, direct(+/-), color]]
edgecolor list
str
Yes None list: same length with gene_list, like: ["green", "blue", ..., "red"]
str: common edge color for all genes
edgewidth int Yes 1 edge width for all genes
lw int Yes 3 line width to show the genome backbone

Notice, the best figsize should be (gene count, 1), for example: plt.figure(figsize=(16, 1)), and the bbox_inches parameter which in savefig should be 'tight'.

Multi Alignment Plot

import bioplotz as bp

fig, ax = bp.multialign(data)
parameter value type Optional Default explain
data dict No - key: gene name
value: alignment sequence
base_per_line int Yes 80 base count to display for each line
color_mode string Yes match should be one of "match" and "base"
color_kws dict Yes - based on color_mode, details could be found below
**kwargs any Yes - same with which use in ax.text

Details of color_kws
if color_mod is "match", the struct and default values of color_kws is like below:

# the default color of background colors is "white", 
# if there are not be set or set to None, 
# the default color of text colors is "black",
# if there are not be set or set to None
# user can overwrite any of them by set color_kws like:
# color_kws = {"match_color": "black", "match_background_color": "grey"} 
color_kws = {
    "match_color": 'blue',
    "match_background_color": None,
    "mismatch_color": 'red',
    "mismatch_background_color": None,
    "highlight_positions": None,
    "highlight_color": 'green',
    "highlight_background_color": None
}

if color_mod is "base", the struct and default values of color_kws is like below:

# the default color of text is "black" and default color of background is set below
# user can overwrite color of any charactor or add color for new charactor like *, -, ?
# by set color_kws like:
# color_kws = {"base_color": {"-": "white}, "base_background_color": {"-", "yellow"}}

color_kws = {
    "base_color": {},
    "base_background_color": {
        "A": "salmon", "a": "salmon",
        "T": "lightgreen", "t": "lightgreen",
        "G": "orange", "g": "orange",
        "C": "steelblue", "c": "steelblue",
        "U": "tomato", "u": "tomato",
        "F": "khaki", "f": "khaki",
        "D": "cadetblue", "d": "cadetblue",
        "N": "coral", "n": "coral",
        "E": "yellowgreen", "e": "yellowgreen",
        "Q": "plum", "q": "plum",
        "H": "orchid", "h": "orchid",
        "L": "darkseagreen", "l": "darkseagreen",
        "I": "yellow", "i": "yellow",
        "K": "lightseagreen", "k": "lightseagreen",
        "O": "darkkhaki", "o": "darkkhaki",
        "M": "palevioletred", "m": "palevioletred",
        "P": "sandybrown", "p": "sandybrown",
        "R": "palegreen", "r": "palegreen",
        "S": "peru", "s": "peru",
        "V": "violet", "v": "violet",
        "W": "mediumturquoise", "w": "mediumturquoise",
        "Y": "deepskyblue", "y": "deepskyblue"
    }
}

colors for base:

Notice, the figsize should be (base_per_line/10, x) where x=align_length/base_per_line*gene_count/5, and the font must be monospaced, like "Courier New", that sometimes user need add codes as following.

import matplotlib as mpl
import bioplotz as bp

basefont = mpl.font_manager.FontProperties(fname="/path/to/font.ttf")
fig, ax = bp.multialign(data, fontproperties=basefont)

or

plt.rcParams['font.sans-serif'] = 'Courier New'

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

bioplotz-0.1.0.dev16.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

bioplotz-0.1.0.dev16-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file bioplotz-0.1.0.dev16.tar.gz.

File metadata

  • Download URL: bioplotz-0.1.0.dev16.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for bioplotz-0.1.0.dev16.tar.gz
Algorithm Hash digest
SHA256 65fc4421d9f762e83b1d14c6b41f87fbf719c9011c3cf27379b6e6789b3c52e6
MD5 3a2be9e44e71ec780d2f53c01f831866
BLAKE2b-256 46c998c8d071c11b3862e8e84a67ea101c2883ce1cc288759f31f1af86c3fe70

See more details on using hashes here.

File details

Details for the file bioplotz-0.1.0.dev16-py3-none-any.whl.

File metadata

  • Download URL: bioplotz-0.1.0.dev16-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for bioplotz-0.1.0.dev16-py3-none-any.whl
Algorithm Hash digest
SHA256 0da6dd5cd1e5c19e6889ce87fd162dcc629dd93fbb4bc1d2c09eb0a7bff58176
MD5 43974c25cea098b26c28a3b516c316b4
BLAKE2b-256 d916d2fee16943ed780caca46f193f0629655f9215188fdab7630d9466657d0c

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