2014年2月19日 星期三

如何讓NetBeans IDE進行除錯時看到作者提供的libraries中的程式碼

上一篇文章提到如何在NetBeans中開啟一個新專案,其中有提到如何加入Algorithms一書中,作者提供的libraries (stdlib.jaralgs4.jar)。今天來進一步說明一下,加入libraries時,可使用另一種方法,讓NetBeans IDE在進行除錯時,可以step into作者提供的libraries中的程式碼。

在NetBeans開好新專案後,一樣在專案名稱上按右鍵,進入Properites中修改,這次改選Add Library:


按下Create,然後鍵入一個新的library名稱,如algo4。然後利用"Add JAR/Folder"將兩個事先從作者網頁下載好的libraries選進來:

其實這兩個*.jar檔中還包括有source檔,因此,可到Sources的tab去做一樣的設定:

最後將algo4加入專案中:


好了! 回到專案中來,可以看到libraries被成功的加入了:


這樣就可以寫作頁了。今天我要做HW1-2,也就是WeightedQuickUnionWithCompression這一題。

先把之前寫好的HW1-1的程式碼copy過來,稍微修改一下,然後加入path compression的程式碼。 執行前,記得到Properties去設定要執行哪一個class的main function,也要設arguments。此外,藉機會補充說明一下,這裡還可以指定工作目錄,也就是放有輸入檔的地方:


2014年2月16日 星期日

102-2 PDSA HW1

執行NetBeans:

先開一個新的專案:

選Java Application,按Next:

取名字(e.g. HW1),設定專案目錄,不要自動產生Main Class:

新增一個java source檔:

取Class名字:

