我想用IPython笔记本电脑来交互式分析我用Biopython的基因组图模块制作的一些基因组图。虽然有大量关于如何使用matplotlib在IPython笔记本中获得内联图形的文档,但GenomeDiagram使用ReportLab工具包,我认为IPython不支持该工具包。
然而,我在想,一种解决这个问题的方法是将绘图/基因组图写入一个文件,然后内联打开图像,结果会是这样的:
gd_diagram.write("test.png", "PNG")
display(file="test.png")
然而,我不知道如何做到这一点,也不知道这是否可行。那么有人知道IPython中是否可以打开/显示图像吗?
当与Jupyter (iPython)一起使用GenomeDiagram时,显示图像的最简单方法是将GenomeDiagram转换为PNG图像。可以使用IPython.display.Image对象来包装它,使其显示在笔记本中。
from Bio.Graphics import GenomeDiagram
from Bio.SeqFeature import SeqFeature, FeatureLocation
from IPython.display import display, Image
gd_diagram = GenomeDiagram.Diagram("Test diagram")
gd_track_for_features = gd_diagram.new_track(1, name="Annotated Features")
gd_feature_set = gd_track_for_features.new_set()
gd_feature_set.add_feature(SeqFeature(FeatureLocation(25, 75), strand=+1))
gd_diagram.draw(format="linear", orientation="landscape", pagesize='A4',
fragments=1, start=0, end=100)
Image(gd_diagram.write_to_string("PNG"))
(见笔记本)
如果您希望将映像从本地主机嵌入到ipython笔记本中,您可以执行以下操作:
首先:找到当前本地路径:
# show current directory
import os
cwd = os.getcwd()
cwd
例如,结果将是:
'C:\\Users\\lenovo\\Tutorials'
接下来,像下面这样嵌入你的图像:
from IPython.display import display
from PIL import Image
path="C:\\Users\\lenovo\\Tutorials\\Data_Science\\DS images\\your_image.jpeg"
display(Image.open(path))
确保您在jpg、jpeg或png中选择了正确的图像类型。
这是使用opencv-python的解决方案,但它打开的新窗口在等待中很忙
import cv2 # pip install opencv-python
image = cv2.imread("foo.png")
cv2.imshow('test',image)
cv2.waitKey(duration) # in milliseconds; duration=0 means waiting forever
cv2.destroyAllWindows()
如果您不想在另一个窗口中显示图像,请使用matplotlib或其他工具来代替cv2.imshow()
import cv2
import matplotlib.pyplot as plt
image = cv2.imread("foo.png")
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()