寫在開頭:我曾經(jīng)跟過各種視頻教程詳細學習Linux的系統(tǒng)使用简烘,各位老師講解得也非常詳細爹梁,但很多內(nèi)容對于我一個初學者來說非橙保晦澀難懂赦颇,并且很多實際的測序數(shù)據(jù)分析過程也用不到。我的此次分享主要是講解生信分析實戰(zhàn)過程中常用的Linux操作群井。
我們以bulk轉(zhuǎn)錄組為例
首先我們拿到了公司返回的測序fastq文件,如C1_R1.fq.gz,需要建立一個文件夾(也叫目錄)來存放本次分析所用到數(shù)據(jù)晤郑、得到的結(jié)果
mkdir RNA-seq
mkdir fastq
#或者加上-p參數(shù),可以實現(xiàn)創(chuàng)建連續(xù)多層級的目錄
mkdir -p RNA-seq/fastq
#創(chuàng)建成功后使用ls命令查看目錄下的所有文件夾和文件,-l用于顯示該目錄中的文件和文件夾的詳細列表造寝。
ls -l
#如果目錄創(chuàng)建錯誤磕洪,使用rm命令刪除,其中-r參數(shù)是向下遞歸 刪除RNA-seq目錄及其下所有文件夾和文件诫龙,如果只刪除文件不用加上-r析显,-f是直接強行刪除,無任何提示签赃,慎用谷异。
rm -rf RNA-seq
#注意無論是刪除目錄還是文件,都需要進入到它的上級目錄下才能成功刪除锦聊,用cd命令切換路徑
cd /home/RNA-seq/
#目前是處于home目錄下的RNA-seq目錄歹嘹,需要返回到home目錄下,再刪除RNA-seq目錄下的所有內(nèi)容孔庭。其中第一個/是根目錄荞下,是Linux系統(tǒng)中所有目錄和文件的起始點
cd /home/ #可以寫絕對路徑
cd ../ #也可以使用相對路徑,../是返回上一級目錄史飞,./是當前目錄
接下來
需要安裝用于分析的包尖昏。首選使用conda,Conda是一個開源的軟件包管理系統(tǒng)和環(huán)境管理系統(tǒng)构资,用于安裝多個版本的軟件包及其依賴關系抽诉,并在它們之間輕松切換⊥旅啵可以避免包的版本沖突迹淌,可以快速安裝、運行和更新軟件包及其依賴項己单。避免由于包的依賴包未安裝導致包不能使用唉窃。
其次對于不能使用conda下載的安裝包或者網(wǎng)站上的文件等,使用wget命令纹笼,wget 是一個從網(wǎng)絡上自動下載文件的自由工具纹份,支持通過 HTTP、HTTPS廷痘、FTP 三個最常見的 TCP/IP協(xié)議 下載蔓涧,并可以使用 HTTP 代理。
#首先去清華鏡像源去下載conda (https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)笋额,-c是可以繼續(xù)中斷的下載
wget –c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh
#更改文件的權限
chmod 777 Anaconda3-2022.10-Linux-x86_64.sh
linux下的文件的權限包括可讀(r=4)元暴,可寫(w=2),可執(zhí)行(x=1)兄猩。圖中就是ls -l命令輸出的詳細信息茉盏,第1列就是文件夾(d)或文件(-)調(diào)用的權限鉴未,調(diào)用權限分為三級 : 文件所有者(Owner)、同組用戶(Group)鸠姨、其它用戶(Other Users)歼狼,每一級都有r w x三種權限。第2列是鏈接數(shù)享怀,表示有多少不同的文件名指向同一個節(jié)點羽峰。第3列是文件或目錄的所有者的用戶名。第4列是文件或目錄的所屬的組名添瓷。第5列是文件的大忻诽搿(以字節(jié)為單位)。第6列是最后修改時間鳞贷。第7列是文件或目錄的名稱坯汤。
#運行安裝,剛剛下載的文件是一個安裝腳本(.sh)
bash Anaconda3-2022.10-Linux-x86_64.sh
安裝完成后搀愧,選擇 yes惰聂,自動初始化 Anaconda3 環(huán)境
退出終端,重新登錄咱筛,可以看到用戶名前出現(xiàn) (base) 提示搓幌,說明已經(jīng)成功激活 Anaconda 環(huán)境
#為了保證各種版本的包之間有兼容性,conda 環(huán)境管理器允許用戶創(chuàng)建多個隔離環(huán)境迅箩,通過虛擬環(huán)境實現(xiàn)溉愁。
#列出conda下的環(huán)境
conda env list
#創(chuàng)建名為bulk_RNA-seq的新環(huán)境,并在該環(huán)境下安裝名python 3.10版本
conda create -n bulk_RNA-seq python=3.10
#激活該環(huán)境
conda activate bulk_RNA-seq
#退出該環(huán)境
conda deactivate
#刪除環(huán)境
conda remove --name bulk_RNA-seq
#刪除特定環(huán)境下的安裝包
conda remove -name bulk_RNA-seq python=3.10
#channels是conda下載包的鏡像網(wǎng)站饲趋,在安裝包的時候拐揭,conda會依次查找各個channnels,直到某個channel中包含所需的packages
#查看通道 默認最近添加的通道為最高優(yōu)先級
conda config --get channels
#添加通道奕塑,如使用清華鏡像
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 --remove channels channel_name
#編輯.condarc文件改變通道優(yōu)先級堂污, 排序越靠前,優(yōu)先級越高龄砰,
#vi是文件編輯器盟猖,i:切換到插入模式,在光標位置插入文本寝贡。Esc:從任何模式返回到正常模式扒披。:w:保存文件值依。:q:退出編輯器圃泡。:wq:保存文件并退出。:q!:不保存更改強制退出愿险。
vi ~/.condarc
#conda安裝包颇蜡,在瀏覽器搜索包名+conda价说,進入anaconda.org網(wǎng)站,其中可以找到安裝該包的安裝命令
conda install bioconda::fastqc
#如果要安裝舊的版本方法:先看看有哪些可以安裝的版本
conda search fastqc
#安裝指定版本的軟件
conda install fastqc=0.11.7
在實際應用中风秤,conda安裝包的速度還是很慢鳖目,有時候由于源不合適找不到包,無法成功安裝缤弦。因此出現(xiàn)了mamba领迈,它是 Conda 的一個替代品,Mamba 與 Conda 使用相同的命令行語法碍沐,可以作為 Conda 的直接替換狸捅。Mamba 在解析包依賴和安裝過程中使用了 C++ 實現(xiàn)的 libsolv 庫,而 Conda 使用的是 Python累提,運行效率顯著提高尘喝,可以進行并行的下載,使用管理工具中的 libsolv斋陪,可以更快的解決環(huán)境依賴問題朽褪。
mamba 的使用也比較簡單,首先使用 conda 安裝 mamba无虚,后面所有用到 conda 的地方缔赠,
都可以使用 mamba 替換即可
#切換到base 環(huán)境中進行使用,確保我們確實是在base 環(huán)境中
conda activate base
conda update conda
#依據(jù)其他教程友题,安裝并設置 libmamba 求解器橡淑,ibmamba 求解器比默認的 conda 求解器快得多,尤其是在處理大規(guī)模依賴關系時咆爽。切換到 libmamba 可以顯著提升包管理的性能和速度梁棠。
conda install conda-libmamba-solver
conda config --set solver libmamba
#安裝,裝在base 環(huán)境中的包在所有的小環(huán)境中依然可以調(diào)用斗埂,因此裝在base環(huán)境中之后不需要再每個環(huán)境中再重新安裝一遍符糊。
conda install conda-forge::mamba
但是我用conda下載mamba總是停在solving environment這一步,于是我直接在github上下載安裝包(Release Release 24.3.0-0 · conda-forge/miniforge · GitHub)呛凶,直接bash Mambaforge-Linux-x86_64男娄,即可安裝成功,成功替代conda漾稀,以后運行conda命令時直接將conda換為mamba模闲。
我可以使用mamba成功安裝大部分包,同時安裝速度極大提升崭捍。但需要注意的是在安裝部分包時尸折,可能會出現(xiàn)RuntimeError: Multi-download failed
這說明源可能已經(jīng)不可用,例如清華的 conda 鏡像源已經(jīng)廢棄殷蛇,需要去掉有問題的源实夹,或者是修改成可以使用的不會報錯的鏡像源橄浓。使用mamba安裝一般不需要自己添加一些鏡像源,用conda自帶的即可亮航。
vi ~/.condarc
#修改成
channels:
- bioconda
- conda-forge
- defaults
show_channel_urls: true
channel_priority: flexible
或者使用wget命令直接下載工具包的壓縮文件tar.gz
wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/3.1.1/sratoolkit.3.1.1-centos_linux64.tar.gz
#tar是壓縮/解壓縮的命令荸实,-x解壓縮,-c建立壓縮缴淋,-z:gzip文件准给,-v :顯示所有過程,-f :使用檔名重抖,在 f 之后要立即接文檔名圆存!不要再加參數(shù)!
tar zxvf sratoolkit.3.1.1-centos_linux64.tar.gz
#在.bashrc文件中加入環(huán)境路徑
vi ~/.bashrc
export PATH="/home/.../software/sratoolkit.3.1.1-centos_linux64/bin:$PATH"
#輸入自己的文件路徑仇哆,保存并退出
source ~/.bashrc
#接下來就可以成功使用工具了
接下來將使用安裝的包進行分析了沦辙。
有些命令可能需要耗時幾個小時,如果不慎電腦休眠讹剔,聯(lián)網(wǎng)失敗油讯,命令可能就停止運行了。這時候如果把命令放在后臺延欠,即使終端關閉命令也會在后臺運行陌兑,使用到的命令是nohup &
#nohup 命令 & 它會輸出一個nohuo.out文件,是該命令的運行日志由捎,可以檢查命令是否正確運行
nohup hisat2-build -p 4 --ss GRCm38.splice_sites.gtf --exon GRCm38.exons.gtf genome.fa genome &
對于一些文本文件(.txt兔综、.csv等),日志文件(.log等)狞玛、腳本文件(.sh等)软驰、代碼文件(.py、.html心肪、.php等)锭亏、配置文件(.conf等)等,可以使用命令來查看文件的內(nèi)容硬鞍。
#我們就以這個nohup.out為例
#查看整個文件的內(nèi)容慧瘤,將整個文件的內(nèi)容輸出到終端界面上
cat nohup.out
#分頁查看文件的內(nèi)容。less命令的用法與more命令類似固该,它可以用來隨意瀏覽文件锅减,且支持翻頁、搜索伐坏,還支持向上翻頁怔匣、向下翻頁。
less nohup.out
#less命令搜索文件內(nèi)容可以通過 / 進行搜索著淆,運行命令后按下 / 鍵劫狠,輸入您想要搜索的內(nèi)容拴疤,按下回車鍵永部。less 將會高亮顯示匹配的內(nèi)容独泞,并且您可以通過按下 n 鍵來查看下一個匹配項,按下 N 鍵來查看上一個匹配項
#分頁查看文件內(nèi)容苔埋,more命令類似cat懦砂,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀组橄,按Enter鍵就往下一頁顯示荞膘,按B鍵就會往回一頁顯示,按Q鍵會退出查看玉工,而且還有搜尋字串的功能羽资。
more nohup.out
#兩者的不同在于:less可以按鍵盤上下方向鍵顯示上下內(nèi)容,而more不能通過上下方向鍵控制顯示遵班。less不必讀整個文件屠升,加載速度會比more更快。less退出后終端不會留下剛顯示的內(nèi)容狭郑,而more退出后會在終端上留下剛顯示的內(nèi)容腹暖。閱讀到文件結(jié)束時,less不會退出翰萨,而more會脏答。相比more,less提供更加友好的檢索
#查看文件的前10行(默認)
head nohup.out
#查看文件的后5行亩鬼,默認n為10
tail -n 5 nohup.out
這是比較基礎的數(shù)據(jù)分析可能會用到的一些命令殖告,因為沒有結(jié)合數(shù)據(jù)進行實戰(zhàn),肯定會有所遺漏雳锋。我會在接下來的教程中繼續(xù)補充的丛肮。