Bioconda软件安装神器:多版本并存、环境复制、环境导出

Conda包管理系统

Conda是一种通用包管理系统,旨在构建和管理任何语言的任何类型的软件。通常与Anaconda (集成了更多软件包,https://www.anaconda.com/download/#download)和Miniconda(只包含基本功能软件包, https://conda.io/miniconda.html)一起分发。

最初接触到Anaconda是用于Python包的安装。Anaconda囊括了100多个常用的Python包,一键式安装,解决Python包安装的痛苦。但后来发现,其还有更多的功能,尤其是其增加了bioconda (https://bioconda.github.io/index.html)频道后,生物信息分析的1500多个软件都可以一键安装了,免去了编译时间浪费和解决库文件安装的问题。对于经常编译软件的人,这一点还不够有吸引力。最吸引我的是它的工作环境概念,可以简单的配置不同Python版本的环境、不同Python包的环境、不同R环境和R包的环境,对于生物信息软件繁杂的应用和频繁的更新提供了很大的便利。

Conda安装和配置

在上面给出的链接下载Anaconda或Conda对应版本的分发包之后,安装就是运行下面的命令,根据提示一步步操作,主要是修改安装路径 (如果是根用户,可以安装到/anaconda下,其它任意目录都可以,但路径短还是有好处的;普通用户安装到自己有权限的目录下)

bash Miniconda2-latest-Linux-x86_64.sh

安装完成之后,记得把安装路径下的bin文件夹加入到环境变量中。环境变量的解释和使用见 http://blog.genesino.com/2017/06/bash1/和文章“PATH和path,傻傻分不清”

Conda基本使用

在Conda安装配置好之后,就可以使用了。

conda list # 列出安装的软件包
conda search <package ambigious name> # 搜索需要安装的软件包,获取其完成名字

以搜索numpy为例:

conda search numpy  # * 表示对于版本的包已安装
Fetching package metadata ...............
numpy                        1.7.2           py27_blas_openblas_201  conda-forge     [blas_openblas]1.7.2           py27_blas_openblas_202  conda-forge     [blas_openblas]1.12.0                   py36_0  defaults1.12.0             py36_nomkl_0  defaults        [nomkl]*  1.12.1                   py27_0  defaults1.12.1             py27_nomkl_0  defaults        [nomkl]1.13.1                   py36_0  defaults1.13.1             py36_nomkl_0  defaults        [nomkl]
numpy-indexed                0.3.2                    py27_0  conda-forge1.0.47                   py35_0  conda-forge1.0.47                   py36_0  conda-forge
numpy_groupies               0.9.6                    py27_0  conda-forge0.9.6                    py35_0  conda-forge0.9.6                    py36_0  conda-forge
numpy_sugar                  1.0.6                    py27_0  conda-forge1.0.6                    py34_0  conda-forge
numpydoc                     0.6.0                    py27_0  conda-forge0.6.0                    py34_0  conda-forge
xnumpy                       0.0.1                    py27_0  conda-forge

安装包

conda install <package name> # 安装软件包
conda install numpy=1.7.2 # 安装特定版本的软件包
conda remove <package name> # 移除软件包

安装R

# 具体见下面
conda install -c r r-essentials # 安装R,及80多个常用的数据分析包, 包括idplyr, shiny, ggplot2, tidyr, caret 和 nnet
# 安装单个包
# conda install -c https://conda.binstar.org/bokeh ggplot

获取帮助信息

conda -h # 查看conda可用的命令
conda install -h #查看install子命令的帮助

只是这些命令就可以省去不少安装的麻烦了,但是如果软件没搜索到呢?

Conda的channel

Conda默认的源访问速度有些慢,可以增加国内的源 (https://mirror.tuna.tsinghua.edu.cn/help/anaconda/);另外还可以增加几个源,以便于安装更多的软件,尤其是bioconda安装生信类工具。conda-forge通道是Conda社区维护的包含很多不在默认通道里面的通用型软件。r通道是向后兼容性通道,尤其是使用R3.3.1版本时会用到。后加的通道优先级更高,因此一般用下面列出的顺序添加。

conda config --add channels conda-forge # Lowest priority
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 清华通道, 最高优先级
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
# 显示已有的通道
conda config --get channels

conda通道的配置文件一般在~/.condarc里面,内容如下。全局控制conda的安装在conda_path/.condarc,具体操作见https://conda.io/docs/user-guide/configuration/admin-multi-user-install.html。

channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/conda- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # Anocanda清华镜像- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- bioconda- defaults- r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- conda-forge

创建不同的软件运行环境

这是Conda最有特色的地方,可以通过创建不同的环境,同时运行不同软件的多个版本。

新创建的软件环境的目录为anaconda_path/envs/enrironment_name,具体见下面的3个例子。

  • 安装ete3

使用官方的推荐命令安装时出了问题,py3.5的包装到了py2.7环境下。解决办法,新建一个py2.7的环境,然后安装。

# 新建一个环境,命名为phylo,指定其内安装的python版本为2.7
conda create -n phylo python=2.7# 在phylo环境中安装 ete3
# ete3存在于2个通道中,官方推荐使用自己的通道,但没有成功
# -n 指定安装环境  -c 指定下载通道
# conda install -n phylo -c etetoolkit ete3 ete3_external_apps# bioconda通道里面也有ete3, 下面的安装未指定具体通道,将在前面设定的几个通道里面按先后顺序查找安装
conda install -n phylo ete3 ete3_external_apps# 默认安装到了anaconda_path下面的envs/phylo目录下(在屏幕输出也会有显示)
# 这个目录下存在bin文件夹,一般使用全路径就可以调用,如下
# anaconda_path/envs/phylo/bin/ete3 -h # 但有时会因为依赖关系而失败# 所以激活本次安装环境是比较不容易出问题的使用方式
source activate phylo# 在新环境里面执行命令操作
ete3 -h
# 其它操作# 退出新环境
source deactivate phylo
  • 创建R环境 Reference1

  • (https://samrelton.wordpress.com/2015/07/02/rconda/)

# Create a new conda environment called r,并且在里面安装anaconda
conda create -n r anaconda# Switch to r environment
source activate r# 在新环境里面安装R Installs R
conda install -c r r# Install R kernel for IPython notebook
conda install -c r r-irkernel# Install ggplot
conda install -c https://conda.binstar.org/bokeh ggplot# 最后退出新环境
source deactivate r
  • 创建比对工具环境 (bioconda中的例子,https://bioconda.github.io/index.html#set-up-channels)

# 环境名字为 aligners
# 环境中安装 bwa bowtie hisat star
conda create -n aligners bwa bowtie hisat star# 如果还想继续安装
conda install -n aligners hisat2# 启动新环境
source activate aligners
star -hsource deactivate aligners
  • 移除环境

如果环境不需要了,或出了错,则可以移除。比如需要移除phylo环境,执行conda remove -n phylo --all

  • 备份环境

有的时候会出现装一个新包,装着装着就把当前环境搞装崩了的情况,所以备份一个环境还是必要的,conda create -n python35copy --clone python35

  • 环境导出和导入

做培训时需要给参加培训的老师提供配置环境的脚本,之前都是提供一个Bash文件,更简单的方式是可以导出环境,自己配置时再导入就好了。

# 假设我们有一个环境叫 ehbio,可以导出为一个yml文件
conda env export --file ehbio_env.yml --name ehbio# 然后换一台电脑,就可以完全重现这个环境了
conda env create -f ehbio_env.yml

Conda配置R

在添加了不同的源之后,有些源更新快,有些更新慢,经常会碰到版本不一的问题。而且软件版本的优先级,低于源的优先级。保险期间,先做下搜索,获得合适的版本号,然后再选择安装。

conda search r-essentialsr-essentials                 1.0                    r3.2.1_0  r1.0                   r3.2.1_0a  r1.1                    r3.2.1_0  r1.1                    r3.2.2_0  r1.1                   r3.2.1_0a  r1.1                   r3.2.2_0a  r1.1                    r3.2.2_1  r1.1                   r3.2.2_1a  r1.4                           0  r1.4.1                  r3.3.1_0  r1.4.2                         0  r1.4.2                  r3.3.1_0  r1.4.3                  r3.3.1_0  r1.5.0                         0  r1.5.1                         0  r1.5.2                  r3.3.2_0  r1.5.2                  r3.4.1_0  r1.6.0                  r3.4.1_0  r1.0                    r3.2.1_0  defaults1.0                   r3.2.1_0a  defaults1.1                    r3.2.1_0  defaults1.1                    r3.2.2_0  defaults1.1                   r3.2.1_0a  defaults1.1                   r3.2.2_0a  defaults1.1                    r3.2.2_1  defaults1.1                   r3.2.2_1a  defaults1.4                           0  defaults1.4.1                  r3.3.1_0  defaults1.4.2                         0  defaults1.4.2                  r3.3.1_0  defaults1.4.3                  r3.3.1_0  defaults1.5.0                         0  defaults1.5.1                         0  defaults1.5.2                  r3.3.2_0  defaults1.5.2                  r3.4.1_0  defaults1.6.0                  r3.4.1_0  defaults1.5.2                  r3.3.2_0  conda-forge1.5.2                  r3.3.2_0  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

从上面可以看到清华的源版本同步于conda-forge, 都比较老,还是指定r通道安装。

conda install -c r -n r r-essentials=1.6.0

R会安装于conda_path/envs/r/bin中,软链到位于环境变量的目录中即可正常使用。

Conda环境简化运行

为了方便不同环境里面程序的运行,我写了一个shell脚本 (conda_env_run.sh),具体运行如下:

# -c: 表示实际需要运行的命令
# -e: 表示需要启动的软件环境,也就是上面conda create建立的环境
# -b:一般不需要指定,如果conda没在环境变量中需要给出conda的安装路径
conda_env_run.sh -c  'ete3 -h mod' -e phyloconda_env_run.sh -c  'bwa mem -h' -e aligner -b "/usr/local/anaconda2/bin"

conda_env_run.sh内容如下

#!/bin/bash#set -xusage()
{
cat <<EOF${txtcyn}***CREATED BY Chen Tong (chentong_biology@163.com)***Usage:$0 options${txtrst}${bldblu}Function${txtrst}:This is designed to run conda program in given environment. It will automatically activate the environment, run the program and deactivate the environment.Thress commands from conda, 'activate', 'conda', 'deactivate' must be in PATH or you should spcify <-b> parameter.${txtbld}OPTIONS${txtrst}:-c    Full command to be run ${bldred}[NECESSARY]${txtrst}-e    Environment name${bldred}[NECESSARY]${txtrst}-b    Conda path${bldred}[NECESSARY]${txtrst}EOF
}command_cmd=''environment=''conda_path=''while getopts "hc:e:b:" OPTIONdocase $OPTION inh)            echo "Help mesage"usage            exit 1;;c)command_cmd=$OPTARG;;e)environment=$OPTARG;;b)conda_path=$OPTARG;;?)usage            echo "Unknown parameters"exit 1;;    esacdoneif [ -z ${environment} ]; thenecho 1>&2 "Please give command and environment."usage    exit 1fiif ! [ -z ${conda_path} ]; thenexport PATH=${conda_path}:${PATH}fisource activate ${environment}${command_cmd}source deactivate ${environment}

