<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一招解決Conda安裝卡在solving environment這一步!

          共 4993字,需瀏覽 10分鐘

           ·

          2020-10-05 23:49

          生物信息學(xué)習(xí)的正確姿勢(shì)

          NGS系列文章包括NGS基礎(chǔ)、轉(zhuǎn)錄組分析?Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這、ChIP-seq分析?ChIP-seq基本分析流程、單細(xì)胞測(cè)序分析?(重磅綜述:三萬(wàn)字長(zhǎng)文讀懂單細(xì)胞RNA測(cè)序分析的最佳實(shí)踐教程 (原理、代碼和評(píng)述))、DNA甲基化分析、重測(cè)序分析、GEO數(shù)據(jù)挖掘典型醫(yī)學(xué)設(shè)計(jì)實(shí)驗(yàn)GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集等內(nèi)容。

          Conda為什么越來(lái)越慢?

          Conda中包含的軟件越來(lái)越多,而且軟件的不同版本都保留了下來(lái),軟件的索引文件越來(lái)越大,安裝一個(gè)新軟件時(shí)搜索滿(mǎn)足環(huán)境中所有軟件依賴(lài)的軟件的搜索空間也會(huì)越來(lái)越大,導(dǎo)致solving environment越來(lái)越慢。

          Conda是如何工作的

          1. 從設(shè)定的通道 (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"
            }
            }
          2. 解析repodata中的信息獲取所有依賴(lài)的包的信息

          3. 采用SAT-solver算法決定需要下載包的哪個(gè)版本和它們的安裝順序

          4. 下載并安裝包

          Conda哪一步慢?

          主要是第3步,確定待安裝包的依賴(lài)包之間的兼容和已安裝軟件之間的兼容,獲得需要下載的包和對(duì)應(yīng)版本。

          如何提速Conda

          • 采用最新版的conda (Conda4.7相比Conda4.6提速3.5倍, Conda 4.8應(yīng)該不會(huì)比4.7慢)

          • 安裝時(shí)指定版本減少搜索空間 conda install python=3.7.4

          • 安裝R包時(shí)指定R的版本也會(huì)極大減小搜索空間 (R包因其數(shù)目眾多,也是生物類(lèi)軟件依賴(lài)解析較慢的原因之一) conda install r-base=4.0.2 r-ggplot2=3.3.2

          • 采用mamba加速軟件依賴(lài)解析 [mamba采用c++重寫(xiě)了部分解析過(guò)程,這個(gè)提速效果是很明顯的] (安裝好mamba后就可以用mamba替換conda進(jìn)行安裝了)

            conda install mamba -c conda-forge
            mamba install python=3.7.4
          • ,默認(rèn)conda解析軟件依賴(lài)時(shí)優(yōu)先考慮允許的最高版本,設(shè)置通道優(yōu)先級(jí)權(quán)限高于軟件版本新舊后,conda會(huì)能更快的解決依賴(lài)關(guān)系,避免defaultsconda-forge通道的奇怪組合導(dǎo)致軟件依賴(lài)解析遲遲不能將結(jié)束的問(wèn)題: conda config --set channel_priority strict (這個(gè)命令只需要運(yùn)行一次)。

          • 創(chuàng)建一個(gè)新環(huán)境 (conda env create -n env_name)再安裝軟件,這樣就不用考慮與已有的軟件的兼容問(wèn)題了,也可以大大降低搜索空間和提高解析軟件依賴(lài)的速度。

          • 如果安裝的軟件提供了environment.yaml那么用起來(lái),文件中對(duì)應(yīng)的軟件版本都很明確,解析依賴(lài)關(guān)系時(shí)更快。(具體導(dǎo)出方式見(jiàn)Bioconda軟件安裝神器:多版本并存、環(huán)境復(fù)制、環(huán)境導(dǎo)出)。

            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通道時(shí),注意順序,給予conda-forge最高優(yōu)先級(jí),其次是bioconda。如果之前已經(jīng)添加好了通道,自己在~/.condarc中調(diào)整順序。

            conda config --add channels defaults
            conda config --add channels bioconda
            conda config --add channels conda-forge
          • 綜合以上組合,之前嘗試多次都沒(méi)安裝好的工具,直接搞定。

          下載提速

          1. 國(guó)內(nèi)鏡像,見(jiàn)軟件安裝不上,可能是網(wǎng)速慢!Conda/R/pip/brew等國(guó)內(nèi)鏡像大全拿走不謝~~

          2. 換個(gè)網(wǎng)或從朋友處拷貝已經(jīng)下載好的壓縮包一般在anaconda_root_dir/pkgs下,拷貝放在自己的anaconda3/pkgs下面,再次下載時(shí)系統(tǒng)會(huì)識(shí)別已經(jīng)下載好的包而跳過(guò) (并不總是有效)。

          3. 獲取所有相關(guān)包的名字,從朋友處拷貝下載好的安裝包。

            如果拷貝過(guò)來(lái)未能自動(dòng)識(shí)別,可手動(dòng)安裝 conda install --offline local_path。

          mamba install r-base=4.0.2 r-ggplot2=3.3.2 --dry-run >package_solving_result


          # _anaconda_depends pkgs/main/linux-64::_anaconda_depends-2020.07-py37_0
          # _r-mutex conda-forge/noarch::_r-mutex-1.0.1-anacondar_1
          # binutils_impl_lin~ pkgs/main/linux-64::binutils_impl_linux-64-2.33.1-he6710b0_7
          # binutils_linux-64 conda-forge/linux-64::binutils_linux-64-2.33.1-h9595d00_17
          # brotlipy conda-forge/linux-64::brotlipy-0.7.0-py37h516909a_1000
          # bwidget conda-forge/linux-64::bwidget-1.9.14-0
          # gcc_impl_linux-64 pkgs/main/linux-64::gcc_impl_linux-64-7.3.0-habb00fd_1
          # gcc_linux-64 conda-forge/linux-64::gcc_linux-64-7.3.0-h553295d_17

          # 獲取所有包的名字
          grep '::' a | sed 's/.*:://' | sed 's/$/.tar.bz2/'

          # 手動(dòng)安裝
          for i in `grep '::' a | sed 's/.*:://' | sed 's/$/.tar.bz2/'`; do conda install --offline /anaconda3/pkgs/$i; done

          使用conda-pack直接從已經(jīng)安裝好的地方拷貝一份

          安裝conda-pack

          conda install -c conda-forge conda-pack
          # pip install git+https://github.com/conda/conda-pack.git

          打包已經(jīng)安裝好的環(huán)境

          conda pack -n my_env_name -o my_env_name.tar.gz

          拷貝打包好的環(huán)境my_env_name.tar.gz到目標(biāo)機(jī)器,并解壓到任何目錄,一般推薦放到envs目錄下 (anaconda_root/envs)。(注意:anaconda_root改為自己的conda安裝路徑。)

          # 解壓打包好的環(huán)境
          # 默認(rèn)是全都解壓到當(dāng)前目錄,場(chǎng)面很壯觀
          # -C 一定要指定
          mkdir -p anaconda_root/envs/my_env
          tar -xzf my_env.tar.gz -C anaconda_root/envs/my_env

          # 激活環(huán)境
          source my_env/bin/activate

          # Unpack
          conda-unpack

          # 至此環(huán)境就完全拷貝過(guò)來(lái)了

          # 去激活
          source deactivate

          目前在同樣的操作系統(tǒng) (Centos)測(cè)試可以通過(guò),不同操作系統(tǒng)如centos-ubuntu尚未測(cè)試,各位可以測(cè)試下提供下反饋。

          References

          1. https://www.anaconda.com/blog/how-we-made-conda-faster-4-7

          2. https://github.com/bioconda/bioconda-recipes/issues/13774

          3. https://github.com/TheSnakePit/mamba

          4. https://medium.com/@marius.v.niekerk/conda-metachannel-f962241c9437

          5. https://www.anaconda.com/blog/understanding-and-improving-condas-performance

          6. Conda軟件安裝 core dump error/Segment fault/段錯(cuò)誤 怎么辦?

          7. 軟件安裝不上,可能是網(wǎng)速慢!Conda/R/pip/brew等國(guó)內(nèi)鏡像大全拿走不謝~~

          8. 用了Docker,媽媽再也不擔(dān)心我的軟件安裝了 - 基礎(chǔ)篇

          9. Linux學(xué)習(xí) - 又雙叒叕一個(gè)軟件安裝方法

          10. https://conda.github.io/conda-pack/

          11. 封面來(lái)源于:https://pixabay.com/photos/motivational-quote-try-and-stop-me-3403638/

          往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)


          后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集

          瀏覽 920
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人在线观看视频 | 成人黄色影视 | 热久久久精品视频 | 性无码免费一区二区三区四区 | 男人天堂色天堂 |