交互筆記:共享你的思想
一種新軟件有望成為科學數據分享新利器
Titus Brown一邊飛行在太平洋上空,一邊深潛到學生的研究代碼中。從美國東蘭辛市密歇根州立大學到澳大利亞墨爾本參加會議的這次長途旅行,給這位生物信息學家詳細檢查實驗室的新運算法則以及去除RNA序列中的錯誤提供了一次良機。
3年前,Brown必須要等回到辦公室后才能這樣做,因為如果不經過其他研究人員的解釋,他很難潛入到他們的代碼中,并對這些代碼進行修改以生成新的研究結果。但現在Brown可以用一個免費的開放性軟件包在很遠的地方與實驗室的人一起工作,這個軟件包就是IPython,它可以幫助研究人員保存一份詳細的實驗室運算筆記。
Brown的學生寫出說明文本后,附上他們研究生成的原始代碼、圖標以及數據。然后,坐在飛機上的Brown就可以用電腦里下載的IPython筆記本應用程序零距離接觸到學生的研究成果。他重新運行代碼后,該程序就會直接執行命令并呈現出他正在閱讀的這份材料,讓他隨時看到他的修改是否有助于提高運算法則。“我可以通過瀏覽學生的筆記本,確切地了解他們做了哪些工作,然后進行修改,尋找不同的參數,提出不同的觀點。”他說,“在世界任何一個地方,我都可以進行這些操作。”
IPython 筆記本的設計目的是讓數據分析更容易分享和再生,目前用它來給科研做詳細記錄、設計教學模型以及與他人合作,其科學家用戶已越來越多。一些研究人員甚至會出版這些筆記本,來支持他們的研究論文。Brown就是其中之一,他也在推動著讓這個程序成為互動科學出版的新模式。
更好的筆記本
IPython筆記本應用程序是2011年由美國加州大學伯克利分校數據科學家Fernando Pérez和加州州立綜合科技大學計算物理學家Brian Granger帶領的研究團隊共同開發的。“開發這個程序是為了解決我們和其他研究人員以及教育工作者共同面臨的問題。” Pérez說。
Pérez 和Granger發現,數據科學家面臨一個棘手的問題:他們很難詳細地分享自己的原始代碼,或對其進行便于理解的描述,讓其他人在他們研究的基礎上有所拓展。其原因部分是由于很多涉及到大量計算的研究領域的科研人員都是以重復和零碎的方式寫代碼,因為每次分析都會出現新發現,丟棄掉研究中的多重思路。
記錄產生各種數據的每個不同版本的代碼并把那些文件和注釋筆記相結合,是個令人頭疼的問題。而發表后的成果對于跟進該研究的讀者來說往往不夠詳細。“在我從事的計算物理學工作中”,Granger說,“對論文中的運算法則作出高質量的描述與原代碼中所描述的詳細程度之間的差距通常要以光年來計。沒有那些細節,別人想要在一定時間內復制這個過程簡直沒門兒。”
IPython筆記本通過幫助科學家記錄他們的工作,使這些資料更容易分享,并讓其他人了解其代碼解決了上述哪些問題。應用程序名稱IPython中的“I”代表幫助用戶運行代碼、訪問變量,總結數據分析包裹以及了解研究過程的“交互性”命令窗口,而“Python”則指的是作為筆記本程序基礎的通用計算機程序語言。(Pérez,Granger及其同事現正在幫助用戶把筆記本程序轉移到另一項叫作Jupyter的項目中,該項目旨在讓IPython與包括 Julia和R在內的其他語言相兼容。)
代碼應用
在得克薩斯大學奧斯汀分校,Tal Yarkoni利用IPython筆記本在大腦圖像研究中進行自動化元信息分析,以發現參與語言過程、情緒變化以及其他大腦神經活動過程的模式。這位心理信息專家計劃把他的筆記和未來的論文一起發表。“分析越復雜,用一份完整的記錄來涵蓋和傳遞這個過程就越重要。”他說。
事實上,已經存在與IPython筆記本相似的各種代碼語言應用程序。比如在數學家中很受歡迎的商業分析軟件包裹Mathematica 和Maple就包含筆記本或類似筆記本的應用程序。 在信號處理、工程以及醫療圖像研究等領域使用量極多的商業分析包裹MATLAB也支持筆記本應用。而每種筆記本都有其相應的專業代碼語言。
在開放性資源領域,有很多筆記本和類似筆記本的程序。如knitr 使用的是R代碼語言,具有強大的數字分析能力;Sage數學軟件系統同樣基于Python語言,還支持其自帶的筆記本;Dexy是一個類似筆記本的程序,專門幫助用戶合并短文、代碼、數據和其他媒介中的信息,生成論文和講稿。
但Dexy創始人Ana Nelson卻表示,IPython筆記本是其中應用最廣的程序。“很多沒有聽說過其他應用程序的人都知道Ipython。”她說。不過,Granger 和Pérez并不知道有多少人在使用他們的軟件,他們僅表示主動使用該程序的用戶訪問其網站的次數大約在50萬~150萬人之間。Nelson表示,這是至今為止設計得最好的數字筆記本,其免費性及開放性吸引了很多用戶。該應用程序還因Python代碼語言受大眾歡迎而獲益,因為該編程語言在科學界擁有廣大的使用群體,他們會每年就此舉行國際會議,而且該語言對于入門程序員來說相對簡單易學。
盡管隨論文一起發表研究筆記的研究人員越來越多,但是讓科學期刊把這些資料作為完整的期刊文章的一部分來發表,還需要很長的過程。而目前一些IPython筆記已經作為書籍出版,很多教授還用這個軟件開展互動課堂。但到目前為止,這些筆記仍僅作為論文的附屬品來發表,經常被用來提供分析代碼和附加解釋的選擇手段。
“出版商仍然不認為他們需要整個研究過程。”Granger說。這些數據的版式可能過新,很難讓期刊把筆記本作為正式的文檔版本,如html或pdf版本。但是IPython已經開始和一些出版商就此對話。
從新手開始
很多IPython筆記本用戶都是技術豐富的程序員,但是專家正在幫助新手使用該軟件。大約3個月前,加州大學圣地亞哥分校博士后Yan Song在電腦程序使用方面還沒有任何經驗。她在分子醫學實驗室進行細胞研究,包括設計實驗、收集數據,而另一位計算機科學家則幫助她挖掘數據。
當他們區分各種神經元時,Song的任務是找出老鼠和人類干細胞中RNA表達發生的變化。以前,她使用Excel對比不同階段的細胞組織的表達模式。今年早些時候,她開始要檢測單個細胞以及細胞大小與復雜的RNA序列數據。她的研究不再像以前一樣僅僅分析幾組細胞數據,而是一次性對上千個細胞進行對比,每次要檢測大約1500個和神經發展相關聯的基因。
該實驗室生物信息學專業研究生Olga Botvinnik于是在IPython筆記本中生成研究結果,這樣Song可以對這些代碼進行分析。出于好奇,Song說:“它看起來是一個非常容易操作的界面,你可以給一行信息進行編碼,然后立刻檢驗它是否正確。”
通過在線課程和信息專欄的幫助,僅用了數周時間,Song就學會了一些基本的IPython編程技術,Botvinnik還列了一些菜單,讓Song用不同的聚類算法研究她的數據。盡管目前Song還要依賴Botvinnik的幫助進行大量運算和分析,但她表示自己已經開始動手分析數據,并用掌握的生物學知識檢驗一些特別的細胞或基因子集,在未來分析中她也在教Botvinnik這種方法。“以前我們倆用兩種不同的語言交流,我用生物學語言,而她用編程語言。現在,我們有了共同的基礎,可以更好地進行交流。這將加速我們的研究。”她說。(魯捷)
更多閱讀