Reference

  • https://samrelton.wordpress.com/2015/07/02/rconda/

  • https://www.anaconda.com/blog/developer-blog/anaconda-r-users-sparkr-and-rbokeh/

  • http://www.bioinfo-scrounger.com/archives/209

  • 清华大学开源镜像站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes (K8s) 底层原理

Kubernetes (K8s) 的底层原理涉及多个关键组件和概念&#xff0c;确保容器化应用程序的自动化部署、扩展和管理。以下是 Kubernetes 的底层原理及其关键组件的详细描述。 核心组件 Etcd 功能&#xff1a;分布式键值存储&#xff0c;用于存储集群的所有数据&#xff0c;包括配置…

昇思25天学习打卡营第9天|MindSpore-Vision Transformer图像分类

Vision Transformer图像分类 Vision Transformer(ViT)简介 近些年,随着基于自注意(Self-Attention)结构的模型的发展,特别是Transformer模型的提出,极大地促进了自然语言处理模型的发展。由于Transformers的计算效率和可扩展性,它已经能够训练具有超过100B参数的空前…

【C++】运算符重载

目录 运算符重载加号运算符左移运算符递增运算符赋值运算符关系运算符函数调用运算符 运算符重载 运算符重载概念&#xff1a;对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 加号运算符 目标&#xff1a;实现两个对象相加或类和…

