<!-- PROJECT SHIELDS -->
<div align="center">
<!-- [![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url] -->
<a href="">[![PyPI](https://img.shields.io/pypi/v/chrov?style=for-the-badge)![Python](https://img.shields.io/pypi/pyversions/chrov?style=for-the-badge)](https://pypi.org/project/chrov)</a>
<a href="">[![build](https://img.shields.io/github/actions/workflow/status/rraadd88/chrov/build.yml?style=for-the-badge)](https://github.com/rraadd88/chrov/actions/workflows/build.yml)</a>
<a href="">[![Issues](https://img.shields.io/github/issues/rraadd88/chrov.svg?style=for-the-badge)](https://github.com/rraadd88/chrov/issues)</a>
<br />
<a href="">[![Downloads](https://img.shields.io/pypi/dm/chrov?style=for-the-badge)](https://pepy.tech/project/chrov)</a>
<a href="">[![GNU License](https://img.shields.io/github/license/rraadd88/chrov.svg?style=for-the-badge)](https://github.com/rraadd88/chrov/blob/master/LICENSE)</a>
</div>
<!-- PROJECT LOGO -->
<div align="center">
<img src="https://github.com/rraadd88/chrov/assets/9945034/c2dcd214-a962-4d8c-bfbc-3a9ce82ce07f" alt="logo" />
<h1 align="center">chrov</h1>
<p align="center">
Chromosome Visualization library in python.
<br />
<a href="https://github.com/rraadd88/chrov#examples">Examples</a>
·
<a href="https://github.com/rraadd88/chrov#api">Explore the API</a>
</p>
</div>
![image](./examples/image.png)
# Examples
[🏷️Annotations on chromosomes](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_annot.ipynb)
[🧬Visualization of genome, set of chromosomes, a chromosome and an arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_chrom.ipynb)
[🔥🗺️Visualization of heatmaps along chromosome arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_chrom_custom.ipynb)
[🔌Integration of custom plots e.g. made using seaborn](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_figure_custom.ipynb)
[📈🍭Integration of basic plots e.g. stem/lollipop plot ](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_figure_stem.ipynb)
[↔️↔️Visualization of intervals/ranges/segments along a chromosome arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_ranges.ipynb)
# Installation
```
pip install chrov # with basic dependencies
```
With additional dependencies as required:
```
pip install chrov[dev] # for local testing
```
# How to cite?
1. 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.},
}
```
2. DOI link: [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10211265.svg)](https://zenodo.org/doi/10.5281/zenodo.10211265), or
3. Using citation information from [CITATION.CFF file](https://github.com/rraadd88/chrov/blob/main/CITATION.cff).
# 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:
- https://github.com/moshi4/pyCirclize
- https://github.com/ponnhide/pyCircos
# API
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz.annot`
Annotations.
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/annot.py#L58"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `annot_labels`
```python
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:**
- <b>`ax_chrom`</b> (plt.Axes): subplot with the chromosome plot
- <b>`col_label`</b> (str): column with the labels
- <b>`loc`</b> (str, optional): locations. Defaults to 'out'.
- <b>`color`</b> (str, optional): color. Defaults to 'darkgray'.
- <b>`yoff_scales`</b> (float, optional): y offset. Defaults to None.
- <b>`off_labels_segments`</b> (float, optional): offset for the label segments. Defaults to 20.
- <b>`scale_polar`</b> (float, optional): scale for the polar plot. Defaults to 1.5.
- <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None.
- <b>`test`</b> (bool, optional): test-mode. Defaults to False.
**Returns:**
- <b>`plt.Axes`</b>: subplot
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/annot.py#L360"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `show_segments`
```python
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:**
- <b>`ax`</b> (plt.Axes): subplot
- <b>`data`</b> (pd.DataFrame): input data
- <b>`size`</b> (int): size of the segments
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz.chrom`
Chromosome plots
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L60"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `to_polar`
```python
to_polar(
a: list,
range1: list = None,
range2: list = None,
interval: int = None
) → list
```
To polar coordinates
**Args:**
- <b>`a`</b> (list): Coordinates
- <b>`range1`</b> (list, optional): range1. Defaults to None.
- <b>`range2`</b> (list, optional): range2. Defaults to None.
- <b>`interval`</b> (int, optional): interval size. Defaults to None.
**Raises:**
- <b>`ValueError`</b>: Coordinates format
**Returns:**
- <b>`list`</b>: rescaled coordinates
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L169"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_arm`
```python
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:**
- <b>`data`</b> (pd.DataFrame): input table.
- <b>`y`</b> (float, optional): y position. Defaults to 0.
- <b>`lw`</b> (float, optional): line width. Defaults to 20.
- <b>`ec`</b> (str, optional): edge color. Defaults to 'k'.
- <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None.
- <b>`test`</b> (bool, optional): test-mode. Defaults to False.
**Returns:**
- <b>`plt.Axes`</b>: subplot
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L279"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_chrom`
```python
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:**
- <b>`data`</b> (pd.DataFrame): cytobands
- <b>`arc`</b> (bool, optional): arc/polar mode. Defaults to False.
- <b>`col_start`</b> (str, optional): column with start positions. Defaults to 'start'.
- <b>`col_end`</b> (str, optional): column with end positions. Defaults to 'end'.
- <b>`col_arm`</b> (str, optional): column with arm names. Defaults to 'arm'.
- <b>`pi_span`</b> (float, optional): pi span. Defaults to 1.
- <b>`pi_start`</b> (int, optional): pi start. Defaults to 0.
- <b>`pi_end`</b> (int, optional): pi end. Defaults to None.
- <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None.
- <b>`figsize`</b> (list, optional): sigure size. Defaults to None.
**Returns:**
- <b>`plt.Axes`</b>: subplot
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L539"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_chroms`
```python
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:**
- <b>`data`</b> (pd.DataFrame): cytonbands
- <b>`arc`</b> (bool, optional): arc/polar mode. Defaults to True.
- <b>`chromosomes`</b> (list, optional): chromosomes. Defaults to None.
- <b>`col_start`</b> (str, optional): column with start position. Defaults to 'start'.
- <b>`col_end`</b> (str, optional): column with end position. Defaults to 'end'.
- <b>`col_arm`</b> (str, optional): column with chromosome arm names. Defaults to 'arm'.
- <b>`span_color`</b> (str, optional): span color. Defaults to 'whitesmoke'.
- <b>`span_color_alpha_scale`</b> (float, optional): span color transparency scale. Defaults to 1.
- <b>`pi_span`</b> (float, optional): pi span. Defaults to 1.
- <b>`pi_start`</b> (int, optional): pi start angle. Defaults to 0.
- <b>`pi_end`</b> (int, optional): pi end angle. Defaults to None.
- <b>`show_labels`</b> (bool, optional): show labels. Defaults to True.
- <b>`show_vline`</b> (bool, optional): show vertical line. Defaults to True.
- <b>`label_y`</b> (str, optional): label y. Defaults to None.
- <b>`test`</b> (bool, optional): test-mode. Defaults to False.
- <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None.
- <b>`figsize`</b> (list, optional): figure size. Defaults to None.
- <b>`out_data`</b> (bool, optional): output data. Defaults to False.
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L771"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `annot_chroms`
```python
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:**
- <b>`data`</b> (pd.DataFrame): table with cytobands
- <b>`chromosomes`</b> (list): chromosomes
- <b>`ax_chrom`</b> (plt.Axes, optional): subplot with chromosome plot. Defaults to None.
- <b>`chrom_y`</b> (float, optional): chromosome y-position. Defaults to 0.
- <b>`kws_add_ax`</b> (dict, optional): keyword parameters provided to `_add_ax`. Defaults to {}.
- <b>`test`</b> (bool, optional): test mode. Defaults to False.
**Returns:**
- <b>`plt.Axes`</b>: subplot
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz.figure`
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/figure.py#L8"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_with_chroms`
```python
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:**
- <b>`data`</b> (pd.DataFrame): input table
- <b>`cytobands`</b> (pd.DataFrame): cytobands
- <b>`kind`</b> (str): kind of plot
- <b>`colx`</b> (str): column with x values
- <b>`coly`</b> (str): column with y values
- <b>`col_label`</b> (str): column with labels
- <b>`va`</b> (str): vertical alignment
- <b>`col_start`</b> (str, optional): column with start positions. Defaults to None.
- <b>`xkind`</b> (str, optional): kind of x values. Defaults to 'loci'.
- <b>`off`</b> (float, optional): offset scale of the chromosome plot. Defaults to None.
- <b>`offy`</b> (float, optional): offset y of the chromosome plot. Defaults to None.
- <b>`chrom_y`</b> (float, optional): chromosome y-position. Defaults to 0.
- <b>`arc`</b> (bool, optional): arc/polar plot or linear/rectangular one. Defaults to True.
- <b>`pi_span`</b> (float, optional): pi span. Defaults to 1.
- <b>`pi_start`</b> (int, optional): pi start. Defaults to 0.
- <b>`pi_end`</b> (int, optional): pi end. Defaults to None.
- <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None.
- <b>`figsize`</b> (list, optional): figure size. Defaults to None.
- <b>`ax_data`</b> (plt.Axes, optional): subplot with the data plot. Defaults to None.
- <b>`kws_seaborn`</b> (dict, optional): keyword parameters to seaborn plot. Defaults to {}.
- <b>`kws_annot_chroms`</b> (dict, optional): keyword parameters to the chromosome plot. Defaults to {}.
- <b>`kws_annot_labels`</b> (dict, optional): keyword parameters to the annotations of the labels. Defaults to {}.
- <b>`test`</b> (bool, optional): test mode. Defaults to False.
**Returns:**
- <b>`plt.Figure`</b>: figure
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz`
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz.plot`
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/plot.py#L7"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_seaborn`
```python
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:**
- <b>`data`</b> (pd.DataFrame): input data
- <b>`kind`</b> (str): kind of plot, seaborn function name
- <b>`coly`</b> (str): column with y values
- <b>`range1_chroms`</b> (list): input range of chromosomes
- <b>`arc`</b> (bool, optional): arc/polar or linear/rectangular plots. Defaults to True.
- <b>`pi_span`</b> (float, optional): pi span. Defaults to 1.
- <b>`pi_start`</b> (int, optional): pi start position. Defaults to 0.
- <b>`pi_end`</b> (int, optional): pi end position. Defaults to None.
- <b>`figsize`</b> (list, optional): figure size. Defaults to None.
- <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None.
- <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None.
**Returns:**
- <b>`tuple`</b>: subplot and data
TODOs: 1. set rlabel position.
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/plot.py#L129"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `heatmaps_strips`
```python
heatmaps_strips(
data: DataFrame,
strips_kws: dict,
fig: Figure = None,
axs: list = None,
kws_subplots: list = {}
) → tuple
```
Plot heatmap strips
**Args:**
- <b>`data`</b> (pd.DataFrame): input data
- <b>`strips_kws`</b> (dict): keyword arguments provided to strips
- <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None.
- <b>`axs`</b> (list, optional): subplots. Defaults to None.
- <b>`kws_subplots`</b> (list, optional): keyword arguments provided to subplots. Defaults to {}.
**Returns:**
- <b>`tuple`</b>: figure and subplots
<!-- markdownlint-disable -->
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
## <kbd>module</kbd> `chrov.viz.ranges`
---
<a href="https://github.com/rraadd88/chrov/blob/master/chrov/viz/ranges.py#L10"><img align="right" style="float:right;" src="https://img.shields.io/badge/-source-cccccc?style=flat-square"></a>
### <kbd>function</kbd> `plot_ranges`
```python
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:**
- <b>`data`</b> (pd.DataFrame): input data.
- <b>`col_id`</b> (str): column with ids.
- <b>`col_start`</b> (str): column with start co-ordinates.
- <b>`col_end`</b> (str): column with end co-ordinates.
- <b>`end`</b> (int): end position for the plot
- <b>`start`</b> (int, optional): start position for the plot. Defaults to 0.
- <b>`hue`</b> (str, optional): column with color. Defaults to None.
- <b>`y`</b> (_type_, optional): column with y positions. Defaults to None.
- <b>`cytobands`</b> (dict, optional): cytobands to plot the chromosomes. Defaults to None.
- <b>`cytobands_y`</b> (float, optional): cytobands y-position. Defaults to None.
- <b>`col_groupby`</b> (str, optional): column to group by. Defaults to None.
- <b>`col_sortby`</b> (str, optional): column to sort by. Defaults to None.
- <b>`col_label`</b> (str, optional): column with labels. Defaults to None.
- <b>`colors`</b> (dict, optional): colors. Defaults to None.
- <b>`lw`</b> (int, optional): line width. Defaults to 10.
- <b>`zorders`</b> (dict, optional): z-orders. Defaults to None.
- <b>`show_segments`</b> (bool, optional): show segments. Defaults to False.
- <b>`xtick_interval`</b> (float, optional): x tick intervals. Defaults to None.
- <b>`test`</b> (bool, optional): test-mode. Defaults to False.
- <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None.
**Raises:**
- <b>`ValueError`</b>: if kind is not 'split','separate' or 'joined'
**Returns:**
- <b>`plt.Axes`</b>: subplot
Raw data
{
"_id": null,
"home_page": "https://github.com/rraadd88/chrov",
"name": "chrov",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7, <4",
"maintainer_email": "",
"keywords": "",
"author": "Rohan Dandage",
"author_email": "rohanadandage@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/55/48/69f658d0b3e7a4fdf268512b3e88e8a8c2635922c18f15e9b7cdb69a8ad2/chrov-0.0.2.tar.gz",
"platform": null,
"description": "<!-- PROJECT SHIELDS -->\n<div align=\"center\">\n \n<!-- [![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url] -->\n<a href=\"\">[![PyPI](https://img.shields.io/pypi/v/chrov?style=for-the-badge)![Python](https://img.shields.io/pypi/pyversions/chrov?style=for-the-badge)](https://pypi.org/project/chrov)</a>\n<a href=\"\">[![build](https://img.shields.io/github/actions/workflow/status/rraadd88/chrov/build.yml?style=for-the-badge)](https://github.com/rraadd88/chrov/actions/workflows/build.yml)</a>\n<a href=\"\">[![Issues](https://img.shields.io/github/issues/rraadd88/chrov.svg?style=for-the-badge)](https://github.com/rraadd88/chrov/issues)</a>\n<br />\n<a href=\"\">[![Downloads](https://img.shields.io/pypi/dm/chrov?style=for-the-badge)](https://pepy.tech/project/chrov)</a>\n<a href=\"\">[![GNU License](https://img.shields.io/github/license/rraadd88/chrov.svg?style=for-the-badge)](https://github.com/rraadd88/chrov/blob/master/LICENSE)</a>\n</div>\n \n<!-- PROJECT LOGO -->\n<div align=\"center\">\n <img src=\"https://github.com/rraadd88/chrov/assets/9945034/c2dcd214-a962-4d8c-bfbc-3a9ce82ce07f\" alt=\"logo\" />\n <h1 align=\"center\">chrov</h1>\n <p align=\"center\">\n Chromosome Visualization library in python.\n <br />\n <a href=\"https://github.com/rraadd88/chrov#examples\">Examples</a>\n \u00b7\n <a href=\"https://github.com/rraadd88/chrov#api\">Explore the API</a>\n </p>\n</div> \n\n![image](./examples/image.png) \n\n# Examples \n\n[\ud83c\udff7\ufe0fAnnotations on chromosomes](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_annot.ipynb) \n[\ud83e\uddecVisualization of genome, set of chromosomes, a chromosome and an arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_chrom.ipynb) \n[\ud83d\udd25\ud83d\uddfa\ufe0fVisualization of heatmaps along chromosome arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_chrom_custom.ipynb) \n[\ud83d\udd0cIntegration of custom plots e.g. made using seaborn](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_figure_custom.ipynb) \n[\ud83d\udcc8\ud83c\udf6dIntegration of basic plots e.g. stem/lollipop plot ](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_figure_stem.ipynb) \n[\u2194\ufe0f\u2194\ufe0fVisualization of intervals/ranges/segments along a chromosome arm](https://github.com/rraadd88/chrov/blob/master/examples/chrov_viz_ranges.ipynb) \n \n# Installation\n \n```\npip install chrov # with basic dependencies \n```\nWith additional dependencies as required:\n```\npip install chrov[dev] # for local testing\n```\n\n# How to cite? \n1. Using BibTeX: \n```\n@software{Dandage_chrov,\n title = {chrov: Chromosome Visualization library in python},\n author = {Dandage, Rohan},\n year = {2023},\n url = {https://zenodo.org/doi/10.5281/zenodo.10211265},\n version = {v0.0.1},\n note = {The URL is a DOI link to the permanent archive of the software.},\n}\n```\n2. DOI link: [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10211265.svg)](https://zenodo.org/doi/10.5281/zenodo.10211265), or \n\n3. Using citation information from [CITATION.CFF file](https://github.com/rraadd88/chrov/blob/main/CITATION.cff). \n\n# Future directions, for which contributions are welcome: \n- [ ] Set subplot sizes by default: automate setting off and offy.\n- [ ] Compatibility of seaborn plots with polar layout.\n- [ ] Layering the interval vizualizations on the polar layout.\n- [ ] Connection styles.\n- [ ] Other features and improvements.\n\n# Similar projects:\n- https://github.com/moshi4/pyCirclize\n- https://github.com/ponnhide/pyCircos\n\n# API\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz.annot`\nAnnotations. \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/annot.py#L58\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `annot_labels`\n\n```python\nannot_labels(\n ax_chrom: Axes,\n data: DataFrame,\n colx: str,\n chrom_y: float,\n col_label: str,\n loc: str = 'out',\n col_start: str = None,\n ax: Axes = None,\n coly: str = None,\n col_labelx: str = 'label x',\n color: str = 'darkgray',\n yoff_scales: float = None,\n off_labels_segments: float = 20,\n scale_polar: float = 1.5,\n fig: Figure = None,\n test: bool = False\n) \u2192 Axes\n```\n\nAnnot labels e.g. gene names \n\n\n\n**Args:**\n \n - <b>`ax_chrom`</b> (plt.Axes): subplot with the chromosome plot \n - <b>`col_label`</b> (str): column with the labels \n - <b>`loc`</b> (str, optional): locations. Defaults to 'out'. \n - <b>`color`</b> (str, optional): color. Defaults to 'darkgray'. \n - <b>`yoff_scales`</b> (float, optional): y offset. Defaults to None. \n - <b>`off_labels_segments`</b> (float, optional): offset for the label segments. Defaults to 20. \n - <b>`scale_polar`</b> (float, optional): scale for the polar plot. Defaults to 1.5. \n - <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None. \n - <b>`test`</b> (bool, optional): test-mode. Defaults to False. \n\n\n\n**Returns:**\n \n - <b>`plt.Axes`</b>: subplot \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/annot.py#L360\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `show_segments`\n\n```python\nshow_segments(\n ax: Axes,\n y: float,\n offy: float,\n kind: str = 'arrows',\n segments: dict = None,\n segments_kws: dict = {},\n offytext: float = 0.2,\n arrow_kws: dict = {'color': 'k', 'lw': 1, 'alpha': 1, 'arrowstyle': '<->'},\n test: bool = False,\n **kws_annotate\n) \u2192 Axes\n```\n\nShow segments aligned to chromosome arm. \n\n\n\n**Args:**\n \n - <b>`ax`</b> (plt.Axes): subplot \n - <b>`data`</b> (pd.DataFrame): input data \n - <b>`size`</b> (int): size of the segments \n\n\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz.chrom`\nChromosome plots \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L60\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `to_polar`\n\n```python\nto_polar(\n a: list,\n range1: list = None,\n range2: list = None,\n interval: int = None\n) \u2192 list\n```\n\nTo polar coordinates \n\n\n\n**Args:**\n \n - <b>`a`</b> (list): Coordinates \n - <b>`range1`</b> (list, optional): range1. Defaults to None. \n - <b>`range2`</b> (list, optional): range2. Defaults to None. \n - <b>`interval`</b> (int, optional): interval size. Defaults to None. \n\n\n\n**Raises:**\n \n - <b>`ValueError`</b>: Coordinates format \n\n\n\n**Returns:**\n \n - <b>`list`</b>: rescaled coordinates \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L169\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_arm`\n\n```python\nplot_arm(\n data: DataFrame,\n arc: bool = False,\n col_start: str = 'start',\n col_end: str = 'end',\n y: float = 0,\n lw: float = 10,\n ec: str = 'k',\n pi_span: float = 1,\n pi_start: int = 0,\n pi_end: int = None,\n polar_smoothness_scale: float = 1,\n kws_pre_xys: dict = None,\n figsize: list = None,\n ax: Axes = None,\n test: bool = False,\n solid_capstyle='round'\n) \u2192 Axes\n```\n\nPlot chromosome arm. \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): input table. \n - <b>`y`</b> (float, optional): y position. Defaults to 0. \n - <b>`lw`</b> (float, optional): line width. Defaults to 20. \n - <b>`ec`</b> (str, optional): edge color. Defaults to 'k'. \n - <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None. \n - <b>`test`</b> (bool, optional): test-mode. Defaults to False. \n\n\n\n**Returns:**\n \n - <b>`plt.Axes`</b>: subplot \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L279\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_chrom`\n\n```python\nplot_chrom(\n data: DataFrame,\n arc: bool = False,\n col_start: str = 'start',\n col_end: str = 'end',\n col_arm: str = 'arm',\n pi_span: float = 1,\n pi_start: int = 0,\n pi_end: int = None,\n ax: Axes = None,\n figsize: list = None,\n **kws_plot_arm\n) \u2192 Axes\n```\n\nPlot a chromosome \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): cytobands \n - <b>`arc`</b> (bool, optional): arc/polar mode. Defaults to False. \n - <b>`col_start`</b> (str, optional): column with start positions. Defaults to 'start'. \n - <b>`col_end`</b> (str, optional): column with end positions. Defaults to 'end'. \n - <b>`col_arm`</b> (str, optional): column with arm names. Defaults to 'arm'. \n - <b>`pi_span`</b> (float, optional): pi span. Defaults to 1. \n - <b>`pi_start`</b> (int, optional): pi start. Defaults to 0. \n - <b>`pi_end`</b> (int, optional): pi end. Defaults to None. \n - <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None. \n - <b>`figsize`</b> (list, optional): sigure size. Defaults to None. \n\n\n\n**Returns:**\n \n - <b>`plt.Axes`</b>: subplot \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L539\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_chroms`\n\n```python\nplot_chroms(\n data: DataFrame,\n arc=True,\n chromosomes: list = None,\n col_start='start',\n col_end='end',\n col_arm='arm',\n span_color: str = '#dcdcdc',\n span_color_alpha_scale: float = 1,\n pi_span: float = 1,\n pi_start: int = 0,\n pi_end: int = None,\n show_labels: bool = True,\n show_vline: bool = True,\n label_y: str = None,\n test: bool = False,\n ax: Axes = None,\n figsize: list = None,\n out_data: bool = False,\n **kws_plot_arm\n)\n```\n\nPlot chromosomes joined. \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): cytonbands \n - <b>`arc`</b> (bool, optional): arc/polar mode. Defaults to True. \n - <b>`chromosomes`</b> (list, optional): chromosomes. Defaults to None. \n - <b>`col_start`</b> (str, optional): column with start position. Defaults to 'start'. \n - <b>`col_end`</b> (str, optional): column with end position. Defaults to 'end'. \n - <b>`col_arm`</b> (str, optional): column with chromosome arm names. Defaults to 'arm'. \n - <b>`span_color`</b> (str, optional): span color. Defaults to 'whitesmoke'. \n - <b>`span_color_alpha_scale`</b> (float, optional): span color transparency scale. Defaults to 1. \n - <b>`pi_span`</b> (float, optional): pi span. Defaults to 1. \n - <b>`pi_start`</b> (int, optional): pi start angle. Defaults to 0. \n - <b>`pi_end`</b> (int, optional): pi end angle. Defaults to None. \n - <b>`show_labels`</b> (bool, optional): show labels. Defaults to True. \n - <b>`show_vline`</b> (bool, optional): show vertical line. Defaults to True. \n - <b>`label_y`</b> (str, optional): label y. Defaults to None. \n - <b>`test`</b> (bool, optional): test-mode. Defaults to False. \n - <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None. \n - <b>`figsize`</b> (list, optional): figure size. Defaults to None. \n - <b>`out_data`</b> (bool, optional): output data. Defaults to False. \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/chrom.py#L771\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `annot_chroms`\n\n```python\nannot_chroms(\n data: DataFrame,\n chromosomes: list,\n ax_chrom: Axes = None,\n chrom_y: float = 0,\n kws_add_ax: dict = {},\n test: bool = False,\n **kws_plot\n) \u2192 Axes\n```\n\nAdd a subplot with the chromosome. \n\n\n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): table with cytobands \n - <b>`chromosomes`</b> (list): chromosomes \n - <b>`ax_chrom`</b> (plt.Axes, optional): subplot with chromosome plot. Defaults to None. \n - <b>`chrom_y`</b> (float, optional): chromosome y-position. Defaults to 0. \n - <b>`kws_add_ax`</b> (dict, optional): keyword parameters provided to `_add_ax`. Defaults to {}. \n - <b>`test`</b> (bool, optional): test mode. Defaults to False. \n\n\n\n**Returns:**\n \n - <b>`plt.Axes`</b>: subplot \n\n\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz.figure`\n\n\n\n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/figure.py#L8\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_with_chroms`\n\n```python\nplot_with_chroms(\n data: DataFrame,\n cytobands: DataFrame,\n kind: str,\n colx: str,\n coly: str,\n col_label: str,\n va: str,\n col_start: str = None,\n xkind: str = 'loci',\n coffy: str = None,\n off: float = None,\n offy: float = None,\n chrom_y: float = 0,\n arc: bool = True,\n pi_span: float = 1,\n pi_start: int = 0,\n pi_end: int = None,\n fig: Figure = None,\n figsize: list = None,\n ax_data: Axes = None,\n kws_seaborn: dict = {},\n kws_annot_chroms: dict = {},\n kws_annot_labels: dict = {},\n test: bool = False\n) \u2192 Figure\n```\n\nPlot with chromosomes. \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): input table \n - <b>`cytobands`</b> (pd.DataFrame): cytobands \n - <b>`kind`</b> (str): kind of plot \n - <b>`colx`</b> (str): column with x values \n - <b>`coly`</b> (str): column with y values \n - <b>`col_label`</b> (str): column with labels \n - <b>`va`</b> (str): vertical alignment \n - <b>`col_start`</b> (str, optional): column with start positions. Defaults to None. \n - <b>`xkind`</b> (str, optional): kind of x values. Defaults to 'loci'. \n - <b>`off`</b> (float, optional): offset scale of the chromosome plot. Defaults to None. \n - <b>`offy`</b> (float, optional): offset y of the chromosome plot. Defaults to None. \n - <b>`chrom_y`</b> (float, optional): chromosome y-position. Defaults to 0. \n - <b>`arc`</b> (bool, optional): arc/polar plot or linear/rectangular one. Defaults to True. \n - <b>`pi_span`</b> (float, optional): pi span. Defaults to 1. \n - <b>`pi_start`</b> (int, optional): pi start. Defaults to 0. \n - <b>`pi_end`</b> (int, optional): pi end. Defaults to None. \n - <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None. \n - <b>`figsize`</b> (list, optional): figure size. Defaults to None. \n - <b>`ax_data`</b> (plt.Axes, optional): subplot with the data plot. Defaults to None. \n - <b>`kws_seaborn`</b> (dict, optional): keyword parameters to seaborn plot. Defaults to {}. \n - <b>`kws_annot_chroms`</b> (dict, optional): keyword parameters to the chromosome plot. Defaults to {}. \n - <b>`kws_annot_labels`</b> (dict, optional): keyword parameters to the annotations of the labels. Defaults to {}. \n - <b>`test`</b> (bool, optional): test mode. Defaults to False. \n\n\n\n**Returns:**\n \n - <b>`plt.Figure`</b>: figure \n\n\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz`\n\n\n\n\n\n\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz.plot`\n\n\n\n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/plot.py#L7\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_seaborn`\n\n```python\nplot_seaborn(\n data: DataFrame,\n kind: str,\n colx: str,\n coly: str,\n range1_chroms: list,\n arc: bool = True,\n pi_span: float = 1,\n pi_start: int = 0,\n pi_end: int = None,\n figsize: list = None,\n ax: Axes = None,\n fig: Figure = None,\n **kws_plot\n) \u2192 tuple\n```\n\nplot_seaborn _summary_ \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): input data \n - <b>`kind`</b> (str): kind of plot, seaborn function name \n - <b>`coly`</b> (str): column with y values \n - <b>`range1_chroms`</b> (list): input range of chromosomes \n - <b>`arc`</b> (bool, optional): arc/polar or linear/rectangular plots. Defaults to True. \n - <b>`pi_span`</b> (float, optional): pi span. Defaults to 1. \n - <b>`pi_start`</b> (int, optional): pi start position. Defaults to 0. \n - <b>`pi_end`</b> (int, optional): pi end position. Defaults to None. \n - <b>`figsize`</b> (list, optional): figure size. Defaults to None. \n - <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None. \n - <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None. \n\n\n\n**Returns:**\n \n - <b>`tuple`</b>: subplot and data \n\nTODOs: 1. set rlabel position. \n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/plot.py#L129\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `heatmaps_strips`\n\n```python\nheatmaps_strips(\n data: DataFrame,\n strips_kws: dict,\n fig: Figure = None,\n axs: list = None,\n kws_subplots: list = {}\n) \u2192 tuple\n```\n\nPlot heatmap strips \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): input data \n - <b>`strips_kws`</b> (dict): keyword arguments provided to strips \n - <b>`fig`</b> (plt.Figure, optional): figure. Defaults to None. \n - <b>`axs`</b> (list, optional): subplots. Defaults to None. \n - <b>`kws_subplots`</b> (list, optional): keyword arguments provided to subplots. Defaults to {}. \n\n\n\n**Returns:**\n \n - <b>`tuple`</b>: figure and subplots \n\n\n<!-- markdownlint-disable -->\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz.py#L0\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n## <kbd>module</kbd> `chrov.viz.ranges`\n\n\n\n\n\n---\n\n<a href=\"https://github.com/rraadd88/chrov/blob/master/chrov/viz/ranges.py#L10\"><img align=\"right\" style=\"float:right;\" src=\"https://img.shields.io/badge/-source-cccccc?style=flat-square\"></a>\n\n### <kbd>function</kbd> `plot_ranges`\n\n```python\nplot_ranges(\n data: DataFrame,\n col_id: str,\n col_start: str,\n col_end: str,\n end: int,\n start: int = 0,\n hue: str = None,\n y=None,\n kind=None,\n cytobands: dict = None,\n cytobands_y: float = None,\n col_groupby: str = None,\n col_sortby: str = None,\n col_label: str = None,\n colors: dict = None,\n lw: int = 10,\n zorders: dict = None,\n show_segments: bool = False,\n xtick_interval: float = None,\n test: bool = False,\n ax: Axes = None\n) \u2192 Axes\n```\n\nPlot ranges. \n\n\n\n**Args:**\n \n - <b>`data`</b> (pd.DataFrame): input data. \n - <b>`col_id`</b> (str): column with ids. \n - <b>`col_start`</b> (str): column with start co-ordinates. \n - <b>`col_end`</b> (str): column with end co-ordinates. \n - <b>`end`</b> (int): end position for the plot \n - <b>`start`</b> (int, optional): start position for the plot. Defaults to 0. \n - <b>`hue`</b> (str, optional): column with color. Defaults to None. \n - <b>`y`</b> (_type_, optional): column with y positions. Defaults to None. \n - <b>`cytobands`</b> (dict, optional): cytobands to plot the chromosomes. Defaults to None. \n - <b>`cytobands_y`</b> (float, optional): cytobands y-position. Defaults to None. \n - <b>`col_groupby`</b> (str, optional): column to group by. Defaults to None. \n - <b>`col_sortby`</b> (str, optional): column to sort by. Defaults to None. \n - <b>`col_label`</b> (str, optional): column with labels. Defaults to None. \n - <b>`colors`</b> (dict, optional): colors. Defaults to None. \n - <b>`lw`</b> (int, optional): line width. Defaults to 10. \n - <b>`zorders`</b> (dict, optional): z-orders. Defaults to None. \n - <b>`show_segments`</b> (bool, optional): show segments. Defaults to False. \n - <b>`xtick_interval`</b> (float, optional): x tick intervals. Defaults to None. \n - <b>`test`</b> (bool, optional): test-mode. Defaults to False. \n - <b>`ax`</b> (plt.Axes, optional): subplot. Defaults to None. \n\n\n\n**Raises:**\n \n - <b>`ValueError`</b>: if kind is not 'split','separate' or 'joined' \n\n\n\n**Returns:**\n \n - <b>`plt.Axes`</b>: subplot \n\n\n",
"bugtrack_url": null,
"license": "General Public License v. 3",
"summary": "chrov:",
"version": "0.0.2",
"project_urls": {
"Homepage": "https://github.com/rraadd88/chrov"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "554869f658d0b3e7a4fdf268512b3e88e8a8c2635922c18f15e9b7cdb69a8ad2",
"md5": "5b09db2c379e3b3da7e19fb7f93f89a7",
"sha256": "54c8e8f8cb9368363f35e36ed43f2bfa08fb5067ffa42eab8095e0692d205cc5"
},
"downloads": -1,
"filename": "chrov-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "5b09db2c379e3b3da7e19fb7f93f89a7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7, <4",
"size": 35987,
"upload_time": "2024-02-12T00:25:11",
"upload_time_iso_8601": "2024-02-12T00:25:11.862725Z",
"url": "https://files.pythonhosted.org/packages/55/48/69f658d0b3e7a4fdf268512b3e88e8a8c2635922c18f15e9b7cdb69a8ad2/chrov-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-12 00:25:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rraadd88",
"github_project": "chrov",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "chrov"
}