Skip to content

Commit 2405d2b

Browse files
committed
Add option for custom chr_prefix
1 parent 77e263c commit 2405d2b

File tree

8 files changed

+20
-13
lines changed

8 files changed

+20
-13
lines changed

docs/content/describe_figure.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ Parameters:
9393

9494
* ``ticks_angle``: Angle in degrees at which the ticks are written. The default (0) results in horizontal ticks, but you can also tilt them by increasing this value to e.g. 30. Rotating the ticks might result in them overlapping with the chromosome name, so you might want to post-process the figure in a vector graphics editor by manualling moving the chromosome name in case of overlap.
9595

96+
* ``chr_prefix``: Prefix to add before the chromosome names (default: "chr").
9697

9798
genes
9899
^^^^^

figeno/cli/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from figeno.cli import gui, init,make
44

5-
__version__ = "1.4.7"
5+
__version__ = "1.5.0"
66

77
def main():
88
parser = ArgumentParser("figeno",formatter_class=ArgumentDefaultsHelpFormatter)

figeno/gui/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

figeno/gui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "figeno",
3-
"version": "1.4.7",
3+
"version": "1.5.0",
44
"private": true,
55
"homepage": "./",
66
"dependencies": {

figeno/gui/src/Track.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ function ChrTrack({track,set_value}){
148148
<div className='formItem'>
149149
<label htmlFor={"ticks_angle"+track.id}>Ticks angle (°):</label>
150150
<input id={"ticks_angle"+track.id} style={{width:"3em"}} value={track.ticks_angle} onChange={(e)=>set_value("ticks_angle",e.target.value)} ></input>
151+
</div>
152+
<div className='formItem'>
153+
<label htmlFor={"chr_prefix"+track.id}>Chr prefix:</label>
154+
<input id={"chr_prefix"+track.id} style={{width:"3em"}} value={track.chr_prefix} onChange={(e)=>set_value("chr_prefix",e.target.value)} ></input>
151155
</div>
152156
</>):""}
153157
</div>

figeno/gui/src/TracksContainer.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export const defaultTrackValues={
1818
ticklabels_pos:"below",
1919
unit:"kb",
2020
ticks_interval:"auto",
21-
ticks_angle:0
21+
ticks_angle:0,
22+
chr_prefix: "chr"
2223
},
2324
"genes":{
2425
height:"10",

figeno/track_chr.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from figeno.utils import KnownException, split_box, draw_bounding_box , interpolate_polar_vertices, compute_rotation_text, polar2cartesian, cartesian2polar
1010

1111
class chr_track:
12-
def __init__(self,style="default",unit="kb",ticklabels_pos="below",ticks_interval="auto",ticks_angle=0,lw_scale=1.0,no_margin=False,reference="custom",cytobands_file="",
12+
def __init__(self,style="default",unit="kb",ticklabels_pos="below",ticks_interval="auto",ticks_angle=0,lw_scale=1.0,chr_prefix="chr",no_margin=False,reference="custom",cytobands_file="",
1313
fontscale=1,bounding_box=False,height=12,margin_above=1.5,label="",label_rotate=False,**kwargs):
1414
self.style=style
1515
self.unit=unit
@@ -19,6 +19,7 @@ def __init__(self,style="default",unit="kb",ticklabels_pos="below",ticks_interva
1919
self.lw_scale= float(lw_scale)
2020
while self.ticks_angle<-180: self.ticks_angle+=360
2121
while self.ticks_angle>180: self.ticks_angle-=360
22+
self.chr_prefix=chr_prefix
2223
self.no_margin=no_margin
2324
self.reference=reference
2425
self.fontscale=float(fontscale)
@@ -149,9 +150,9 @@ def draw_region(self,region,box,single_region=False):
149150
# Chr label
150151
if self.ticklabels_pos!="none":
151152
if self.ticklabels_pos=="below" and (not "upside_down" in box):
152-
box["ax"].text((box["left"]+box["right"])/2,box["bottom"],"chr"+region.chr,horizontalalignment="center",verticalalignment="bottom",fontsize=9*self.fontscale)
153+
box["ax"].text((box["left"]+box["right"])/2,box["bottom"],self.chr_prefix+region.chr,horizontalalignment="center",verticalalignment="bottom",fontsize=9*self.fontscale)
153154
else:
154-
box["ax"].text((box["left"]+box["right"])/2,box["top"],"chr"+region.chr,horizontalalignment="center",verticalalignment="top",fontsize=9*self.fontscale)
155+
box["ax"].text((box["left"]+box["right"])/2,box["top"],self.chr_prefix+region.chr,horizontalalignment="center",verticalalignment="top",fontsize=9*self.fontscale)
155156

156157
def draw_region_arrow(self,region,box):
157158
arrow_height = (box["top"]-box['bottom']) * 0.5 *self.lw_scale
@@ -193,23 +194,23 @@ def draw_region_arrow(self,region,box):
193194
fontsize=8*self.fontscale)
194195

195196
if self.ticklabels_pos=="below" and (not "upside_down" in box):
196-
box["ax"].text((box["right"]+box["left"])/2,box["top"]-arrow_height*1.55,"chr"+region.chr.lstrip("chr"),horizontalalignment="center",verticalalignment="top",
197+
box["ax"].text((box["right"]+box["left"])/2,box["top"]-arrow_height*1.55,self.chr_prefix+region.chr.lstrip("chr"),horizontalalignment="center",verticalalignment="top",
197198
fontsize=10*self.fontscale)
198199
else:
199-
box["ax"].text((box["right"]+box["left"])/2,box["bottom"]+arrow_height*1.55,"chr"+region.chr.lstrip("chr"),horizontalalignment="center",verticalalignment="bottom",
200+
box["ax"].text((box["right"]+box["left"])/2,box["bottom"]+arrow_height*1.55,self.chr_prefix+region.chr.lstrip("chr"),horizontalalignment="center",verticalalignment="bottom",
200201
fontsize=10*self.fontscale)
201202

202203
def draw_region_ideogram(self,region,box):
203204
height = (box["top"]-box["bottom"]) * 0.5 *self.lw_scale
204205
if self.ticklabels_pos=="below" and (not "upside_down" in box):
205206
y = box["bottom"] + (box["top"]-box["bottom"]) * 0.75
206207
if self.fontscale>0:
207-
box["ax"].text((box["left"]+box["right"])/2, box["top"]-height-1, "chr"+region.chr,
208+
box["ax"].text((box["left"]+box["right"])/2, box["top"]-height-1, self.chr_prefix+region.chr,
208209
horizontalalignment="center", verticalalignment="top",fontsize=10*self.fontscale)
209210
elif self.ticklabels_pos=="above":
210211
y = box["bottom"] + (box["top"]-box["bottom"]) * 0.25
211212
if self.fontscale>0:
212-
box["ax"].text((box["left"]+box["right"])/2, box["bottom"] + height+1, "chr"+region.chr,
213+
box["ax"].text((box["left"]+box["right"])/2, box["bottom"] + height+1, self.chr_prefix+region.chr,
213214
horizontalalignment="center", verticalalignment="bottom",fontsize=10*self.fontscale)
214215
else:
215216
y= (box["bottom"]+box["top"]) / 2

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ packages = ["figeno", "figeno.data", "figeno.cli", "figeno.gui"]
99

1010
[project]
1111
name = 'figeno'
12-
version = "1.4.7"
12+
version = "1.5.0"
1313
description = 'Package for generating genomics figures.'
1414
readme = 'README.md'
1515
authors = [

0 commit comments

Comments
 (0)