chrov:
Project description
chrov
Chromosome Visualization library in python.
Examples
·
Explore the API
Examples
🏷️Annotations on chromosomes
🧬Visualization of genome, set of chromosomes, a chromosome and an arm
🔥🗺️Visualization of heatmaps along chromosome arm
🔌Integration of custom plots e.g. made using seaborn
📈🍭Integration of basic plots e.g. stem/lollipop plot
↔️↔️Visualization of intervals/ranges/segments along a chromosome arm
Installation
pip install chrov # with basic dependencies
With additional dependencies as required:
pip install chrov[dev] # for local testing
How to cite?
- Using BibTeX:
@software{Dandage_chrov,
title = {chrov: Chromosome Visualization library in python},
author = {Dandage, Rohan},
year = {2023},
url = {https://zenodo.org/doi/10.5281/zenodo.10211265},
version = {v0.0.1},
note = {The URL is a DOI link to the permanent archive of the software.},
}
-
Using citation information from CITATION.CFF file.
Future directions, for which contributions are welcome:
- Set subplot sizes by default: automate setting off and offy.
- Compatibility of seaborn plots with polar layout.
- Layering the interval vizualizations on the polar layout.
- Connection styles.
- Other features and improvements.
Similar projects:
API
module chrov.viz.annot
Annotations.
function annot_labels
annot_labels(
ax_chrom: Axes,
data: DataFrame,
colx: str,
chrom_y: float,
col_label: str,
loc: str = 'out',
col_start: str = None,
ax: Axes = None,
coly: str = None,
col_labelx: str = 'label x',
color: str = 'darkgray',
yoff_scales: float = None,
off_labels_segments: float = 20,
scale_polar: float = 1.5,
fig: Figure = None,
test: bool = False
) → Axes
Annot labels e.g. gene names
Args:
ax_chrom
(plt.Axes): subplot with the chromosome plotcol_label
(str): column with the labelsloc
(str, optional): locations. Defaults to 'out'.color
(str, optional): color. Defaults to 'darkgray'.yoff_scales
(float, optional): y offset. Defaults to None.off_labels_segments
(float, optional): offset for the label segments. Defaults to 20.scale_polar
(float, optional): scale for the polar plot. Defaults to 1.5.fig
(plt.Figure, optional): figure. Defaults to None.test
(bool, optional): test-mode. Defaults to False.
Returns:
plt.Axes
: subplot
function show_segments
show_segments(
ax: Axes,
y: float,
offy: float,
kind: str = 'arrows',
segments: dict = None,
segments_kws: dict = {},
offytext: float = 0.2,
arrow_kws: dict = {'color': 'k', 'lw': 1, 'alpha': 1, 'arrowstyle': '<->'},
test: bool = False,
**kws_annotate
) → Axes
Show segments aligned to chromosome arm.
Args:
ax
(plt.Axes): subplotdata
(pd.DataFrame): input datasize
(int): size of the segments
module chrov.viz.chrom
Chromosome plots
function to_polar
to_polar(
a: list,
range1: list = None,
range2: list = None,
interval: int = None
) → list
To polar coordinates
Args:
a
(list): Coordinatesrange1
(list, optional): range1. Defaults to None.range2
(list, optional): range2. Defaults to None.interval
(int, optional): interval size. Defaults to None.
Raises:
ValueError
: Coordinates format
Returns:
list
: rescaled coordinates
function plot_arm
plot_arm(
data: DataFrame,
arc: bool = False,
col_start: str = 'start',
col_end: str = 'end',
y: float = 0,
lw: float = 10,
ec: str = 'k',
pi_span: float = 1,
pi_start: int = 0,
pi_end: int = None,
polar_smoothness_scale: float = 1,
kws_pre_xys: dict = None,
figsize: list = None,
ax: Axes = None,
test: bool = False,
solid_capstyle='round'
) → Axes
Plot chromosome arm.
Args:
data
(pd.DataFrame): input table.y
(float, optional): y position. Defaults to 0.lw
(float, optional): line width. Defaults to 20.ec
(str, optional): edge color. Defaults to 'k'.ax
(plt.Axes, optional): subplot. Defaults to None.test
(bool, optional): test-mode. Defaults to False.
Returns:
plt.Axes
: subplot
function plot_chrom
plot_chrom(
data: DataFrame,
arc: bool = False,
col_start: str = 'start',
col_end: str = 'end',
col_arm: str = 'arm',
pi_span: float = 1,
pi_start: int = 0,
pi_end: int = None,
ax: Axes = None,
figsize: list = None,
**kws_plot_arm
) → Axes
Plot a chromosome
Args:
data
(pd.DataFrame): cytobandsarc
(bool, optional): arc/polar mode. Defaults to False.col_start
(str, optional): column with start positions. Defaults to 'start'.col_end
(str, optional): column with end positions. Defaults to 'end'.col_arm
(str, optional): column with arm names. Defaults to 'arm'.pi_span
(float, optional): pi span. Defaults to 1.pi_start
(int, optional): pi start. Defaults to 0.pi_end
(int, optional): pi end. Defaults to None.ax
(plt.Axes, optional): subplot. Defaults to None.figsize
(list, optional): sigure size. Defaults to None.
Returns:
plt.Axes
: subplot
function plot_chroms
plot_chroms(
data: DataFrame,
arc=True,
chromosomes: list = None,
col_start='start',
col_end='end',
col_arm='arm',
span_color: str = '#dcdcdc',
span_color_alpha_scale: float = 1,
pi_span: float = 1,
pi_start: int = 0,
pi_end: int = None,
show_labels: bool = True,
show_vline: bool = True,
label_y: str = None,
test: bool = False,
ax: Axes = None,
figsize: list = None,
out_data: bool = False,
**kws_plot_arm
)
Plot chromosomes joined.
Args:
data
(pd.DataFrame): cytonbandsarc
(bool, optional): arc/polar mode. Defaults to True.chromosomes
(list, optional): chromosomes. Defaults to None.col_start
(str, optional): column with start position. Defaults to 'start'.col_end
(str, optional): column with end position. Defaults to 'end'.col_arm
(str, optional): column with chromosome arm names. Defaults to 'arm'.span_color
(str, optional): span color. Defaults to 'whitesmoke'.span_color_alpha_scale
(float, optional): span color transparency scale. Defaults to 1.pi_span
(float, optional): pi span. Defaults to 1.pi_start
(int, optional): pi start angle. Defaults to 0.pi_end
(int, optional): pi end angle. Defaults to None.show_labels
(bool, optional): show labels. Defaults to True.show_vline
(bool, optional): show vertical line. Defaults to True.label_y
(str, optional): label y. Defaults to None.test
(bool, optional): test-mode. Defaults to False.ax
(plt.Axes, optional): subplot. Defaults to None.figsize
(list, optional): figure size. Defaults to None.out_data
(bool, optional): output data. Defaults to False.
function annot_chroms
annot_chroms(
data: DataFrame,
chromosomes: list,
ax_chrom: Axes = None,
chrom_y: float = 0,
kws_add_ax: dict = {},
test: bool = False,
**kws_plot
) → Axes
Add a subplot with the chromosome.
Args:
data
(pd.DataFrame): table with cytobandschromosomes
(list): chromosomesax_chrom
(plt.Axes, optional): subplot with chromosome plot. Defaults to None.chrom_y
(float, optional): chromosome y-position. Defaults to 0.kws_add_ax
(dict, optional): keyword parameters provided to_add_ax
. Defaults to {}.test
(bool, optional): test mode. Defaults to False.
Returns:
plt.Axes
: subplot
module chrov.viz.figure
function plot_with_chroms
plot_with_chroms(
data: DataFrame,
cytobands: DataFrame,
kind: str,
colx: str,
coly: str,
col_label: str,
va: str,
col_start: str = None,
xkind: str = 'loci',
coffy: str = None,
off: float = None,
offy: float = None,
chrom_y: float = 0,
arc: bool = True,
pi_span: float = 1,
pi_start: int = 0,
pi_end: int = None,
fig: Figure = None,
figsize: list = None,
ax_data: Axes = None,
kws_seaborn: dict = {},
kws_annot_chroms: dict = {},
kws_annot_labels: dict = {},
test: bool = False
) → Figure
Plot with chromosomes.
Args:
data
(pd.DataFrame): input tablecytobands
(pd.DataFrame): cytobandskind
(str): kind of plotcolx
(str): column with x valuescoly
(str): column with y valuescol_label
(str): column with labelsva
(str): vertical alignmentcol_start
(str, optional): column with start positions. Defaults to None.xkind
(str, optional): kind of x values. Defaults to 'loci'.off
(float, optional): offset scale of the chromosome plot. Defaults to None.offy
(float, optional): offset y of the chromosome plot. Defaults to None.chrom_y
(float, optional): chromosome y-position. Defaults to 0.arc
(bool, optional): arc/polar plot or linear/rectangular one. Defaults to True.pi_span
(float, optional): pi span. Defaults to 1.pi_start
(int, optional): pi start. Defaults to 0.pi_end
(int, optional): pi end. Defaults to None.fig
(plt.Figure, optional): figure. Defaults to None.figsize
(list, optional): figure size. Defaults to None.ax_data
(plt.Axes, optional): subplot with the data plot. Defaults to None.kws_seaborn
(dict, optional): keyword parameters to seaborn plot. Defaults to {}.kws_annot_chroms
(dict, optional): keyword parameters to the chromosome plot. Defaults to {}.kws_annot_labels
(dict, optional): keyword parameters to the annotations of the labels. Defaults to {}.test
(bool, optional): test mode. Defaults to False.
Returns:
plt.Figure
: figure
module chrov.viz
module chrov.viz.plot
function plot_seaborn
plot_seaborn(
data: DataFrame,
kind: str,
colx: str,
coly: str,
range1_chroms: list,
arc: bool = True,
pi_span: float = 1,
pi_start: int = 0,
pi_end: int = None,
figsize: list = None,
ax: Axes = None,
fig: Figure = None,
**kws_plot
) → tuple
plot_seaborn summary
Args:
data
(pd.DataFrame): input datakind
(str): kind of plot, seaborn function namecoly
(str): column with y valuesrange1_chroms
(list): input range of chromosomesarc
(bool, optional): arc/polar or linear/rectangular plots. Defaults to True.pi_span
(float, optional): pi span. Defaults to 1.pi_start
(int, optional): pi start position. Defaults to 0.pi_end
(int, optional): pi end position. Defaults to None.figsize
(list, optional): figure size. Defaults to None.ax
(plt.Axes, optional): subplot. Defaults to None.fig
(plt.Figure, optional): figure. Defaults to None.
Returns:
tuple
: subplot and data
TODOs: 1. set rlabel position.
function heatmaps_strips
heatmaps_strips(
data: DataFrame,
strips_kws: dict,
fig: Figure = None,
axs: list = None,
kws_subplots: list = {}
) → tuple
Plot heatmap strips
Args:
data
(pd.DataFrame): input datastrips_kws
(dict): keyword arguments provided to stripsfig
(plt.Figure, optional): figure. Defaults to None.axs
(list, optional): subplots. Defaults to None.kws_subplots
(list, optional): keyword arguments provided to subplots. Defaults to {}.
Returns:
tuple
: figure and subplots
module chrov.viz.ranges
function plot_ranges
plot_ranges(
data: DataFrame,
col_id: str,
col_start: str,
col_end: str,
end: int,
start: int = 0,
hue: str = None,
y=None,
kind=None,
cytobands: dict = None,
cytobands_y: float = None,
col_groupby: str = None,
col_sortby: str = None,
col_label: str = None,
colors: dict = None,
lw: int = 10,
zorders: dict = None,
show_segments: bool = False,
xtick_interval: float = None,
test: bool = False,
ax: Axes = None
) → Axes
Plot ranges.
Args:
data
(pd.DataFrame): input data.col_id
(str): column with ids.col_start
(str): column with start co-ordinates.col_end
(str): column with end co-ordinates.end
(int): end position for the plotstart
(int, optional): start position for the plot. Defaults to 0.hue
(str, optional): column with color. Defaults to None.y
(type, optional): column with y positions. Defaults to None.cytobands
(dict, optional): cytobands to plot the chromosomes. Defaults to None.cytobands_y
(float, optional): cytobands y-position. Defaults to None.col_groupby
(str, optional): column to group by. Defaults to None.col_sortby
(str, optional): column to sort by. Defaults to None.col_label
(str, optional): column with labels. Defaults to None.colors
(dict, optional): colors. Defaults to None.lw
(int, optional): line width. Defaults to 10.zorders
(dict, optional): z-orders. Defaults to None.show_segments
(bool, optional): show segments. Defaults to False.xtick_interval
(float, optional): x tick intervals. Defaults to None.test
(bool, optional): test-mode. Defaults to False.ax
(plt.Axes, optional): subplot. Defaults to None.
Raises:
ValueError
: if kind is not 'split','separate' or 'joined'
Returns:
plt.Axes
: subplot
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
File details
Details for the file chrov-0.0.2.tar.gz
.
File metadata
- Download URL: chrov-0.0.2.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54c8e8f8cb9368363f35e36ed43f2bfa08fb5067ffa42eab8095e0692d205cc5 |
|
MD5 | 5b09db2c379e3b3da7e19fb7f93f89a7 |
|
BLAKE2b-256 | 554869f658d0b3e7a4fdf268512b3e88e8a8c2635922c18f15e9b7cdb69a8ad2 |