2016年10月31日 星期一

Fedora上安裝Nvidia的驅動程式

舊的MacBookPro5,5,放棄了Ubuntu改裝Fedora(因為比較喜歡Gnome桌面環境,Ubuntu Gnome後來出了一些問題...)。之前要《舊MacBook Pro安裝Ubuntu Gnome後,更新顯示卡驅動 》的動作要重來一次。因為Ubuntu與Fedora兩者差異很大,安裝的方式也相差很多。網路上這篇《Fedora 24/23/22 nVidia Drivers Install Guide》寫的很詳盡,以下是成功的安裝紀錄,指令都用root執行

2016年10月30日 星期日

用遠端桌面連到Fedora的機器

用遠端桌面(Remote Desktop)連Fedora 24。此系統直接進去的桌面環境是Gnome,但遠端連線進去不想要太花俏吃太多資源,所以選擇遠端連線的桌面環境是XFCE。參考bcambl的說明文件《Setup Fedora23 Gnome3 with xRDP via XFCE4》依序執行:


2016年10月29日 星期六

用CE做結構比對

要對齊兩個蛋白質結構,Combinatorial Extension (CE)是其中一種方法。如果只是數個比較,那可以使用網頁版的RCSB PDB Protein Comparison Tool,或是PyMOL裡面內建的cealign指令。但若是要跑很多結構比對,那這樣就必須要下載程式回來自行使用。這個程式到CE其中一位作者Bourne的網頁下面,找到CE Software後下載編譯使用

2016年10月28日 星期五

Windows安裝Python與NumPy

由於Windows並沒有像Mac有MacPorts這樣開源的套件管理工具,所以在安裝Python上面要另外從python.org找軟體來安裝。這篇是2016年的安裝方式,下面的連結則是2017年11月的安裝方式:
建議看上面兩篇的安裝方式即可,後面的方法比較不直覺

Mac安裝Python的NumPy套件

以下介紹如何在Mac上面安裝Python與NumPy套件,使用到的套件管理程式是MacPorts。下面有用到指令的部分請開啟終端機(Terminal)來跑~


Shell一行文:刪除最近產生的檔案

不小心產生一堆檔案,懶得一個一個殺掉,可以用find搭配rm來達成:
  • find /tmp/ -type f -user USERNAME -atime -5m -exec rm {} \; 
參數的意思分別是:
  • /tmp/ :存放檔案放置的資料夾
  • -type f:想要刪除的只有檔案
  • -user USERNAME:檔案擁有者叫做USERNAME
  • -atime -5m:五分鐘內產生的檔案
  • -exec rm {}:五分刪除前面產生的檔案
  • \;:find後面有執行指令都要加入這個

參考資料

_EOF_

2016年10月27日 星期四

關閉Fedora的交換空間(swap)

不像舊版的Linux,只要把/etc/fstab裡面的swap空間給註記起來就好,新的Fedora(這邊的版本是Fedora 24)想關卻關不掉。《cant diable swap》裡面提到原因:為新的systemd會自動去辨識GPT分割的硬碟上有沒有swap區,有的話就會自動掛上去。裡面也提到解法(假設在/dev/sda4分割區是個交換空間):
  • systemctl mask dev-sda4.swap 

2016年10月26日 星期三

讓Fedora的筆電闔上後不休眠

在舊的蘋果筆記型電腦MacBookPro5,5安裝了Fedora24當作桌機用,希望螢幕蓋上之後不要進入休眠,設定則是參考《How to disable auto suspend when I close laptop lid?》上EightBitTony的回應:
  • 修改 /etc/systemd/logind.conf,加入 HandleLidSwitch=ignore
  • 執行 systemctl restart systemd-logind 重新載入設定

2016年10月25日 星期二

使用舊的磁碟管理程式

