示例#1
0
def test_plotting_construct():
    """Test that a construct can be plotted."""
    renderer = psv.GlyphRenderer()
    fig, ax = plt.subplots()

    construct = psv.Construct([["RibosomeEntrySite", None, None]],
                              renderer,
                              fig=fig,
                              ax=ax,
                              start_position=(0, 0),
                              gapsize=20,
                              padding=10)
    fig, ax, baseline_start, baseline_end, bounds = construct.draw()

    ax.plot([baseline_start[0], baseline_end[0]],
            [baseline_start[1], baseline_end[1]],
            color=(0, 0, 0),
            linewidth=1.5,
            zorder=0)
示例#2
0
def test_plotting_interactions():
    """Test loading glyphs from SVGs with no errors/exceptions."""
    renderer = psv.GlyphRenderer()
    part_list = [["Promoter", None, None], ["Promoter", None, None]]
    int_list = [[
        part_list[0], part_list[1], 'inhibition', {
            'color': (1, 0, 0),
            'headheight': 13.0,
            'headwidth': 14.0,
            'zorder': 2,
            'direction': 'forward',
            'linewidth': 2.0,
            'heightskew': 15.0,
            'sending_length_skew': 3.0,
            'receiving_length_skew': 4.0,
            'distance_from_baseline': 27.0
        }
    ]]
    construct = psv.Construct(part_list, renderer, interaction_list=int_list)
    fig, ax, baseline_start, baseline_end, bounds = construct.draw()
示例#3
0
def render_input(string, rotation, gapsize, interaction, save, savetype, savepath, fill):
    """Renders a construct from an input string.
    
    Parameters
    ----------
    string: str
        Input string containing construct details.
    rotation: str
        String containing expression of rotation
        to be evaluated
    gapsize: float
        Size of the gap between construct parts.
    interaction: str
        String to be processed defining either
        a single or multiple interactions.
    """
    parts = parse_string(string)
    part_list = format_parts(parts, renderer, fill)
    if rotation != '':
        rotation = safe_eval(rotation)
    else:
        rotation = 0.0
    if interaction != '':
        interaction = process_interactions(interaction, part_list)
    else:
        interaction = None
    construct = psv.Construct(part_list, renderer, rotation=rotation, gapsize = gapsize, interaction_list = interaction)
    fig, ax, baseline_start, baseline_end, bounds = construct.draw()
    ax.plot([baseline_start[0], baseline_end[0]], [baseline_start[1], baseline_end[1]], color=(0,0,0), linewidth=1.5, zorder=0)
    if save == 1:
        filename = f'pSBOLv-cli-output.{savetype}'
        if savepath != '':
            filename = f'{savepath}/{filename}'
        fig.savefig(filename, dpi=300)
    else:
        plt.show()
    part_list.append([part, None, None])
    part_list.append([part, {'orientation': 'reverse'}, None])

length = len(part_list)
r = length % 12
number_of_rows = int((length - r) / 12)

for n in range(number_of_rows + 1):
    parts_to_draw = part_list[n * 12:((n + 1) * 12)]
    if len(parts_to_draw) == 0:
        break
    start_position = (start_position[0], start_position[1] - 40)
    construct = psv.Construct(parts_to_draw,
                              renderer,
                              fig=fig,
                              ax=ax,
                              start_position=start_position,
                              gapsize=20,
                              padding=10)
    fig, ax, baseline_start, baseline_end, bounds = construct.draw()
    ax.plot([baseline_start[0], baseline_end[0]],
            [baseline_start[1], baseline_end[1]],
            color=(0, 0, 0),
            linewidth=1.5,
            zorder=0)
    bounds_list.append(bounds)

# Plot glyphs not on backbone
parts = list(renderer.glyphs_library.keys())

part_list = []
    [part_list[0], part_list[1], 'inhibition', {
        'color': (0.75, 0, 0)
    }])
interaction_list.append([
    part_list[2], part_list[3], 'control', {
        'color': (0, 0.75, 0),
        'direction': 'reverse'
    }
])

# Create renderer
renderer = psv.GlyphRenderer()

# Plot Construct
construct = psv.Construct(part_list,
                          renderer,
                          interaction_list=interaction_list)
fig, ax, baseline_start, baseline_end, bounds = construct.draw()
ax.plot([baseline_start[0], baseline_end[0]],
        [baseline_start[1], baseline_end[1]],
        color=(0, 0, 0),
        linewidth=1.5,
        zorder=0)

# You can also manually plot interactions:
# interaction_bounds = psv.draw_interaction(ax, ((50, 15), (50, 15)), ((60, 15), (60, 15)), 'process', None)

fig.savefig('06_draw_interactions.pdf', transparent=True, dpi=300)
fig.savefig('06_draw_interactions.jpg', dpi=300)
plt.show()
示例#6
0
                    gff_el[5]['style_parameters']
                ])
            else:
                if 'user_parameters' in gff_el[5]:
                    part_list.append(
                        [gff_el[1], gff_el[5]['user_parameters'], None])
                else:
                    part_list.append(
                        [gff_el[1], None, gff_el[5]['style_parameters']])

    return part_list


part_list = load_part_list_from_gff('./04_plot_gff.gff',
                                    'chrom1',
                                    type_map=gffsvgtype_map)

renderer = psv.GlyphRenderer()

construct = psv.Construct(part_list, renderer)
fig, ax, baseline_start, baseline_end, bounds = construct.draw()
ax.plot([baseline_start[0], baseline_end[0]],
        [baseline_start[1], baseline_end[1]],
        color=(0, 0, 0),
        linewidth=1.5,
        zorder=0)

fig.savefig('04_plot_gff.pdf', transparent=True, dpi=300)
fig.savefig('04_plot_gff.jpg', dpi=300)
plt.show()
                   None, 
                   None
                  ] )
part_list.append( ['CDS', 
                   {'orientation':'reverse'}, 
                   None
                  ] )
part_list.append( ['CDS', 
                   {'orientation':'reverse'},
                   None
                  ] )

# Create renderer
renderer = psv.GlyphRenderer()

# Draw construct
construct = psv.Construct(part_list, renderer)
fig, ax, baseline_start, baseline_end, bounds = construct.draw()
ax.plot([baseline_start[0], baseline_end[0]], [baseline_start[1], baseline_end[1]], color=(0,0,0), linewidth=1.5, zorder=0)

# Draw rotated construct
construct_2 = psv.Construct(part_list, renderer, fig=fig, ax=ax, start_position=(0,-30), additional_bounds_list=[bounds])
construct_2.rotation = 3.142 / -8
construct_2.update_bounds() # Update bounds to new orientation of construct
fig, ax, baseline_start, baseline_end, bounds = construct_2.draw()
ax.plot([baseline_start[0], baseline_end[0]], [baseline_start[1], baseline_end[1]], color=(0,0,0), linewidth=1.5, zorder=0)

fig.savefig('03_plot_constructs.pdf', transparent=True, dpi=300)
fig.savefig('03_plot_constructs.jpg', dpi=300)
plt.show()