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)的研究平台,旨於提供生物學家建立基因調控網路的快捷之道。