conda軟件是生信軟件部署重要工具。大部分的生信工具可以通過(guò)conda安裝,熟練使用conda也是生信學(xué)習(xí)的必備技能。
本文旨在記錄我常用的命令,肯定記錄的不全。而且有的內(nèi)容介紹對(duì)于新手不是很友好,如果看不懂,也別為難自己了。
本文獲?。嚎聪挛液?jiǎn)書的簡(jiǎn)介,關(guān)注后后臺(tái)回復(fù)
conda筆記即可獲取本文的pdf版本。
老規(guī)矩,免費(fèi)獲取只有7天期限。
conda安裝
- linux版本安裝
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
bash Anaconda3-2021.11-Linux-x86_64.sh
#安裝路徑也選擇默認(rèn),兩次詢問(wèn)都選擇yes。中間的查看信息可按q跳過(guò)。
最后一次詢問(wèn)是選擇是否執(zhí)行conda init ,默認(rèn)(也就是不輸入yes直接回車)是不執(zhí)行。如果選擇不執(zhí)行,那么后面還要手動(dòng)添加conda環(huán)境變量
echo "export PATH=~/anaconda3/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
如果選擇執(zhí)行(yes),會(huì)將在.bashrc添加類似如下。
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/your/home/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/your/home/anaconda3/etc/profile.d/conda.sh" ]; then
. "/your/home/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/your/home/anaconda3/bin:$PATH" #添加環(huán)境變量
fi
fi
unset __conda_setup
# <<< conda initialize <<<
上面內(nèi)容我基本看不懂,但是體會(huì)到的用途:conda添加到環(huán)境變量;每次登錄服務(wù)器會(huì)自動(dòng)進(jìn)入base環(huán)境。
conda 配置
conda配置文件~/.condarc 。conda配置文件主要是添加源(或通道)。
常用通道bioconda 和 conda-forge
添加國(guó)內(nèi)conda源
conda源介紹與添加
- 清華源
添加源(我不太習(xí)慣官網(wǎng)的寫法,還是按自己的添加)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/simpleitk
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch-lts
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2s
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/bioconda
conda clean -i
- 北外源
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/simpleitk
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch-lts
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/menpo
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2s
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda
conda clean -i
- 其他源
另外還有中科大源。其中*為你需要添加的conda源
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/*
conda源添加技巧
1)conda通道優(yōu)先級(jí)
conda通道具有優(yōu)先級(jí),最后添加的通道或者位于.condarc 文件最上方通道優(yōu)先級(jí)是最高的。這里說(shuō)的“最后添加的通道”是指通過(guò)conda config --add channels 命令添加通道。
2)添加官網(wǎng)給出的示例源之外的源
我們從https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 看到的源只是清華源的一部分,這里我稱之為“示例源”。
有點(diǎn)觀察力和好奇心的人,可能會(huì)注意到conda源的寫法,很相似,唯一不同的是最后的部分。那么,以清華源為例,共同的部分http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/ 復(fù)制到地址欄是什么界面呢?如果你還沒看過(guò),現(xiàn)在就看一眼。該頁(yè)面下的文件夾名稱即為通道名稱,如果你要添加這里面的源,例如 qiime2 ,就可以在共同地址部分后面添加qiime2 即為qiime2 的清華源通道(全寫:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/qiime2/)?;蛘哂覔?code>https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/ 下的qiime2 文件夾,復(fù)制鏈接地址,也可得到了清華源的qiime2通道,然后將其添加進(jìn).condarc 即可。
注意:conda源并不是越多越好,過(guò)多的源會(huì)減慢你的軟件安裝速度。
其它修改
1)添加其它非必需內(nèi)容
conda config --set show_channel_urls yes
conda config --set auto_activate_base true
2)有時(shí)正常添加conda源后,會(huì)有網(wǎng)絡(luò)原因的一些報(bào)錯(cuò),可以打開.condarc 嘗試按以下方法解決:
(1)刪除默認(rèn)通道
執(zhí)行完添加通道命令后,默認(rèn)通道- defaults 會(huì)自動(dòng)添加到配置文件,嘗試刪除該行即可。
(2) 修改協(xié)議
將https 改為http 。對(duì)于網(wǎng)絡(luò)協(xié)議,我不懂,有無(wú)隱患也暫時(shí)不知。
如果你始終因網(wǎng)絡(luò)問(wèn)題無(wú)法正常安裝,還要考慮可能是網(wǎng)絡(luò)問(wèn)題。如果記不住ip addr show 或者ifconfig ,可以嘗試ping www.baidu.com ,網(wǎng)絡(luò)正常的話類似如下顯示。其中IP 代替了具體的ip地址
PING www.a.shifen.com (IP) 56(84) bytes of data.
64 bytes from IP (IP): icmp_seq=1 ttl=128 time=36.6 ms
64 bytes from IP(IP): icmp_seq=2 ttl=128 time=36.4 ms
64 bytes from IP (IP): icmp_seq=3 ttl=128 time=36.4 ms
^C #這里是我執(zhí)行了ctrl+c
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 36.448/36.544/36.696/0.245 ms
查看已配置的conda源
以下命令選其一即可。但是一般我選擇最后一種,前幾種命令太長(zhǎng),要么一時(shí)想不起來(lái),要么懶得敲命令。
conda config --get channels #此命令會(huì)明確標(biāo)出通道優(yōu)先級(jí),與你.condarc文件上下順序相反
conda config --show channels
conda config --show-sources
cat ~/.condarc
刪除源
conda config --remove channels
conda config --remove-key channels #換回默認(rèn)源
這個(gè)操作我一般是不用的,即使源出了問(wèn)題(清華源堵塞崩潰我已見怪不怪了),我會(huì)直接刪除.condarc 文件重新配置。
如果只是刪除某個(gè)具體的通道,可以vim打開.condarc 文件直接刪除。
我的.condarc 文件內(nèi)容(清華源)
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
auto_activate_base: true
環(huán)境激活與退出
對(duì)于我來(lái)說(shuō),激活與退出環(huán)境,命令過(guò)長(zhǎng),靠手指肌肉記憶很容易出錯(cuò),我一般是使用別名。將下面內(nèi)容放入到.bashrc 并source ~/.bashrc
alias condact='conda activate'
alias deconda='conda deactivate'
激活環(huán)境,選其一即可
conda activate #進(jìn)入base環(huán)境
conda activate env_name #進(jìn)入env_name環(huán)境
condact #進(jìn)入base環(huán)境
condact env_name #進(jìn)入env_name環(huán)境
source activate env_name
source ~/your_env/bin/activate #我conda-pack 進(jìn)行環(huán)境遷移后激活your_env
退出環(huán)境,選其一即可
conda deactivate
deconda
conda環(huán)境創(chuàng)建與刪除
環(huán)境創(chuàng)建
conda create -n env_name
該環(huán)境位置~/anaconda3/envs/env_name/
環(huán)境刪除,選其一即可
conda remove -n env_name --all
conda env remove --name env_name
查看當(dāng)前conda環(huán)境,選其一即可
conda env list
conda info -e
conda info --envs
環(huán)境克隆之類的命令,我暫時(shí)沒用過(guò),目前也覺得沒有太大必要。有需要的請(qǐng)移步其它教程。
軟件安裝、更新、刪除、搜索與查看
mamba是conda的提速器 ,手動(dòng)安裝或者conda安裝均可。
- 軟件安裝
conda/mamba install fastqc
conda/mamba install -y fastqc
conda/mamba install -y fastqc=0.11.9
conda/mamba install -c bioconda -c conda-forge -y fastqc=0.11.9
也可以在創(chuàng)建環(huán)境時(shí)安裝軟件
conda create -n env_name fastqc=0.11.9 -y
conda也可以本地安裝一些軟件,但是我用不到,也沒用過(guò),不做介紹,有需要自行查閱教程。
- 軟件更新與刪除
軟件更新與刪除我一般不使用,因?yàn)橐恍┥跑浖?huì)指定某一些特定版本的依賴軟件,隨意更新可能會(huì)破壞依賴。另外conda clean 也可以完成軟件刪除操作,不過(guò)我沒試過(guò),如有需要自行查閱資料。
- 軟件搜索
conda安裝的軟件名稱,并不一定是官網(wǎng)給出的軟件名稱,對(duì)于不熟悉的軟件會(huì)用到搜索命令。conda軟件名稱常常是:
軟件名稱全部為小寫;
R包開頭為r-
Perl模塊開頭為perl ,全部小寫,中間的:: 以- 代替。
常用的搜索命令
conda/mamba search fastqc
conda/mamba search fast* #搜索以fast開頭的軟件,結(jié)果不止是fastqc。
mamba repoquery search fastqc #據(jù)說(shuō)這個(gè)命令更快,但是我沒有體會(huì)到。
- 搜索的終極大招
搜索安裝命令的終極大招https://anaconda.org/ ,在https://anaconda.org/ 界面下的搜索框中搜索即可。搜索perl模塊時(shí)注意將:: 改為- ,否則搜索不到。
- 軟件查看
軟件安裝過(guò)多,可能不易查到需要的信息??梢允褂霉艿婪?code>grep 搜索。
conda list
conda list | grep ‘fastqc’
環(huán)境遷移
環(huán)境遷移,這里我只介紹conda-pack和yml文件兩種方法,其它方法我沒用過(guò),看上去有些麻煩,請(qǐng)自行查閱資料學(xué)習(xí)。
conda-pack完成環(huán)境遷移
這個(gè)方法我之前的“小白踩坑日記”記錄過(guò)。
$ conda activate your_env_name #進(jìn)入環(huán)境
$ conda install conda-pack -y #安裝打包環(huán)境用的軟件
$ conda pack -n your_env_name -o ~/file.tar.gz #打包環(huán)境為一個(gè)壓縮文件。
#將壓縮包file.tar.gz傳輸?shù)叫碌姆?wù)器上。
zheng 21:50:57 ~
$ mkdir test_env && cd test_env #新建一個(gè)文件夾test_env,將file.tar.gz上傳到該位置。
zheng 21:51:11 ~/test_env
$ tar -zxvf file.tar.gz
$ source ./bin/activate #激活環(huán)境 。不能用conda activate激活了。
(test_env) zheng 21:58:03 ~/test_env #注意觀察,此時(shí)的環(huán)境名稱為剛新建的文件夾test_env
$ conda-unpack #注意觀察,會(huì)有一個(gè)小小時(shí)間的等待??梢詔ime conda-unpack看一下。
$ Trinity #測(cè)試你打包的環(huán)境中軟件能否調(diào)用
$ source deactivate #conda deactivate 是無(wú)法退出的。
這里需要注意的是最后環(huán)境的激活方式,是用source完成的。
遷移后環(huán)境名稱為剛新建的文件夾test_env
如果遷移后的環(huán)境,一段時(shí)間經(jīng)常用到,可以將 source ~/test_env/bin/activate 放入自己的.bashrc 的最后,使其登錄即可進(jìn)入該環(huán)境。但是大佬說(shuō)這么做有隱患,目前我還不知道具體有哪些隱患,大家慎重使用吧。大不了環(huán)境不常用之后,將其從.bashrc 刪除即可。
yml文件重現(xiàn)環(huán)境
- 導(dǎo)出環(huán)境內(nèi)容
#導(dǎo)出環(huán)境內(nèi)容
conda env export --file your_env.yml --name env_name
#your_env.yml文件中name:env_name名字為原環(huán)境名字,各軟件版本都已明確指出。
#導(dǎo)出當(dāng)前所處環(huán)境的yml文件
conda env export > your_env.yml
- 重現(xiàn)環(huán)境
#創(chuàng)建一個(gè)新環(huán)境并安裝其中軟件
conda env create -f your_env.yml
#后加-p 選項(xiàng)加參數(shù)可以指定路徑安裝。
新環(huán)境的名字為your_env.yml 中 第一行 name: 內(nèi)容。
這種安裝方式前面軟件搜索步驟,可能依賴于服務(wù)器線程數(shù)和網(wǎng)速。因?yàn)橹粠腿税惭b過(guò)一次,沒有過(guò)多測(cè)試,不是很確定。主要是想說(shuō),如果大家重現(xiàn)環(huán)境時(shí)比較慢,可能是正?,F(xiàn)象,等就行了。
注意:這種遷移方式,只會(huì)遷移conda install 安裝的軟件。所以,軟件安裝時(shí)盡量全部使用conda。
總結(jié)
沒什么好總結(jié)的,寫的目錄亂了點(diǎn),也懶得排版,只適合自己看。