給生物學家的計算分析(六):shell下建立scripts

閱讀自Practical Computing for biologists by Haddock Dunn

完整建立一個scripts是幫助自己在command line完成許多事情的力氣,就不用再做很多重複的工作。

基本概念:所有在command line底下的指令本就就是一組scripts

所有在command line下的使用指令,本身就是一個scripts,只是他一開始就安裝好了,如ls、cd、rm..等等,我們來看看他們放哪邊!screenshot.png

我們使用which這個指令可以用來找尋物件在系統中的路徑,會發現這些基本指令都放在 /bin 裡面,這資料夾放滿系統各式重要的資料,當我們輸入cd按下時,系統會去尋找這幾個資料夾內的scripts,看有沒有符合的名稱,有的話就會執行!那哪邊可以知道放置這些系統會去尋找的特定資料夾呢?

screenshot.png

使用echo $PATH,就能叫出目前系統當指令輸入後會去尋找的路徑!各個路徑用:隔開。所以我們只要把建好的檔案放進去這些資料夾中,便能像是cd一般的指令來使用,但把自己弄的“土炮”scripts弄髒系統裡面核心功能資料夾,似乎不是個很好的方式,所以另一方式就是建立一個資料夾,然後把其路徑放入$PATH中,似乎是個不錯的方式!那要如何做呢?

以MacOS系統為例,每個帳號都有一個系統隱藏檔案.bash_profile,是來儲存各種個人的設定,(在linux中為.bashrc),可以在母目錄裡輸入 ls -a 看到此資料夾screenshot.png

在裡頭輸入

screenshot.png

那如何將command lines結合成scipts可以參考這篇文章如何將command lines 組合成shell script

給生物學家的計算分析(五):shell下的文本處理

閱讀自Practical Computing for biologists by Haddock Dunn

shell環境下的文本處理效率相當高,但需要combine許多shell command line tool,且同樣的處理其實方法會有蠻多種的,可能隨者經驗增加或是使用的工具變多而調整,這邊就稍微介紹一些基本的工具,已可做非常多的應用。

shell環境裡的文本編輯器nano

在command line底下編寫文字,需要一個方便的工具,雖然之前介紹過圖形介面的TextWrangler,但直接在command line裡面編輯有時候比較方便,其實在unix核心下的系統(linux, OS X)有蠻多內建選擇的,如vi、 vim 、emac、pico,每種操作細節上都有一點不同,而這邊介紹nano,一款比較基礎的,可以直接在command line下呼叫 nano
螢幕快照 2016-01-16 上午7.35.37螢幕快照 2016-01-16 上午7.35.48

編輯器下排其實就有非常清楚的解說,關於如何離開、寫入等等,如輸入:

^X   離開
^O   寫入
^Y    向上翻頁
^V    向下翻頁

 

 

給生物學家的計算分析(四):進入shell

閱讀自Practical Computing for biologists by Haddock Dunn

command line的工作環境是一開始生物背景跨進生資分析的障礙之一,相對於已經被圖形介面(Graphical User Line)的電腦環境所嬌生慣養,要說服我們從舒適的圖形介面跳進黑壓壓的指令框框,想必要有強而有力的說詞,這邊就要說說圖形介面的壞處:
  • 生資分析常常要做複雜的步驟來處理資料,或是同樣的步驟操作多次,這些工作要是再圖形介面下不知道要用滑鼠點到什麼時候。
  • 一般在GUI的環境下,大部分的分析都不會留下log黨,讓我們去回顧可能是哪一個步驟做錯了,而在command line下則很方便能把不同分析步驟發生的事情紀錄在log中,等出問題的時候方便除錯
  • 叢集電腦系統不支持圖形化介面的操作,當我們需要使用更加計算能力時,使用圖形介面會是個問題
  • 對於軟體開發者來說,圖形介面的軟體開發複雜且不同平台使用會需要調整,所以在軟體更新上,command line操作環境下的軟體更新的較快!
