Conda solving environment一晚上还不能完成有解吗?
生物信息學習的正確姿勢
NGS系列文章包括NGS基礎、轉錄組分析?(Nature重磅綜述|關于RNA-seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))、DNA甲基化分析、重測序分析、GEO數據挖掘(典型醫學設計實驗GEO數據分析 (step-by-step) - Limma差異分析、火山圖、功能富集)等內容。
Conda為什么越來越慢?
Conda中包含的軟件越來越多,而且軟件的不同版本都保留了下來,軟件的索引文件越來越大,安裝一個新軟件時搜索滿足環境中所有軟件依賴的軟件的搜索空間也會越來越大,導致solving environment越來越慢。
Conda是如何工作的
從設定的通道 (channel)處下載通道中所有軟件的索引信息 (repodata.json) (Collecting package metadata (repodata.json))
"packages" : {"moto-1.3.7-py_0.tar.bz2" : {"build" : "py_0","build_number" : 0,"depends" : [ "aws-xray-sdk !=0.96,>=0.93", "backports.tempfile", "boto >=2.36.0", "boto3 >=1.6.15", "botocore >=1.12.13", "cookies", "dicttoxml", "docker-py", "flask", "jinja2 >=2.7.3", "jsondiff 1.1.1.*", "mock", "pyaml", "python", "python-dateutil", "python-jose <3.0.0", "pytz", "requests >=2.5", "responses >=0.9.0", "six", "werkzeug", "xmltodict" ],"license" : "Apache-2.0","md5" : "17b424658cd07e678b5feebdc932eb52","name" : "moto","sha256" : "5924666f8c1758472dc4c3d22b270b46cd1c4b66c50a9ba50d5c636d2237bdd1","size" : 399973,"subdir" : "noarch","timestamp" : 1552438392680,"version" : "1.3.7"} }解析repodata中的信息獲取所有依賴的包的信息
采用SAT-solver算法決定需要下載包的哪個版本和它們的安裝順序
下載并安裝包
Conda哪一步慢?
主要是第3步,確定待安裝包的依賴包之間的兼容和已安裝軟件之間的兼容,獲得需要下載的包和對應版本。
如何提速Conda
采用最新版的conda (Conda4.7相比Conda4.6提速3.5倍, Conda 4.8應該不會比4.7慢)
安裝時指定版本減少搜索空間 conda install python=3.7.4
安裝R包時指定R的版本也會極大減小搜索空間 (R包因其數目眾多,也是生物類軟件依賴解析較慢的原因之一) conda install r-base=4.0.2 r-ggplot2=3.3.2
采用mamba加速軟件依賴解析 [mamba采用c++重寫了部分解析過程,這個提速效果是很明顯的] (安裝好mamba后就可以用mamba替換conda進行安裝了)
conda install mamba -c conda-forge mamba install python=3.7.4,默認conda解析軟件依賴時優先考慮允許的最高版本,設置通道優先級權限高于軟件版本新舊后,conda會能更快的解決依賴關系,避免defaults和conda-forge通道的奇怪組合導致軟件依賴解析遲遲不能將結束的問題: conda config --set channel_priority strict (這個命令只需要運行一次)。
創建一個新環境 (conda env create -n env_name)再安裝軟件,這樣就不用考慮與已有的軟件的兼容問題了,也可以大大降低搜索空間和提高解析軟件依賴的速度。
如果安裝的軟件提供了environment.yaml那么用起來,文件中對應的軟件版本都很明確,解析依賴關系時更快。(具體導出方式見Bioconda軟件安裝神器:多版本并存、環境復制、環境導出)。
channels:- qiime2/label/r2020.6- conda-forge- bioconda- defaults dependencies:- _libgcc_mutex=0.1- _openmp_mutex=4.5- _r-mutex=1.0.1- alsa-lib=1.1.5- arb-bio-tools=6.0.6- attrs=19.3.0- backcall=0.2.0- bibtexparser=1.1.0- binutils_impl_linux-64=2.34- binutils_linux-64=2.34- bioconductor-biobase=2.42.0- bioconductor-biocgenerics=0.28.0- bioconductor-biocparallel=1.16.6- bioconductor-biostrings=2.50.2- bioconductor-dada2=1.10.0添加Bioconda通道時,注意順序,給予conda-forge最高優先級,其次是bioconda。如果之前已經添加好了通道,自己在~/.condarc中調整順序。
conda config --add channels defaults conda config --add channels bioconda conda config --add channels conda-forge綜合以上組合,之前嘗試多次都沒安裝好的工具,直接搞定。
下載提速
國內鏡像,見軟件安裝不上,可能是網速慢!Conda/R/pip/brew等國內鏡像大全拿走不謝~~
換個網或從朋友處拷貝已經下載好的壓縮包一般在anaconda_root_dir/pkgs下,拷貝放在自己的anaconda3/pkgs下面,再次下載時系統會識別已經下載好的包而跳過 (并不總是有效)。
獲取所有相關包的名字,從朋友處拷貝下載好的安裝包。
如果拷貝過來未能自動識別,可手動安裝 conda install --offline local_path。
使用conda-pack直接從已經安裝好的地方拷貝一份
安裝conda-pack
conda install -c conda-forge conda-pack # pip install git+https://github.com/conda/conda-pack.git打包已經安裝好的環境
conda pack -n my_env_name -o my_env_name.tar.gz拷貝打包好的環境my_env_name.tar.gz到目標機器,并解壓到任何目錄,一般推薦放到envs目錄下 (anaconda_root/envs)。(注意:anaconda_root改為自己的conda安裝路徑。)
# 解壓打包好的環境 # 默認是全都解壓到當前目錄,場面很壯觀 # -C 一定要指定 mkdir -p anaconda_root/envs/my_env tar -xzf my_env.tar.gz -C anaconda_root/envs/my_env# 激活環境 source my_env/bin/activate# Unpack conda-unpack# 至此環境就完全拷貝過來了# 去激活 source deactivate目前在同樣的操作系統 (Centos)測試可以通過,不同操作系統如centos-ubuntu尚未測試,各位可以測試下提供下反饋。
References
https://www.anaconda.com/blog/how-we-made-conda-faster-4-7
https://github.com/bioconda/bioconda-recipes/issues/13774
https://github.com/TheSnakePit/mamba
https://medium.com/@marius.v.niekerk/conda-metachannel-f962241c9437
https://www.anaconda.com/blog/understanding-and-improving-condas-performance
Conda軟件安裝 core dump error/Segment fault/段錯誤 怎么辦?
軟件安裝不上,可能是網速慢!Conda/R/pip/brew等國內鏡像大全拿走不謝~~
用了Docker,媽媽再也不擔心我的軟件安裝了 - 基礎篇
Linux學習 - 又雙叒叕一個軟件安裝方法
https://conda.github.io/conda-pack/
封面來源于:https://pixabay.com/photos/motivational-quote-try-and-stop-me-3403638/
往期精品(點擊圖片直達文字對應教程)
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結
以上是生活随笔為你收集整理的Conda solving environment一晚上还不能完成有解吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言学习 - 热图简化
- 下一篇: 14岁的男孩说想学生信,应该给予哪些指导