Mac OS X升級到10.11(El Capitan)之後的磁碟管理程式(Disk Utility)實在爆難用...,想做什麼都不能夠做。所以去挖出10.10(Yosemite)的磁碟管理工具回來用,整個資料夾給複製回來就可以了,然後輸入指令:
  • sudo chown -R 0:0 /Applications/Disk\ Utility\ 10.10.app

在El Capitan上面只能夠用到Yosemite版的磁碟管理程式,如果要換成Mavericks(10.9)的,用上述方式改權限依舊無法使用

_EOF_

2016年10月24日 星期一

把光碟的ISO燒到USB隨身碟上

平常要安裝系統的時候皆需要燒一片光碟片出來,可是通常安裝完以後這片光碟片就沒有用了。這邊介紹將安裝的光碟的ISO燒到USB隨身碟上。安裝之後隨身碟還可以做其他用途~

在這邊介紹用Mac來做這件事:
  1. diskutil list
  2. diskutil unmountDisk diskNs1
  3. diskutil unmountDisk diskNs2 ...
  4. sudo dd if=ubuntu-16.04.1-desktop-amd64.iso of=/dev/rdiskN bs=4m
  5. 注意!! 第4個指令of後面接的是rdisk,不是disk

2016年10月22日 星期六

R語言中安裝與載入套件(Package)

想要安裝或是更新名叫做 oasis 的套件:
  • install.packages("oasis")

載入套件則會有兩種方式:
  • library("oasis")
  • require("oasis")
這兩種方式都可以載入套件,如果是寫在一個R script最前面的話,會使用library;若是在函式裡面要載入會使用require。這是因為library對於載入沒有安裝的套件的反應是出現error,然後停止執行這個R script;若是require的話,對於有沒有載入套件的反應是回傳TRUE與FALSE,之後會繼續執行script。更多關於兩者差別的範例可以參考《What is the difference between require() and library()?》《R中library和require的区别》

若套件已經載入,library與require就會直接跳過而不重新載入。所以想要重新載入,就必須要先卸載這個套件,然後再重新載入:
  • detach(package:oasis)
  • require("oasis")

套件oasis,是用來應用在multipel sclerosis(MS, 多發性硬症)的工具,根據MRI的結果來預測MS對於身體造成損傷的機率。

_EOF_

2016年10月21日 星期五

清除R語言的控制台

在用R寫程式做計算的時候,控制台(Console)上面會累積許多指令與結果
多了會很煩,可以使用下列組合鍵清除控制台:
  • RStudio:Ctrl-L
  • Macintosh:Command-Option-L
  • Windows:Ctrl-L

2016年10月20日 星期四

Windows備份的0x807800C5問題

在用Windows10內建的備份軟體建立系統映像時,一直出現0x807800C5錯誤訊息、另外還說沒有辦法存取磁碟機,但是已經確定硬碟已經分割並格式化成為NTFS格式

原來是因為此備份硬碟是從Mac上取出,前端會有200MB的EFI磁區。參考這篇《Windows刪除硬碟裡面的EFI磁區》重新分割並格式化後,就可以順利備份了

除了使用系統內建的圖形化備份介面,其實也可以用wbAdmin指令來做
  • Win鍵-R,輸入 cmd,選擇為管理員模式
  • wbAdmin start backup -backupTarget:D: -include:C: -allCritical 

上述指令會把C槽的所有東西都備份到硬碟D裡面,此指令是備份成映象檔而不是硬碟對拷。參考了《Use Windows 10 WBadmin to Create System Image Backup》這篇文章

_EOF_

2016年10月19日 星期三

Windows Subsystem for Linux (WSL)