java面试之jvm常见面试题

1、JVM是什么&#xff1f;JVM的主要组成部分&#xff1f; JVM&#xff08;Java Virtual Machine&#xff09;是Java程序的执行环境&#xff0c;它使得Java程序能够“一次编写&#xff0c;到处运行”。JVM主要由以下部分组成&#xff1a; 1、类加载器&#xff08;ClassLoader&…

MySQL篇-SQL优化实战

SQL优化措施 通过我们日常开发的经验可以整理出以下高效SQL的守则 表主键使用自增长bigint加适当的表索引&#xff0c;需要强关联字段建表时就加好索引&#xff0c;常见的有更新时间&#xff0c;单号等字段减少子查询&#xff0c;能用表关联的方式就不用子查询&#xff0c;可…

某Dota/IM的某电竞对战平台玩家助手、查看战绩、胜率等

功能说明 WAR3游戏启动后&#xff0c;可以自动获取游戏双方的玩家列表&#xff0c;然后查询显示玩家的战绩及个人信息。附带查看玩家的战绩详情、最近游戏&#xff0c;查看对手及友方的战绩详情&#xff0c;据此推算出是否开黑、是否小号等信息 使用方法及运行效果 启动 查…

腾讯地图异步调用

<template><!-- 定义地图显示容器 --><div id"container"></div> </template><script setup>import { onMounted } from vue;const mapKeys import.meta.env.VITE_GLOB_TX_MAP_KEYS;function initMap() {// //定义地图中心点坐…

【MySQL备份】mysqldump基础篇

目录 1.简介 2.基本用途 3.命令格式 3.1常用选项 3.2常用命令 4.备份脚本 5.定时执行备份脚本 1.简介 mysqldump 是 MySQL 数据库管理系统的命令行实用程序&#xff0c;用于创建数据库的逻辑备份。它能够导出数据库的结构&#xff08;如表结构、视图、触发器等&#xf…

【C++题解】1456. 淘淘捡西瓜

问题&#xff1a;1456. 淘淘捡西瓜 类型&#xff1a;贪心 题目描述&#xff1a; 地上有一排西瓜&#xff0c;每个西瓜都有自己的重量。淘淘有一个包&#xff0c;包的容量是固定的&#xff0c;淘淘希望尽可能在包里装更多的西瓜&#xff08;当然要装整个的&#xff0c;不能切开…

C#——异步Task详情

C#异步Task 异步&#xff1a;多任务开始执行&#xff0c;只需要主任务 A 执行完成就算结束&#xff0c;主任务执行的时候&#xff0c;可以同时执行异步任务 B、C&#xff0c;主任务 A 可以不需要等待异步任务 B、C 的结果。 在C#中&#xff0c;异步编程主要通过async和await关…

三维地图Cesium中,如何监听地图点击事件,实现在实体上面鼠标右击时做处理。

在 Cesium 中&#xff0c;如果你想在实体&#xff08;Entity&#xff09;上实现鼠标右击&#xff08;右键点击&#xff09;的处理&#xff0c;你需要使用 Cesium 的事件系统来监听鼠标事件&#xff0c;并结合一些逻辑来判断点击是否发生在实体上。由于 Cesium 没有直接提供“点…

03-《含羞草》

含羞草 含羞草&#xff08;学名&#xff1a;Mimosa pudica Linn. &#xff09;&#xff1a;为豆科多年生草本或亚灌木&#xff0c;由于叶子会对热和光产生反应&#xff0c;受到外力触碰会立即闭合&#xff0c;所以得名含羞草。形状似绒球。开花后结荚果&#xff0c;果实呈扁圆形…

sql获取下个月开始日期与结束日期

mysql获取下个月开始日期与结束日期 SELECTid,DATE_FORMAT(DATE_ADD(LAST_DAY(limitStartTime), INTERVAL 1 DAY), %Y-%m-01) AS limitStartTime,LAST_DAY(DATE_ADD(limitStartTime, INTERVAL 1 MONTH)) AS limitEndTime,createTime,creator FROMorder_special_drugs;这里的SQ…

学习笔记——动态路由——OSPF(工作原理)

九、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文&#xff0c;以便建立和维护邻居关系。 (2)建立邻居关系后&#xff0c;给邻居路由器发送数据库描述报文(DD)&#xff0c;也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

LabVIEW汽车ECU测试系统

开发了一个基于LabVIEW开发的汽车发动机控制单元&#xff08;ECU&#xff09;测试系统。该系统使用了NI的硬件和LabVIEW软件&#xff0c;能够自动执行ECU的功能测试和性能测试&#xff0c;确保其在不同工作条件下的可靠性和功能性。通过自动化测试系统&#xff0c;大大提高了测…

使用 Rustup 管理 Rust 版本

文章目录 安装 Rustup配置镜像源安装 Rustup 安装 RustVS Code插件创建项目代码示例 Rust 官网&#xff1a;https://www.rust-lang.org/zh-CN/Crates 包管理&#xff1a;https://crates.io/Rust 程序设计语言&#xff1a;https://kaisery.github.io/trpl-zh-cn/通过例子学 Rust…

Jdk17是否有可能代替 Jdk8

JDK发展历史和开源 2006年SUN公司开源JDK&#xff0c;成立OpenJDK组织。2009年Oracle收购SUN&#xff0c;加快JDK发布周期。Oracle JDK与OpenJDK功能基本一致&#xff0c;但Oracle JDK提供更长时间的更新支持。 JDK版本特性 JDK11是长期支持版本&#xff08;LTS&#xff09;…

DevOps认证是什么?DevOps工具介绍

DevOps 这个词是由Development&#xff08;开发&#xff09; 和 Operations&#xff08;运维&#xff09;组合起来的&#xff0c;你可以把它理解成为一种让开发团队和运维团队紧密合作的方法。 DevOps从2009年诞生到现在已经14年多了&#xff0c;一开始大家还在摸索&#xff0…

因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的 解决方法

目录 1. 问题所示2. 解决方法3. 解决方法1. 问题所示 输入共享文件地址的时候,出现如下信息: 因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的,可能会是你的系统遭受攻击。你的系统需要SMB2或更高版本截图如下所示: 2. 解决…

mongodb中常用的运算符和正则表达式

在mongodb中不能><&#xff0c;>&#xff0c;<&#xff0c;!等运算符&#xff0c;需要使用替代符号 1.前言&#xff1a; >----$gt <----$lt >----$gte < ----$lte !----$ne 例如&#xff1a;查询id比三大的所有记录 db.students.find({id:{$gt:3}});…