本文整理汇总了Python中RNA.get_xy_coordinates方法的典型用法代码示例。如果您正苦于以下问题:Python RNA.get_xy_coordinates方法的具体用法?Python RNA.get_xy_coordinates怎么用?Python RNA.get_xy_coordinates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RNA
的用法示例。
在下文中一共展示了RNA.get_xy_coordinates方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: plot_rna
# 需要导入模块: import RNA [as 别名]
# 或者: from RNA import get_xy_coordinates [as 别名]
def plot_rna(cg, ax=None, offset=(0, 0), text_kwargs={}, backbone_kwargs={},
basepair_kwargs={}, color=True, lighten=0, annotations={}):
'''
Plot an RNA structure given a set of nucleotide coordinates
.. note::
This function calls set_axis_off on the axis. You can revert this by
using ax.set_axis_on() if you like to see the axis.
:param cg: A forgi.threedee.model.coarse_grain.CoarseGrainRNA structure
:param ax: A matplotlib plotting area
:param offset: Offset the plot by these coordinates. If a simple True is passed in, then
offset by the current width of the plot
:param text_kwargs: keyword arguments passed to matplotlib.pyplot.annotate
for plotting of the sequence
:param backbone_kwargs: keyword arguments passed to matplotlib.pyplot.plot
for plotting of the backbone links
:param basepair_kwargs: keyword arguments passed to matplotlib.pyplot.plot
for plotting of the basepair links
:param lighten: Make circles lighter. A percent value where 1 makes
everything white and 0 leaves the colors unchanged
:param annotations: A dictionary {elem_name: string} or None.
By default, the element names (e.g. "s0") are plotted
next to the element. This dictionary can be used to
override the default element names by costum strings.
To remove individual annotations, assign an empty string to the key.
To remove all annotations, set this to None.
.. warning::
Annotations are not shown, if there is not enough space.
Annotations not shown are logged with level INFO
:return: (ax, coords) The axes and the coordinates for each nucleotide
'''
log.info("Starting to plot RNA...")
import RNA
import matplotlib.colors as mc
RNA.cvar.rna_plot_type = 1
coords = []
#colors = []
#circles = []
bp_string = cg.to_dotbracket_string()
# get the type of element of each nucleotide
el_string = cg.to_element_string()
# i.e. eeesssshhhhsssseeee
el_to_color = {'f': 'orange',
't': 'orange',
's': 'green',
'h': 'blue',
'i': 'yellow',
'm': 'red'}
if ax is None:
ax = plt.gca()
if offset is None:
offset = (0, 0)
elif offset is True:
offset = (ax.get_xlim()[1], ax.get_ylim()[1])
else:
pass
vrna_coords = RNA.get_xy_coordinates(bp_string)
# TODO Add option to rotate the plot
for i, _ in enumerate(bp_string):
coord = (offset[0] + vrna_coords.get(i).X,
offset[1] + vrna_coords.get(i).Y)
coords.append(coord)
coords = np.array(coords)
# First plot backbone
bkwargs = {"color":"black", "zorder":0}
bkwargs.update(backbone_kwargs)
ax.plot(coords[:,0], coords[:,1], **bkwargs)
# Now plot basepairs
basepairs = []
for s in cg.stem_iterator():
for p1, p2 in cg.stem_bp_iterator(s):
basepairs.append([coords[p1-1], coords[p2-1]])
if basepairs:
basepairs = np.array(basepairs)
if color:
c = "red"
else:
c = "black"
bpkwargs = {"color":c, "zorder":0, "linewidth":3}
bpkwargs.update(basepair_kwargs)
ax.plot(basepairs[:,:,0].T, basepairs[:,:,1].T, **bpkwargs)
# Now plot circles
for i, coord in enumerate(coords):
if color:
c = el_to_color[el_string[i]]
h,l,s = colorsys.rgb_to_hls(*mc.to_rgb(c))
if lighten>0:
l += (1-l)*min(1,lighten)
else:
l +=l*max(-1, lighten)
if l>1 or l<0:
#.........这里部分代码省略.........