生信分析环境搭建–conda+jupyter

生信分析环境搭建–conda+jupyter

前段时间在学习基于python的生物信息数据处理,把自己的很多流程从R转到python了,做了一些笔记,慢慢整理发出来,记录一下自己学习的过程,供后续自己参考。

推荐使用jupyter notebook作为python解释器,本文以此为例进行环境搭建。

安装并配置conda

使用conda配置环境有诸多好处,本文不再讨论。具体的安装和配置方法之前已经讨论过,请参考下文:

生信分析环境配置:conda

conda的基础使用方法

安装jupyter notebook

通常来说,安装 Jupyter Notebook 可以在 Conda 的 base 环境中进行,也可以选择在一个专门的环境中安装。这里有几点考虑:

  1. 在 base 环境中安装

    • 优点:你只需要安装一次 Jupyter Notebook,所有的 Conda 环境都可以通过安装 ipykernel​ 来添加到 Jupyter 中作为内核。
    • 缺点:如果你的 base 环境因为某些原因出现问题,可能会影响到你使用 Jupyter Notebook 的能力。
  2. 在一个独立的环境中安装

    • 优点:这样可以保持你的 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官网指南安装

# 新建一个新的名为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

示例配置

在配置文件中,你可以根据需要修改或添加配置选项。下面是一些示例配置:

  1. 设置工作目录

    # 推荐必须配置此项
    c.NotebookApp.notebook_dir = '/path/to/your/workdir'
    
  2. 禁止自动打开浏览器

    c.NotebookApp.open_browser = False
    
  3. 允许远程访问

    默认情况下,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  # 可以改为其他端口
    
  4. 设置访问密码
    在终端生成密码:

    jupyter notebook password
    

    然后在配置文件中启用密码(通常不需要手动设置,因为设置密码时自动完成)。

  5. 预加载库
    在配置文件中,你可以添加一个启动脚本来预加载几乎每次都用到的库:

    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。

image

启动之后,你也可以在右上角随时修改当前使用的内核。

按照上述步骤,你就可以在 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

扩展阅读

  1. Jupyter Notebook介绍、安装及使用教程
  2. scanpy官方文档
  3. python单细胞生态工具scverse

本文介绍了如何使用conda和jupyter notebook搭建生信分析环境,包括安装配置conda、jupyter notebook、scanpy等工具,并演示了在jupyter notebook中调用不同环境的方法。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容