要在微軟視窗系統(Windows)下面跑Linux程式,除了用虛擬機器、cygwin、wine以外,現在可以用Windows Subsystem for Linux (WSL) 或稱為Bash on Ubuntu on Windows。安裝步驟如下:
  1. 開啟開發人員模式:
    1. 點螢幕左下角視窗鍵 > 點"Windows設定"  
    2. 點"更新與安全性" 
    3. 點"開發人員專用" 
    4. 確認開啟開發人員模式
  2. 安裝Windows Subsystem for Linux (WSL):
    1. 開啟"命令提示字元"  
    2. 輸入 OptionalFeatures 後按Enter 
    3. 勾選表單內"適用於Linux的Windows子系統(搶鮮版(Beta))" 
    4. 重新啟動電腦
    5. 再次開啟"命令提示字元"
    6. 輸入 bash 後按Enter
    7. 確認閱讀條款輸入 Y 後按Enter
    8. 設定自己的帳號與密碼 (這邊的帳號密碼與Windows的可以不同)
  3. 執行 Windows Subsystem for Linux:
    1. 開啟"命令提示字元" 或是 "PowerShell"
    2. 輸入 bash 後按Enter
    3. 開始在Windows內跑Linux
    4. 用apt-get相關指令安裝各種軟體
    5. 用Xming來接Linux的圖形化視窗
    6. 可以直接存取 Windows 裡面的檔案

2016年10月18日 星期二

讓Vim用光棒顯示游標所在的那一行

用vim編輯文件的時候,有時候會不知道游標所在的那一行。這時候可以使用光棒,反白所在的那一行。設定只要修改 ~/.vimrc 這個檔案,加入下面三行即可

set background=dark
set cursorline
highlight CursorLine cterm=none ctermbg=LightGray

_EOF_

2016年10月17日 星期一

設定gvim的預設字型與視窗大小

Vim的圖形化視窗介面程式叫gvim。若要設定一開始啟動的時視窗的大小與預設字型,只要修改 ~/.gvimrc 這個檔案,加入下面三行:
  • set guifont=monospace\ 16
  • set columns=80
  • set lines=36
  • colorscheme torte
第一行設定字型為大小是16的monospace
第二行設定gvim編輯的寬度是80字元
第三行則是gvim編輯的高度是36行
第四行設定gvim的背景是黑色的

_EOF_

2016年10月16日 星期日

設定XClock的顏色

XClock是X Window上面標準配備的圖形化視窗,一般的配色會是白底黑指針
若想要自行配色,如下圖




2016年10月15日 星期六

Windows刪除硬碟裡面的EFI磁區

從Mac換下來的硬碟給Windows使用,會發現硬碟分割前端有著200MB的EFI磁區,使用磁碟管理程式無法刪除。除了另外安裝磁碟管理軟體來刪除以外,也可以用內建於命令列的DiskPart來刪除。
  1. Win鍵-R,輸入cmd
  2. 輸入 diskpart
  3. DISKPART> list disk
  4. DISKPART> select disk N
  5. DISKPART> list partition
  6. DISKPART> clean
  7. Win鍵-R,輸入diskmgmt.msc

2016年10月14日 星期五

R語言中的資料結構

把一堆資料存在一個變數中,根據不同的存放方式,資料結構可以分成下面幾種:

  • 向量(Vector):
    一堆資料排成一串每筆資料的資料型態都必須一樣
    一般會用到的就是浮點數向量、字串向量......
     
  • 矩陣(Matrix):
    向量的二維版本,資料型態必須要一樣
     
  • 陣列(Array):
    向量的多維版本,資料型態必須要一樣
     
  • 因子(Factor):
    跟向量一樣是一堆資料排成一串,但每筆資料會是分類變數(categorical variable),另加入分類名稱彙整資訊
     
  • 串列(List):
    跟向量一樣是一堆資料排成一串,但可以是不同資料型態的變數混搭在一起。而且每筆資料可以是向量、矩陣、陣列、甚至是串列。簡單說就像一串列車,每節車廂要塞什麼東西都可以,是最具彈性的資料存放方式。許多統計分析函數回傳值都會是串列
     
  • 資料框架(Data frame):
    類似Excel的資料表,每個欄位存放的資料型態必須要一樣、但不同欄位就可以不一樣。一般來說資料從外部存入都會存成資料框架
     
  • 時間序列(Time series):
    可以是向量、矩陣、或是陣列,多加入時間的資訊在這個資料結構裡面

