說明
Lefse
軟件是宏組學物種研究常用軟件,一般大家用在線版本即可。但要搭建在Linux
集群環境中有點煩,記錄一下折騰過程。
安裝
這個軟件是python2
寫的,因此假設我已經安裝好了較高版本的python2
以及pip
等工具,在此基礎上來安裝lefse
。
lefse
下載地址:https://bitbucket.org/nsegata/lefse/src/default/。這個網站有豐富的學習內容和教程,包括MetaPhIAn等流程,有時間去好好看看。
lefse
放在了bitbucket
上,克隆一下到集群:
hg clone https://bitbucket.org/nsegata/lefse
完成后有如下文件:
目錄下有個requirement.txt
文件,里面列出了R
和Python
需要安裝的包和模塊:
- R
- R libraries: splines, stats4, survival, mvtnorm, modeltools, coin, MASS
- python libraries: rpy2 (v. 2.1 or higher), numpy, matplotlib (v. 1.0 or higher), argparse
安裝R包的過程基本上沒啥問題,大部分還是我已經安裝過的。python
的大部分模塊也沒問題,難就難在了rpy2
。
首先,我直接用自己安裝的python2
使用pip
安裝:
pip intall rpy2
直接報語法錯誤,如下:
在網上找了一圈也沒有碰到同類型的問題,在這里卡了很久,分析腳本貌似也沒問題,而且如果這個都語法錯誤,作者去吃屎吧。后來我才知道這尼瑪pip
自動安裝第三版了,而第三版只支持python3
,不再支持python2
。
那就直接下載模塊安裝吧。自然地下了個較新的版本,解壓后安裝:
python setup.py install
直接報錯,說是版本太高了,rpy
的第三版已經不支持python2
啦,blabla。。。我看它這里rpy2
版本也有較高要求,於是下載了個2.9
版本的(各舊版本
),結果還是太高,你特么不是python2
寫的嗎!不支持python2
。試了幾次,干脆了個2016年發行的,這次終於可以了。
但是肯定沒有這么簡單,安裝過程又報錯了:
下載不了這個玩意:Download error on https://pypi.python.org/simple/singledispatch/
。網上有些答案亂七八糟,后來找到了一個能解決問題的,直接下載singledispatch
安裝即可。
下載解壓進入目錄。
python setup.py install
成功安裝singledispatch
后,再次安裝rpy2
,這次沒報錯了。進入lefse
目錄試運行一下:
應該是可以了。
再進去example
中運行下測試shell
,但是這個demo
是針對bioconda
使用的,如果沒用conda
,測試不了。對於這個軟件我真是服氣的。
總之,lefse
軟件算是安裝成功了吧,至於測試,后續我再試試。
第二次更新:
接着來測試上次安裝好的Lefse
軟件,這個軟件有現成的python
腳本進行數據處理和繪圖,怎么用的話,在下載后example
中和官方文檔中都有說明,這里不作說明了。簡言之,就是先處理,整理好數據格式,進行繪圖。
試着用自己的數據處理了下。
python format_input.py test.txt result.in -c 1 -s 2 -u 3 -o 1000000
python run_lefse.py result.in result.res
python plot_res.py result.res result.png
.......
文件結果沒有問題,繪圖及其后續步驟報錯了:
我懷疑是自己處理的數據格式有問題,於是下載了官網的測試數據:
wget http://huttenhower.sph.harvard.edu/webfm_send/129 -O hmp_aerobiosis_small.txt
還是同樣的問題,數據處理正常,繪圖錯誤。網上查了下,沒有直接相關的問題,但大致猜到是matplotlib
的問題。
我的系統除了我裝的python
外,還有其他好幾個python
版本的庫,我當時只將其他版本的python
都注釋了,然后將自己安裝的python
及其庫路徑加入了環境變量,但沒有注釋掉其他python
版本的庫。所以,我自己的python
其實是沒有安裝matplotlib
的,用的是其他版本的。
將其他版本python
的庫注釋后,用自己的python
重新安裝matplotlib
(一定要注釋掉其他的庫,否則會提示已安裝,是裝不上matplotlib
的)。
這時,再運行lefse
時,沒報錯,所有結果都出來了!
看來當系統有多個版本時,用conda
確實是有優勢的,避免版本沖突。
Ref:https://blog.csdn.net/chenKFKevin/article/details/77854232
http://blog.sciencenet.cn/blog-306699-997026.html
https://www.jianshu.com/p/b4dbd47aaeb6