Genome circos python package.
Project description
GenomeCircos: Genome circos diagram python package
Install
pip install genome-circos --upgrade
Change logs
v0.3.0
- New
- New parameter of ChromosomeCircos:
- font_size: global font size.
- New parameter of bar method:
- height: height of statistical bar.
- New parameter of plot method:
- height: curve height.
- New method of ChromosomeCircos:
- identity_heatmap: show sequence identity on each chromosome.
- New parameter of ChromosomeCircos:
- Modified
- Rename the "plot2" method to "density_heatmap".
- Deleted
- Null
v0.2.0
- New
- New attributions of ChromosomeCircos:
- spacing: set the spacing between chromosomes to be one quarter (spacing=4) of the shortest chromosome.
- New methods of ChromosomeCircos:
- plot2: show feature density using heatmap.
- save: save the image.
- New attributions of ChromosomeCircos:
- Modified
- Null
- Deleted
- Null
Usage example
1. Show chromosome.
Place all the chromosomes on the same ring.
from genome_circos import ChromosomeCircos
cc = ChromosomeCircos(
chr_len_file='example/chr_len.txt', # chromosome length file (ChrName\tChrLen\tEtc)
spacing=4, # set the spacing between chromosomes to be one quarter of the shortest chromosome
font=None, # use default font of matplotlib.rcParams['font.family']
font_size=8, # global font size
figsize=(10, 8), # figure dimension (width, height) in inches
dpi=300 # dots per inch
)
ax = cc.chr_bar(
height=1, # chromosome bar height
bottom=10, # chromosome bar bottom y-axis coordinate
face_color='lightgrey', # chromosome bar fill colr
edge_color='black', # chromosome bar border colr
line_width=0.4, # chromosome bar border width
font_size=6 # chromosome name font size
)
ax.legend(loc=(0.999, 0.9))
cc.save('example/1.png')
List all available fonts on your system.
import matplotlib.font_manager as fm
all_fonts = fm.findSystemFonts()
font_names = [f.name for f in fm.fontManager.ttflist]
unique_fonts = sorted(set(font_names))
for idx, font in enumerate(unique_fonts, 1):
print(f"{idx}. {font}")
Make some chromosomes protrude outward.
bottom = [9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 11, 9, 9, 9, 9, 9, 9, 9, 10]
ax = cc.chr_bar(
height=1,
bottom=bottom,
face_color='lightgrey',
edge_color='black',
line_width=0.4,
font_size=6
)
ax.legend(loc=(0.999, 0.9))
cc.save('example/2.png')
2. Count the number of different features on each chromosome.
cc.bar(
axes=ax, # axes object of matplotlib.axes.Axes.
stat_file='example/stat.txt', # feature statistics file (ChrName\tFeatureType\tCount\tColor)
bottom=[i + 1.5 for i in bottom], # bottom y-axis coordinate of statistic bar on each chromosome
frame=True # add borders to the bar charts on each chromosome
)
ax.legend(loc=(0.999, 0.7))
cc.save('example/3.png')
Or move the bar chart to the inner circle.
cc.bar(
axes=ax,
stat_file='example/stat.txt',
bottom=[i - 1.5 for i in bottom],
frame=True
)
ax.legend(loc=(0.999, 0.7))
cc.save('example/4.png')
3. Show feature density on each chromosome.
Show gene density.
cc.plot(
gene_density_file='example/gene_density.txt', # feature density file (ChrName\tStart\tEnd\tCount)
axes=ax,
bottom=[i - 1.5 for i in bottom], # y-axis coordinate bottom of gene density chart for each chromosome
color='#87CEEB', # density curve color
label='gene density', # density curve label
frame=True # enable borders
)
ax.legend(loc=(0.999, 0.6))
cc.save('example/5.png')
Show circRNA density.
cc.plot(
gene_density_file='example/circ_density.txt',
axes=ax,
bottom=[i - 3 for i in bottom],
color='#FFC125',
label='circRNA density',
frame=True
)
ax.legend(loc=(0.999, 0.6))
cc.save('example/6.png')
4. Link the two loci on the genome that interact with each other.
cc.links(
axes=ax,
link_file='example/link.txt', # associated site file (ChrName\tStart\tEnd\tChrName\tStart\tEnd\tColor\tLabel)
bottom=[i - 3.1 for i in bottom],
line_width=0.6,
alpha=0.5
)
ax.legend(loc=(0.999, 0.6))
cc.save('example/7.png')
5. All steps.
from genome_circos import ChromosomeCircos
cc = ChromosomeCircos(
chr_len_file='example/chr_len.txt',
spacing=3,
font=None,
font_size=8,
figsize=(10, 8),
dpi=300
)
bottom = [15, 15, 15, 15, 15, 17, 15, 15, 15, 15, 18, 15, 15, 15, 15, 15, 15, 15, 17]
ax = cc.chr_bar(
bottom=bottom,
height=1,
face_color='lightgrey',
edge_color='black',
line_width=0.4,
font_size=6
)
# show sequence identity
# note: this step may run slowly, please be patient and wait
cc.identity_heatmap(
cis_acting_file='example/region_identity.txt',
matches_cutoff=3000,
axes=ax,
bottom=[i + 1.3 for i in bottom],
height=3,
marker_size=0.01,
cmap='YlOrRd'
)
cc.bar(
axes=ax,
stat_file='example/stat.txt',
bottom=[i - 1.5 for i in bottom],
height=1,
frame=True # disable borders
)
# show repeat sequence density curve
cc.plot(
gene_density_file='example/repeat_density.txt',
axes=ax,
bottom=[i - 5.7 for i in bottom],
height=1,
line_width=0.5,
color='#87CEEB',
label='repeat sequence density',
frame=True # enable borders
)
cc.links(
axes=ax,
link_file='example/link.txt',
bottom=[i - 5.9 for i in bottom],
line_width=0.8,
alpha=0.5
)
# show gene density heatmap
# note: plot2 must be placed at the very end
cc.density_heatmap(
gene_density_file='example/gene_density.txt',
axes=ax,
bottom=[i - 2.8 for i in bottom],
height=0.8, # heatmap height
linewidths=1, # gene density heatmap curve width for each chromosome
cmap='rainbow', # color map, see https://matplotlib.org/stable/gallery/color/colormap_reference.html
label='gene density',
n_min=0, # the data value mapped to the bottom of the colormap (i.e. 0)
n_max=80 # the data value mapped to the top of the colormap (i.e. 1).
)
# show circRNA density heatmap
cc.density_heatmap(
gene_density_file='example/circ_density.txt',
axes=ax,
bottom=[i - 4.1 for i in bottom],
height=0.8,
linewidths=1,
cmap='cool',
label='circRNA density',
n_min=0,
n_max=3
)
ax.legend(loc=(0.999, 0.6))
cc.save('example/8.png')
Tips: Use the "bottom" parameter of each plotting function to control the distance between each circle in the Circos graph.
More detail params see example file.
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
genome_circos-0.0.3.tar.gz
(8.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file genome_circos-0.0.3.tar.gz.
File metadata
- Download URL: genome_circos-0.0.3.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ec90166cc51b4102bf05dce4b360cfda8af1f63c9eeb5584f12af43471c5496
|
|
| MD5 |
decfa420446d9f3c256b17a56e5524c6
|
|
| BLAKE2b-256 |
40e56a5bae9c97a2246b75240cad97935202a32ffb0ef64268592ee3d3be3713
|
File details
Details for the file genome_circos-0.0.3-py3-none-any.whl.
File metadata
- Download URL: genome_circos-0.0.3-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df98283ce2645ebb1889e9f3efed9a05afe0c6455e345cdd3bda070544ba7298
|
|
| MD5 |
98c2fa32225df41972fbbcd5eb6c6880
|
|
| BLAKE2b-256 |
187993589af4f1db3985eeb0318b0492611f1b954b04dbe484be88a27d9d24cd
|