以上的問題,其實很明顯地想要處理大型資料就必須要克服這個恐懼感。
基礎的unix command 知識:
  • 相對路徑和絕對路徑
  • 相對路徑的使用:
    • ~   代表home目錄
    • ..  代表前一個目錄
    • .   代表目前目錄
  • cd 可以用來在系統路徑中移動
  • 基礎指令:
指令
功能
ls
當下目錄的檔案
pwd
目前目錄之路徑
mkdir
建立資料夾
rmdir
移除資料夾
rm
移除檔案
less
看檔案
man
查看指令說明
cp
複製檔案
mv
移動檔案或是重新命名

給生物學家的計算分析(三):Regular Expression使用

思考如何寫Regular expression的thinking process
以下是資料
螢幕快照 2016-01-16 上午8.01.22
首先思考要如何整理,整理成什麼樣子
螢幕快照 2016-01-16 上午8.04.27
再來看目前資料每行的狀態
螢幕快照 2016-01-16 上午8.06.46
先看哪些是要的資訊,用(     ) 標示
(13) (Jan)uary, (1752) at (13):(53)    (-1.414)    ( 5.781)etc
先看括號裡的資料怎麼用Regular Expression表示
螢幕快照 2016-01-16 上午8.18.53
再將括號外的符號放進去
(13) (Jan)uary, (1752) at (13):(53)    (-1.414)    ( 5.781)etc
(\d+)\s+(\w{3})[\w\,\.]*\s+ (\d+)\sat\s (\d+):(\d+)\s+    ([-\d\.]+)\s+    ( [\d\.]+).*
    1               2                             3               4          5               6                         7
在調整取代裡面的括號資料順序
(13) (Jan)uary, (1752) at (13):(53)    (-1.414)    ( 5.781)etc
(\d+)\s+(\w{3})[\w\,\.]*\s+ (\d+)\sat\s (\d+):(\d+)\s+    ([-\d\.]+)\s+    ( [\d\.]+).*

    \3               \2 \.              \1               \4                 \5              \ 6                         \7

 

*:(quantifiers)至少符合0個
+:(quantifiers)至少符合1個

給生物學家的計算分析(一):文本乃資料分析之底

閱讀自Practical Computing for biologists by Haddock Dunn

 基本上,電腦的檔案都是一連串binarary numbers所組成的,另一種人類看得懂的格式則是文本形式(text files),而資料分析的起點便是如何處理這些text file,即使是我們引以為常的數字或是文字,電腦要呈現給我們看得懂,就必須要轉換格式,最常見的數字或是英文文字的格式便是American Standard Code for Information Interchange (ASCII)。

 這些為了讓人類能理解而加上的許多格式,在我們要分析的時候就變得很棘手,因為其賦予資料格式的符號很容易影響我們處理資料時的手續,所以一套看“純的”工具,便很重要!
目前最基本的文本架構為character-delimited text,就是由column和line來組成整個資料架構,其中delimited就是將每一行資料分開的符號,可以是空白鍵、逗點或tab,而第一行的資訊通常就是header.
目前主流操作系統為windows、mac和linux,以下就這三個系統推薦好用的純文本編輯器,各個功能強大。
系統
推薦程式
MAC
Windows
Linux
不同系統間,會有一些細微的差異,這邊提兩個:
  • Line ending:每個編輯器在處理每一個行最後結尾的標記不太一樣
    • 主要分成兩大類型標記:
      • Carriage return(CR) :使用\r
      • Line feed(LF): 使用\n
  • Display font:編輯器展現出來的樣子,這邊的展示通常都不會直接改變原本的資料
    • Proportionally spaced:字所佔空間一樣
      螢幕快照 2016-01-13 上午12.31.34
    • Fixed-space:字所佔空間不一樣
      螢幕快照 2016-01-13 上午12.31.38