開始編輯WeightedQuickUF.java:
  1. 先到課程網頁去 (http://algs4.cs.princeton.edu/code/)
  2. 找到WeightedQuickUnionUF.java
  3. 可直接將程式碼copy and paste到你自己的WeightedQuickUF.java
複製完之後,你會發現大部分的程式碼都沒問題,只有main function中出現一些錯誤警告

這些錯誤的原因是因為作者使用了一些自己寫的libraries,因此,你會需要兩個作者寫好的library檔:
  1. stdlib.jar 
  2. algs4.jar
先將它們下載到你的電腦上,再從NetBeans中將它們放進你的HW1 project中:

增加library路徑:

過程中要選擇你剛剛存好的*.jar檔:

弄好之後,基本上程式就可以執行了。

但我們要稍微修改一下程式,讓它可以從檔案讀入資料,而不是等待你在執行視窗中一一敲入:

此外,你還需要解決另一個問題,才能順利地使用NetBeans IDE進行執行和除錯。因為剛剛加進來的libraries當中也剛好有WeightedQuickUnionUF,以至於debuging的時候,事先compiled好的WeightedQuickUnionUF反而被優先使用。因此請大家在class的命名時,加上My來區隔。

class更名的方法:請先將檔案中的WeightedQuickUnionUF反白,然後點選Refactor -> Rename,修改成MyWeightedQuickUnionUF,再按下Refactor,就能將檔案中該修改的地方修改掉:

除了修改class名稱之外,還有另一個解決方法,就是告訴NetBeans要優先使用我們自己寫的class,如:

大家可以試試看。

最後,為了能從指令列將檔名傳進去,請到Properties去設定專案的執行環境,提供程式所需的參數,也就是輸入檔的檔名,這裡也可以設定工作目錄,也就是放輸入檔的地方:

測試資料可從ceiba的作業區HW1中下載。

最後,請依規定繳交*.java檔到批改系統。

如果,未來有機會要與別人分享你編譯好的檔案的話(如*.jar檔),可考慮build project的時候,把*.java檔也一併包進來:

編譯好之後,*.jar檔(e.g. HW1.jar)會在你的專案中(e.g. HW1)的dist目錄中。拿到*.jar的人,不僅可以執行你的程式,也可以看到source code。

2014年2月7日 星期五

NetBeans IDE

這學期的"資料結構與演算法實務",我希望修課同學能使用Java programming練習所學的資料結構與演算法,為了讓大家(包括我自己)有效學習,絕對需要一個好的開發工具。

今天就先來試試NetBeans IDE,首先,NetBeans官方網頁(https://netbeans.org/)說:
NetBeans IDE is FREE, open source, and has a worldwide community of users and developers.

如果你同我一樣,還沒有JDK的話,直接下載有包含JDK的NetBeans IDE會比較方便,因此在這裡比較推薦Oracle網頁中提供的下載

http://www.oracle.com/technetwork/java/javase/downloads/index.html

請在上方連結的頁面中找到:

JDK 7u51 with NetBeans 7.4

This distribution of the JDK includes the NetBeans IDE, which is a powerful integrated development environment for developing applications on the Java platform. 

點選右方的下載鍵:
http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html

在這個頁面中,你可選擇自己需要的platform,比如說,我選的是Windows x86:
http://download.oracle.com/otn-pub/java/jdk-nb/7u51-7.4/jdk-7u51-nb-7_4-windows-i586.exe

順利下載後就安裝吧!!

2014年2月5日 星期三

c4Lab (2014) research map


近日花了一些工夫重新整理了c4Lab的研究版圖,c4Lab的研究核心問題是基因調控(gene regulation),目前所使用的生物系統包括四個模式生物(人類、小鼠、果蠅、酵母菌)與五個非模式生物(東方果實蠅、瓜實蠅、小菜蛾、沉香、綠豆)。

c4Lab是一個開發計算生物學(computational biology)研究方法的實驗室,過去十年的研究主力大多放在蛋白質序列分析(protein)與生物分子交互作用(interaction)的預測上,其中有一大部分的研究工作都致力於預測蛋白質與雙股DNA之間的結合(binding)。在這三個研究問題上,c4Lab所累積的核心技術包括:motif discoveryfunctional site predictionclassificationenergy functions等等。

在過去十年之中,微陣列晶片(microarray)技術是大規模取得基因表現(gene expression)資訊最主要的工具之一,模式生物因為有完整的基因體資訊,幾乎都有商用的基因晶片可以使用,有效地被利用來建立許多重要的基因調控網路(network)。在這方面c4Lab所累積的核心技術包括有:clusteringdifferentially expressed gene (DEG) discoveryassociation analysis等等。

生物體常利用少數調控因子(regulator)啟動或抑制一群功能相近的基因,透過尋找共表現(co-expression)的基因群,並利用序列特徵探勘(sequential pattern mining)尋找這些基因啟動子上游的共有序列特徵(motif),是建立基因調控網路有效的方法之一。除此之外,調控因子之間的交互作用(P-P/P-DNA/P-RNA interaction)也是高等生物中常見的調控機制,也因為如此,利用序列資訊預測各種調控因子之間的交互作用,也是c4Lab的研究重點之一。

過去五年間,由於NGS (next generation sequencing)技術成熟,大幅降低DNA定序成本,非模式生物開始享有過去只有模式生物才能擁有的研究素材,包括基因體(genome)與轉錄體(transcriptome)等序列資訊。其中,轉錄體定序(RNA-sequencing)提供非模式生物一條研究捷徑,它避開了成本相對來說仍比較高的基因體定序(DNA-sequencing)過程,直接取得轉錄序列(transcript)資訊與進行轉錄體定量(quantification)的動作,也就是說,轉錄體定序(RNA-seq)可跳過基因體定序與微陣列晶片設計的繁瑣步驟,是現行最被廣泛用來取得各種實驗條件下基因表現的研究工具之一。

也因為NGS的關係,c4Lab開始關注短序列組裝(assembly)與回貼(mapping/alignment)的計算工具,序列組裝與回貼的品質,將大幅影響蛋白質序列(protein)與其結合對象(binding/interaction)預測的正確性,也關鍵性地影響轉錄體定量(quantification)的精準度。

在研究基因調控網路時,因DNA變異產生的疾病(disease),或是因外在環境變化(stimulus)對基因調控所造成的影響,也一直是生物醫學相關研究關注的焦點,c4Lab近幾年間除了研究多種人類疾病中特有的基因調控網路外,也致力於研究基因的改變如何形成昆蟲的抗藥性與植物的抗蟲性。序列變異(sequence variation)可能改變調控因子(regulator)的特性,進而造成異常的基因表現(differential expression)。

未來,c4Lab將持續上述分析方法的開發,除了設計資料庫平台儲存實驗資料並處理之間的轉換(data flow)之外,也將致力於開發能有效將生物技術(technology)所產生的初始資料(raw data)快速轉換成有用的知識庫(knowledgebase)的研究平台,旨於提供生物學家建立基因調控網路的快捷之道。

2013年11月17日 星期日

c4Lab learning map


一般來說,生機系的大學部專題同學,會從IE開始,同學們在大一上的時候應該修過生機系的計算機程式語言,之後可考慮加修電機系的資料結構與程式設計或資工系的計算機程式設計網頁程式設計建議同學們自修,或選擇線上課程。c4Lab也可以啟動3~5週的網頁程式課程,大家一起學習HTML/CSS/PHP/MySQL

資料結構是銜接IECS的橋梁,建議上學期的時候選修資工系的演算法演算法設計與分析,然後考慮在下學期修生機系的資料結構與演算法實務,強化程式設計/資料結構/演算法三者之間的關聯性

對大量資料分析有興趣的同學(未來想到Google這一類的公司工作的話),至少要再選擇機器學習/資料探勘/人工智慧門課的其中一門,強化"從資料中學習"的基本概念,這個時期搭配選修一門機率統計學將更為理想。

對生命科學有興趣的同學,接下來的目標就是學習並設計生物資訊演算法(BI)想往這個研究領域發展的同學可以利用大學時期選修生物化學結構生物學概論或是一些與蛋白質功能相關的課程,諸如:分子辨識蛋白質化學及分子模蛋白質修飾機制與細胞訊息,加強對生物分子的基本認識(MB)

生物資訊(BI)的學習目標在於開發新的生物資訊演算法,除了得花時間熟悉現有的生物資訊演算法外,瞭解生命科學對資訊計算的需求(MB),是開發好的演算法的第一步,儲備應有的資訊技能(IE+CS)則更是不可缺少的第二,因此學習曲線相當長。開發生物資訊演算法幾乎沒有就業市場,有興趣往這個方向發展的學生幾乎已經快絕跡了,但基本上這是我對c4Lab所有碩班同學和博班同學的期待。

生物背景的同學,通常是從SB出發,因為有大量資料處理的需求,會選擇來c4Lab進行技術實習(rotation),因此主要建議學習的內容當然是BD,完整的學習NGS data (using Galaxy) microarray data analysis (using R),外加對biological databases的熟悉度,大約需要一整年的時間,目前建議選修的課程是:生醫資料探勘結構生物資訊學未來或許會有更合適的課程。台大校園內還有其他生物資訊的課程(如:生物資訊學導論生物資訊學),也是認識生物資訊方法與生醫資料庫的好管道。期間搭配一門統計應用軟體統計學之類的課程,將更為理想。

資訊背景的同學想對SB有進一步了解的話可以選修基因體與系統生物學學位學程的基因體與系統生物學基因體與系統生物學專題討論。瞭解SB對資訊計算的需求,也是BI研究領域的基本工。

若能把c4Lab的六大學習領域(IE+CS+MB+BI+BD+SB)全部搞定,就能成為地球上的稀有動物了。

近期推薦的線上課程:

2013年9月28日 星期六

Genome annotation

本週從MAKER2出發!

MAKER2於2011發表於BMC Bioinformatics,截至2013/9/28為止,在Google Scholar累積28篇論文引用之。在這些引用MAKER2的論文中,我們已經先看過A beginner's guide to eukaryotic genome annotation, 也用過了ParsEval: parallel comparison and analysis of gene structure annotations。其中值得閱讀的相關文獻有:

接著看PASA2,自Haas於2003年發表的工具PASA延續開發至今日的版本,近期主要的參考文獻有:
追蹤到SNAP與CEGMA:
ab initio prediction (e.g. Augustus)階段就加入RNA-seq資訊也是可以考慮的方法:
最後,另有一可能的解決方案,是直接從RNA-seq data著手:

2013年9月21日 星期六

NGS-based genome assembly and annotation

日前實驗室剛完成一個draft of a plant genome (including annotation)
所謂的draft,就是距離complete還很遙遠的意思!

決定務實一點,先將該pipeline應用於較小的genome sequencing projects (e.g. fungal genomes)
以下分享c4Lab為達此一目的所累積的線上學習資源(如需上課錄音檔的密碼,歡迎來信索取):
  1. 結構生物資訊學 week 1 (Sep. 9, 2013) Introduction to NGS
  2. Monya Baker, De novo genome assembly: what every biologist should know, Nature methods, vol. 9, no. 4, 333-337, 2012.
  3. 結構生物資訊學 week 2 (Sep. 16, 2013) NGS-based genome assembly
  4. Mark Yandell and Daniel Ence, A beginner's guide to eukaryotic genome annotation, Nature Reviews: Genetics, vol. 13, 329-342, 2012.
  5. 結構生物資訊學 week 3 (Sep. 23, 2013) Gene prediction
  6. JGI Fungal Annotation Pipeline
  7. PASA in the Context of a Complete Eukaryotic Annotation Pipeline (Broad Institute)
  8. 結構生物資訊學 week 4 (Sep. 30, 2013) Gene annotation
結束四週的課程後,緊接著,植微系舉辦了一系列的相關演講,歡迎大家踴躍參加:

地點:植微系一號館308教室

10/5 (Sat) 15:00-16:00
Diversity of a gene family encoding putative effectors in the rice blast fungus 
(Dr. Daniel Ebbole)

10/5 (Sat) 16:00-17:00
Basic bioinformatics: how to use PERL for BLAST search and SNP detection 
(Dr. Daniel Ebbole)

10/6 (Sun) 09:30-10:45
Genomic analysis of conidiation in the Ascomycete fungi 
(Dr. Daniel Ebbole)

10/6 (Sun) 10:45-12:00
Fusarium pathogenomics: understanding fungal pathogenicity through genomics 
(Dr. Li-Jun Ma)

10/7 (Mon) 09:30-10:30
High performance computing for life science (Bioinformatics pipeline at Univ. of Massachusetts) 
(Dr. Li-Jun Ma)