Basic Example
In [1]:
Copied!
# %pip install pygenomeviz
# %pip install pygenomeviz
1. Single Track¶
1-1. Example 1¶
In [2]:
Copied!
from pygenomeviz import GenomeViz
name, genome_size = "Tutorial 01", 5000
cds_list = ((100, 900, -1), (1100, 1300, 1), (1350, 1500, 1), (1520, 1700, 1), (1900, 2200, -1), (2500, 2700, 1), (2700, 2800, -1), (2850, 3000, -1), (3100, 3500, 1), (3600, 3800, -1), (3900, 4200, -1), (4300, 4700, -1), (4800, 4850, 1))
gv = GenomeViz()
track = gv.add_feature_track(name, genome_size)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"CDS{idx:02d}")
fig = gv.plotfig()
from pygenomeviz import GenomeViz
name, genome_size = "Tutorial 01", 5000
cds_list = ((100, 900, -1), (1100, 1300, 1), (1350, 1500, 1), (1520, 1700, 1), (1900, 2200, -1), (2500, 2700, 1), (2700, 2800, -1), (2850, 3000, -1), (3100, 3500, 1), (3600, 3800, -1), (3900, 4200, -1), (4300, 4700, -1), (4800, 4850, 1))
gv = GenomeViz()
track = gv.add_feature_track(name, genome_size)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"CDS{idx:02d}")
fig = gv.plotfig()
1-2. Example 2¶
In [3]:
Copied!
from pygenomeviz import GenomeViz
import random
random.seed(5)
name, genome_size = "Tutorial 02", 5000
cds_list = ((100, 900, -1), (1100, 1300, 1), (1350, 1500, 1), (1520, 1700, 1), (1900, 2200, -1), (2500, 2700, 1), (2700, 2800, -1), (2850, 3000, -1), (3100, 3500, 1), (3600, 3800, -1), (3900, 4200, -1), (4300, 4700, -1), (4800, 4850, 1))
gv = GenomeViz(tick_style="axis")
track = gv.add_feature_track(name, genome_size)
plotstyles = ("bigarrow", "arrow", "bigbox", "box", "bigrbox", "rbox")
colors = ("orange", "blue", "lime", "red")
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
# Random choice 'plotstyle' & 'color'
plotstyle, color = random.choice(plotstyles), random.choice(colors)
# User can setting various parameters of features to be plotted
track.add_feature(start, end, strand, label=plotstyle, labelsize=20, facecolor=color, plotstyle=plotstyle, labelvpos="top", labelhpos="center", labelrotation=60, linewidth=1)
fig = gv.plotfig()
from pygenomeviz import GenomeViz
import random
random.seed(5)
name, genome_size = "Tutorial 02", 5000
cds_list = ((100, 900, -1), (1100, 1300, 1), (1350, 1500, 1), (1520, 1700, 1), (1900, 2200, -1), (2500, 2700, 1), (2700, 2800, -1), (2850, 3000, -1), (3100, 3500, 1), (3600, 3800, -1), (3900, 4200, -1), (4300, 4700, -1), (4800, 4850, 1))
gv = GenomeViz(tick_style="axis")
track = gv.add_feature_track(name, genome_size)
plotstyles = ("bigarrow", "arrow", "bigbox", "box", "bigrbox", "rbox")
colors = ("orange", "blue", "lime", "red")
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
# Random choice 'plotstyle' & 'color'
plotstyle, color = random.choice(plotstyles), random.choice(colors)
# User can setting various parameters of features to be plotted
track.add_feature(start, end, strand, label=plotstyle, labelsize=20, facecolor=color, plotstyle=plotstyle, labelvpos="top", labelhpos="center", labelrotation=60, linewidth=1)
fig = gv.plotfig()
2. Multiple Tracks & Links¶
2-1. Example 1¶
In [4]:
Copied!
from pygenomeviz import GenomeViz
genome_list = (
{"name": "genome 01", "size": 1000, "cds_list": ((150, 300, 1), (500, 700, -1), (750, 950, 1))},
{"name": "genome 02", "size": 1300, "cds_list": ((50, 200, 1), (350, 450, 1), (700, 900, -1), (950, 1150, -1))},
{"name": "genome 03", "size": 1200, "cds_list": ((150, 300, 1), (350, 450, -1), (500, 700, -1), (701, 900, -1))},
)
gv = GenomeViz(tick_style="axis")
for genome in genome_list:
name, size, cds_list = genome["name"], genome["size"], genome["cds_list"]
track = gv.add_feature_track(name, size)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"gene{idx:02d}", linewidth=1, labelrotation=0, labelvpos="top", labelhpos="center", labelha="center")
# Add links between "genome 01" and "genome 02"
gv.add_link(("genome 01", 150, 300), ("genome 02", 50, 200))
gv.add_link(("genome 01", 700, 500), ("genome 02", 900, 700))
gv.add_link(("genome 01", 750, 950), ("genome 02", 1150, 950))
# Add links between "genome 02" and "genome 03"
gv.add_link(("genome 02", 50, 200), ("genome 03", 150, 300), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 02", 350, 450), ("genome 03", 450, 350), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 02", 900, 700), ("genome 03", 700, 500), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 03", 900, 701), ("genome 02", 1150, 950), normal_color="skyblue", inverted_color="lime", curve=True)
fig = gv.plotfig()
from pygenomeviz import GenomeViz
genome_list = (
{"name": "genome 01", "size": 1000, "cds_list": ((150, 300, 1), (500, 700, -1), (750, 950, 1))},
{"name": "genome 02", "size": 1300, "cds_list": ((50, 200, 1), (350, 450, 1), (700, 900, -1), (950, 1150, -1))},
{"name": "genome 03", "size": 1200, "cds_list": ((150, 300, 1), (350, 450, -1), (500, 700, -1), (701, 900, -1))},
)
gv = GenomeViz(tick_style="axis")
for genome in genome_list:
name, size, cds_list = genome["name"], genome["size"], genome["cds_list"]
track = gv.add_feature_track(name, size)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"gene{idx:02d}", linewidth=1, labelrotation=0, labelvpos="top", labelhpos="center", labelha="center")
# Add links between "genome 01" and "genome 02"
gv.add_link(("genome 01", 150, 300), ("genome 02", 50, 200))
gv.add_link(("genome 01", 700, 500), ("genome 02", 900, 700))
gv.add_link(("genome 01", 750, 950), ("genome 02", 1150, 950))
# Add links between "genome 02" and "genome 03"
gv.add_link(("genome 02", 50, 200), ("genome 03", 150, 300), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 02", 350, 450), ("genome 03", 450, 350), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 02", 900, 700), ("genome 03", 700, 500), normal_color="skyblue", inverted_color="lime", curve=True)
gv.add_link(("genome 03", 900, 701), ("genome 02", 1150, 950), normal_color="skyblue", inverted_color="lime", curve=True)
fig = gv.plotfig()
2-2. Example 2¶
In [5]:
Copied!
from pygenomeviz import GenomeViz
genome_list = (
{"name": "genome 01", "size": 1000, "cds_list": ((150, 300, 1), (500, 700, -1), (750, 950, 1))},
{"name": "genome 02", "size": 1300, "cds_list": ((50, 200, 1), (350, 450, 1), (700, 900, -1), (950, 1150, -1))},
{"name": "genome 03", "size": 1200, "cds_list": ((150, 300, 1), (350, 450, -1), (500, 700, -1), (701, 900, -1))},
)
gv = GenomeViz(
fig_track_height=0.7,
feature_track_ratio=0.5,
link_track_ratio=1.0,
tick_track_ratio=0.5,
tick_style="bar",
align_type="center",
)
for genome in genome_list:
name, size, cds_list = genome["name"], genome["size"], genome["cds_list"]
track = gv.add_feature_track(name, size, labelmargin=0.03, linecolor="grey", linewidth=3)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"gene{idx:02d}", labelcolor="white", facecolor="blue", linewidth=1, labelrotation=0, labelvpos="center", labelhpos="center", labelha="center", arrow_shaft_ratio=1.0)
# Add links (link colors are interpolated by identity)
links = [
# Links between "genome 01" and "genome 02"
{"link1": ("genome 01", 150, 300), "link2": ("genome 02", 50, 200), "identity": 95},
{"link1": ("genome 01", 700, 500), "link2": ("genome 02", 900, 700), "identity": 60},
{"link1": ("genome 01", 750, 950), "link2": ("genome 02", 1150, 950), "identity": 70},
# Links between "genome 02" and "genome 03"
{"link1": ("genome 02", 50, 200), "link2": ("genome 03", 150, 300), "identity": 85},
{"link1": ("genome 02", 350, 450), "link2": ("genome 03", 450, 350), "identity": 40},
{"link1": ("genome 02", 900, 700), "link2": ("genome 03", 700, 500), "identity": 50},
{"link1": ("genome 03", 900, 701), "link2": ("genome 02", 1150, 950), "identity": 60},
]
min_identity = min([link["identity"] for link in links])
for link in links:
link1, link2, identity = link["link1"], link["link2"], link["identity"]
gv.add_link(link1, link2, v=identity, vmin=min_identity, curve=True)
fig = gv.plotfig()
gv.set_colorbar(fig, vmin=min_identity, bar_height=0.4)
from pygenomeviz import GenomeViz
genome_list = (
{"name": "genome 01", "size": 1000, "cds_list": ((150, 300, 1), (500, 700, -1), (750, 950, 1))},
{"name": "genome 02", "size": 1300, "cds_list": ((50, 200, 1), (350, 450, 1), (700, 900, -1), (950, 1150, -1))},
{"name": "genome 03", "size": 1200, "cds_list": ((150, 300, 1), (350, 450, -1), (500, 700, -1), (701, 900, -1))},
)
gv = GenomeViz(
fig_track_height=0.7,
feature_track_ratio=0.5,
link_track_ratio=1.0,
tick_track_ratio=0.5,
tick_style="bar",
align_type="center",
)
for genome in genome_list:
name, size, cds_list = genome["name"], genome["size"], genome["cds_list"]
track = gv.add_feature_track(name, size, labelmargin=0.03, linecolor="grey", linewidth=3)
for idx, cds in enumerate(cds_list, 1):
start, end, strand = cds
track.add_feature(start, end, strand, label=f"gene{idx:02d}", labelcolor="white", facecolor="blue", linewidth=1, labelrotation=0, labelvpos="center", labelhpos="center", labelha="center", arrow_shaft_ratio=1.0)
# Add links (link colors are interpolated by identity)
links = [
# Links between "genome 01" and "genome 02"
{"link1": ("genome 01", 150, 300), "link2": ("genome 02", 50, 200), "identity": 95},
{"link1": ("genome 01", 700, 500), "link2": ("genome 02", 900, 700), "identity": 60},
{"link1": ("genome 01", 750, 950), "link2": ("genome 02", 1150, 950), "identity": 70},
# Links between "genome 02" and "genome 03"
{"link1": ("genome 02", 50, 200), "link2": ("genome 03", 150, 300), "identity": 85},
{"link1": ("genome 02", 350, 450), "link2": ("genome 03", 450, 350), "identity": 40},
{"link1": ("genome 02", 900, 700), "link2": ("genome 03", 700, 500), "identity": 50},
{"link1": ("genome 03", 900, 701), "link2": ("genome 02", 1150, 950), "identity": 60},
]
min_identity = min([link["identity"] for link in links])
for link in links:
link1, link2, identity = link["link1"], link["link2"], link["identity"]
gv.add_link(link1, link2, v=identity, vmin=min_identity, curve=True)
fig = gv.plotfig()
gv.set_colorbar(fig, vmin=min_identity, bar_height=0.4)