簡單的使用範例可參考《Vector, Array, List and Data Frame in R》
變數的基本資料型態參考《R語言的基本資料型態》

_EOF_

2016年10月13日 星期四

R可以計算的距離

計算距離(Distance,或稱相異度Divergence)與相似度(Similarity)有許多方法。在R裡面可以用proxy套件《Registry of proximities》看支援的計算方式。指令如下:

> summary(pr_DB)
* Similarity measures:
Braun-Blanquet, Chi-squared, correlation, cosine, Cramer, Dice, eDice, eJaccard, Fager, Faith, Gower, Hamman,
Jaccard, Kulczynski1, Kulczynski2, Michael, Mountford, Mozley, Ochiai, Pearson, Phi, Phi-squared, Russel, simple
matching, Simpson, Stiles, Tanimoto, Tschuprow, Yule, Yule2

* Distance measures:
Bhjattacharyya, Bray, Canberra, Chord, divergence, DTW, Euclidean, fJaccard, Geodesic, Hellinger, Kullback, Levenshtein, Mahalanobis, Manhattan, Minkowski, Podani, Soergel, supremum, Wave, Whittaker

一般最常用來計算距離的是歐幾里德距離(Euclidean distance),但如果把距離這個概念推廣成兩件事物的差距,就會根據不同的狀況出現各種距離的計算方式。距離與相似度其實是一體兩面的概念,距離近的比較相似、距離遠的比較不相似,因此這個套件會把距離與相似度放在一起。

_EOF_

2016年10月11日 星期二

蛋白質序列包含PROTEIN本身嗎?

蛋白質是由20種氨基酸所構成的長鏈大分子,每種氨基酸都可以用一個英文字母(1-letter code,參閱此表)所代表。所以,每一條蛋白質序列都可以寫成一串英文字母。那麼,所有的蛋白質序列有包含蛋白質(PROTEIN)本身嗎?

2016年10月10日 星期一

讓R語言的迴圈跑平行處理

R語言中,可以用foreach搭配doMC這兩個套件來完成迴圈的平行化,程式碼如下:
rm(list = ls())
install.packages("foreach")
install.packages("doMC")
library(foreach)
library(doMC)
registerDoMC(4)     # Number of CPU cores used in parallel computing

### for loop, using single CPU core ###
df <- data.frame()
for(i in 1:10) {
    Sys.sleep(1)
    df <- rbind(df, data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i))
}

### foreach loop, using single CPU core ###
dfs <- foreach(i=1:10, .combine=rbind) %do% {
    Sys.sleep(1)
    data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i)
}
identical(df, dfs)

### foreach loop, using multiple CPU cores ###
dfp <- foreach(i=1:10, .combine=rbind) %dopar% {
    Sys.sleep(1)
    data.frame("value"=i, "quadratic"=i*i, "cubic"=i*i*i)
}
identical(df, dfp)

2016年10月9日 星期日

在R中初始化一個空的data frame

一般來說,在R裡面用到data frame常常會是用read.table從csv檔案抓進來指定給某個型態是data frame的變數。不過有時候我們會希望創造一個空的data frame,而且指定好某些欄位的名稱。參考《Create an empty data.frame》裡面digEmAll的回應,直接輸入:

> df <- data.frame(Doubles=double(),
                 Ints=integer(),
                 Factors=factor(),
                 Logicals=logical(),
                 Characters=character(),
                 stringsAsFactors=FALSE)
> str(df)
'data.frame':   0 obs. of  5 variables:
 $ Doubles   : num 
 $ Ints      : int 
 $ Factors   : Factor w/ 0 levels: 
 $ Logicals  : logi 
 $ Characters: chr 

這邊可以看到這個“空的”變數data frame,有五個欄位,分別叫做Double、Ints、Factors、Logicals與Characters,其資料型態分別是浮點數、整數、factor、邏輯值與字串。

_EOF_

2016年10月8日 星期六

R語言的顏色列表

