生信分析环境搭建–conda+jupyter
前段时间在学习基于python的生物信息数据处理,把自己的很多流程从R转到python了,做了一些笔记,慢慢整理发出来,记录一下自己学习的过程,供后续自己参考。
推荐使用jupyter notebook作为python解释器,本文以此为例进行环境搭建。
安装并配置conda
使用conda配置环境有诸多好处,本文不再讨论。具体的安装和配置方法之前已经讨论过,请参考下文:
安装jupyter notebook
通常来说,安装 Jupyter Notebook 可以在 Conda 的 base 环境中进行,也可以选择在一个专门的环境中安装。这里有几点考虑:
-
在 base 环境中安装:
- 优点:你只需要安装一次 Jupyter Notebook,所有的 Conda 环境都可以通过安装
ipykernel
来添加到 Jupyter 中作为内核。 - 缺点:如果你的 base 环境因为某些原因出现问题,可能会影响到你使用 Jupyter Notebook 的能力。
- 优点:你只需要安装一次 Jupyter Notebook,所有的 Conda 环境都可以通过安装
-
在一个独立的环境中安装:
- 优点:这样可以保持你的 base 环境干净且轻量,尤其是当你的 base 环境出现问题时,你仍然可以使用 Jupyter Notebook。
- 缺点:需要在这个环境中额外管理 Jupyter Notebook 的依赖,例如当你想升级 Jupyter 时,需要确保在这个环境进行操作。
建议
如果你计划频繁使用 Jupyter Notebook,并希望避免可能的环境冲突,可以考虑在一个单独的环境中安装 Jupyter Notebook。这样做有助于隔离环境,使得环境管理更加简单清晰。
如果你选择在 base 环境中安装,那么每次使用 Jupyter 时,只需激活 base 环境并启动 Jupyter Notebook。然后,你可以通过为其他环境安装 ipykernel
来在 Jupyter 中切换不同的 Python 环境。
选择哪种方式取决于你的个人需求和你对 Conda 环境管理的熟悉程度。如果你对 Conda 比较新手,建议先在 base 环境中进行尝试,因为操作相对简单直接。
下文将在独立环境中安装jupyter notebook,以确保不影响base环境。
# 创建notebook环境
conda create -n notebook
# 激活notebook环境
conda activate notebook
# 安装jupyter
#(实际上这里安装的是完整的jupyter,而不单是是notebook,以防我后续有用不用再折腾)
conda install jupyter
# 如果只需要安装notebook使用以下命令
# conda install notebook
安装scanpy
# 新建一个新的名为scanpy的conda环境
conda create -n scanpy
# 安装scanpy(我这里使用mamba代替conda,安装速度会更快)
mamba install -n scanpy -c conda-forge scanpy python-igraph leidenalg
# 检查scanpy环境
conda activate scanpy
conda list
如果需要安装其他环境,比如scvelo,可以使用上述相同的方法进行安装。
在jupyter notebook中调用不同的环境
注册内核:在每个环境中安装 ipykernel
,这里还是以scanpy环境为例
为了使每个环境都能作为 Jupyter Notebook 的内核,你需要在每个环境中安装 ipykernel
。首先激活环境,然后安装 ipykernel
:
conda activate scanpy
conda install ipykernel
python -m ipykernel install --user --name scanpy --display-name "scanpy"
这里--user
不需要修改,其指示 Python 将 IPython 内核安装到当前用户的用户目录下,而不是系统级别的目录。这样做的目的是让安装仅对当前用户有效,不需要管理员权限就可以进行安装操作。--name
参数是内核的标识,--display-name
是在 Jupyter 中显示的名称。
重复这个过程为其他环境安装 ipykernel
。
扩展:
实际上jupyter中也是可以使用R的,只需要在你安装R的conda环境下安装
IRkernel
并注册到jupyter。操作方法示例:
conda create -n seurat5 -c r r-base r-essentials r-tidyverse r-seurat=5.0.3
conda activate seurat5
R
install.packages('IRkernel')
IRkernel::installspec(name = 'seurat5', displayname = 'R (seurat5)')
如果R中注册内核失败,可能是因为我们的jupyter不是安装在base环境的,推荐在~/.local/share/jupyter/kernels
目录自己写一个内核文件,略。
启动 Jupyter Notebook
初次启动
安装完成后,你可以在任何一个环境中启动 Jupyter Notebook(本教程中我在notebook环境中启动),只需要运行:
conda activate notebook
jupyter notebook
启动之后请看启动日志中的log,里面还有jupyter当前的运行地址。
为了后续使用方便,我们这里将对配置文件进行一定的修改。
在终端中设置 Jupyter Notebook 的配置通常涉及到两个步骤:生成配置文件和编辑该文件。下面是具体的步骤:
生成配置文件
如果你还没有 jupyter_lab_config.py
文件,你需要首先生成它。在你的终端或命令行界面中,执行以下命令:
jupyter lab --generate-config
这个命令会在你的 Jupyter 配置目录中创建一个名为 jupyter_notebook_config.py
的文件。通常,这个目录位于用户的家目录下的 .jupyter
文件夹中。
编辑配置文件
生成配置文件后,你需要使用文本编辑器来编辑这个文件。你可以使用任何文本编辑器,如 Vim、Nano 或 VSCode。我习惯使用vim:
vim ~/.jupyter/jupyter_lab_config.py
示例配置
在配置文件中,你可以根据需要修改或添加配置选项。下面是一些示例配置:
-
设置工作目录:
# 推荐必须配置此项 c.NotebookApp.notebook_dir = '/path/to/your/workdir'
-
禁止自动打开浏览器:
c.NotebookApp.open_browser = False
-
允许远程访问
默认情况下,Jupyter Notebook 服务器只绑定到本地机器上的 127.0.0.1 (localhost)地址,这意味着它只能从运行服务器的机器上访问。为了在局域网中访问,你需要让它绑定到机器的外部 IP 地址或者 0.0.0.0(表示接受来自任何 IP 地址的连接)。
若要在局域网中访问 Jupyter Notebook,你需要进行一些额外的配置以确保 Jupyter Notebook 服务器对网络上的其他设备可见。
c.ServerApp.ip = '0.0.0.0' # 或者你机器的具体局域网IP
确保端口是开放的
Jupyter Notebook 默认运行在端口 8888。如果开启了防火墙,请自行放行端口。
如果需要,你可以更改监听端口:
c.NotebookApp.port = 8888 # 可以改为其他端口
-
设置访问密码:
在终端生成密码:jupyter notebook password
然后在配置文件中启用密码(通常不需要手动设置,因为设置密码时自动完成)。
-
预加载库:
在配置文件中,你可以添加一个启动脚本来预加载几乎每次都用到的库:c.InteractiveShellApp.exec_lines = [ 'import numpy as np', 'import pandas as pd' ]
确保在编辑配置文件时取消注释(去掉 #
)对应的配置行,并将路径或值替换为适合你的环境的实际值。编辑完毕后,保存并关闭文件。重新启动 Jupyter Notebook 以应用这些更改。
再次启动 Jupyter Notebook
配置完毕后,重新启动 Jupyter Notebook 以应用这些更改。使用下面的命令启动:
jupyter notebook
#或者 jupyter lab
从其他设备访问
在其他设备上,你可以通过浏览器输入启动 Jupyter 服务的机器的 IP 地址和端口号来访问,格式如下:
http://[服务器IP地址]:8888
例如,如果你的服务器 IP 地址是 192.168.1.5
,则访问 URL 会是:
http://192.168.1.5:8888
你将需要输入之前设置的密码或 token 来登录。
通过这些步骤,你应该能够在局域网内成功访问 Jupyter Notebook。如果遇到任何问题,比如连接被拒绝或页面无法加载,请检查防火墙设置和 IP 地址是否正确配置。
在 Jupyter 中切换内核
启动 Jupyter Notebook 后,在指定目录新建一个notebook,你会看到所有已安装的内核选项,包括之前为各个 Conda 环境设置的内核scanpy。
启动之后,你也可以在右上角随时修改当前使用的内核。
按照上述步骤,你就可以在 Jupyter Notebook 中使用多个 Conda 环境了。每个环境可以独立安装不同的库,而不会相互干扰,非常适合进行不同的项目或实验。
远程访问
按照上述方法启动jupyter时,只能在本机或者局域网内访问jupyter,但是如果我希望在任意有网的地方都能访问我家里服务器的jupyter服务,可以通过内网穿透或者端口转发实现。内网穿透的方法有很多,常用的包括frp
,以及cloudflare tunnel
,我个人认为后者比较方便,免费快捷,且不需要有公网ip。
需要注意的是,要想远程访问jupyter的话需要在运行命令中加入 --ip=0.0.0.0
。
jupyter lab --ip=0.0.0.0 --no-browser
扩展阅读
本文介绍了如何使用conda和jupyter notebook搭建生信分析环境,包括安装配置conda、jupyter notebook、scanpy等工具,并演示了在jupyter notebook中调用不同环境的方法。
暂无评论内容