使用R語言的繪圖,常常會遇到要著色卻不知道顏色的名稱為何。其實只要直接輸入下面的指令,就可以找到顏色列表:
  1. colors()
  2. colors()[grep("dark",colors())]
  3. col2rgb("yellow")
  4. rgb(255, 255, 0, maxColorValue = 255) 
上述指令的意思是:
  1. 列出所有顏色的名稱
  2. 列出含有dark的顏色名稱
  3. 看黃色的RGB的十進位編碼
  4. 把RGB編碼轉換色成16進位

或是參考Earl F. Glynn寫的顏色列表(Color Chart),或是點他的PDF檔案(他也有提供程式碼可以自己直接輸出色碼錶)。在此說明幾個常用到的顏色名稱:

2016年10月7日 星期五

找到最接近的數值

有一群從1911到2016的質數,想知道最靠近1975的質數是哪一個
用R語言可以這樣做(粗體是指令,Courier是R回傳的值):

> library("numbers")
> v <- Primes(1911, 2016)
> print(v)
 [1] 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997 1999 2003 2011

> your.number <- 2000
> which(abs(v-your.number)==min(abs(v-your.number)))
[1] 11

> print(v[11])
[1] "1999"

在1911到2016這個區間總共有13個質數,最接近2000的是1999
以上程式碼參考Daniel Malter寫的《Find the closest value in a list or matrix》

_EOF_

2016年10月5日 星期三

模擬Tryptophan cage的分子動態

Tryptophan cage是個人造的蛋白質,長度只有20個氨基酸,序列如下:
NLYIQ WLKDG GPSSG RPPPS

Tryptophan cage在一般的環境下會摺疊成固定的立體結構、稱之為Trp-cage motif。立體結構可以從蛋白質結構資料庫的 1L2Y 下載。由於此結構是用NMR解出來的,會有許多相似的結構。下面的Tryptophan cage的分子動態模擬(molecular dynamics simulation)用NMR的第一個結構當作是初始結構(檔案名稱叫做1L2Ym1.pdb),參數設定參考Justin A. Lemkul寫的《GROMACS Tutorial:Lysozyme in Water》,在Mac上面跑模擬。指令如下:
  1. sudo port install gromacs
  2. port info gromacs
  3. gmx pdb2gmx -f 1L2Ym1.pdb -o processed.gro -ff oplsaa -water tip4p
  4. gmx editconf -f processed.gro -o newbox.gro -c -d 1.0 -bt cubic
  5. gmx solvate -cp newbox.gro -cs tip4p.gro -o solv.gro -p topol.top
  6. gmx grompp -f ions.mdp -c solv.gro -p topol.top -o ions.tpr
  7. gmx genion -s ions.tpr -o solv_ions.gro -p topol.top -nname CL -nn 1    
    選13 SOL
  8. gmx grompp -f minim.mdp -c solv_ions.gro -p topol.top -o em.tpr
  9. gmx mdrun -nt 4 -v -deffnm em
  10. gmx grompp -f nvt.mdp -c em.gro -p topol.top -o nvt.tpr
  11. gmx mdrun -nt 4 -v -deffnm nvt
  12. gmx grompp -f npt.mdp -c nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
  13. gmx mdrun -nt 4 -v -deffnm npt
  14. gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md.tpr
  15. gmx mdrun -nt 4 -v -deffnm md
  16. gmx trjconv -s md.tpr -f md.xtc -o md_0-1ns_noPBC.xtc -pbc mol -ur compact
    選1 Protein
  17. gmx rms -s em.tpr -f md_0-1ns_noPBC.xtc -tu ns -o rmsd.xvg
    選4 Backbone、再選4 Backbone
  18. gmx gyrate -s md.tpr -f md_0-1ns_noPBC.xtc -o gyrate.xvg
    選1 Protein
  19. gmx trjconv -s md.tpr -f md_0-1ns_noPBC.xtc -o md_0-1ns.pdb
    選1 Proteins