在OSX下使用Atom來用LaTeX

學習LaTeX語言,且用其來寫書、文章、論文等結構性文體,一直都是一件很吸引我的挑戰,或許有人覺得用WYSIWYG工具(ex. Office)來寫便很方面,且現在Word支援數學公式的寫入。但仔細去學習後,會發現練習使用LaTeX其實能精進自己寫好“結構性”文章的能力,同時多體會一個語言背後的思維,哈不過也是一種自我約束的練習。

LaTeX是Donald Knuth所發明的排版程式語言,有完整的語法結構,Donald Knuth本身對於小細節是非常執著的電腦科學大師,而他所寫的TeX語言,基本這三十幾年改變不到,也就是一開始就寫得非常仔細,而學習一門新的程式語言最棒的地方在於去理解創造者背後賦予這語言的“哲學”,而LaTeX就是希望能讓書寫文字這件表達人類智慧的事情能更加“刻意”,你會因為要使用LaTeX,所以你會去注意關於文字呈現的眉眉角角。雖然需要花點時間學習,但算是為了讓自己更“organized”的刻意練習吧!另一方面,LaTeX中的很多語法和函數的用法,可以學到很多“古典”英語的詞彙,頗富趣味。

使用LaTeX寫好後的代碼,要經過轉譯才能形成最後的輸出,如pdf,因為我不想再多安裝一個專屬LaTeX的IDE,想盡量限縮我所使用的工具,後來發現Atom是一款不錯的工具,且搭配套件的話,基本上,可以完成編寫和轉譯的工作,這邊是目前整理起來的整個工作環境建置:

安裝LaTex:
-mac的用戶,安裝MacTex

安裝Atom:
點選連結

安裝Atom上的套件:

  1. latex-plus
  2. language-latex
  3. autocomplete-bibtex
    4.linter-chktex
    5.spell-check
    6.latexer
    7.pdfview

這邊用LaTeX來排個有名的小詩,超級…自我感覺良好的排版,可以當作是一種自我癖好。當然,這個技能可以幫助你創建一些很有趣的履歷模塊,也比較能看懂別人的模塊,並且自己微調。

screenshot.png

相關閱讀,有比較詳盡的介紹:Atom for LaTex Editing, Create Your First PDF With Atom and LaTeX

使用rprojroot改善麻煩的檔案路徑問題,以子資料夾結構取而代之

screenshot.png

在Jenny Bryan登高一呼,希望有人解決這種資料夾路徑總是要重設的問題時,這個rprojroot 便誕生了,他主要解決了路近依賴的問題,而使用sub-directory結構取而代之,本身是個簡單的package,但算是為培養好的reproducible coding踏出一步。

rprojroot要發揮作用的話,要建立在兩個使用者的好習慣:
第一個每個專案有固定的子資料夾結構,這我個人覺得很重要,專業素養便是從檔案管理做起,可以看下面的文章,對於如何管理好專案,裡面的建議頗受用

Managing a statistical analysis project – guidelines and best practices
R Workflow: Slides from a Talk at Melbourne R Users
Dynamic documents with R and LATEX as an important part of reproducible research
How to efficiently manage a statistical analysis project?

第二個願意系統性的寫好代碼(可能30秒能搞定的代碼,必須多花兩倍時間,為了代碼的嚴謹)

     假如使用者有上面這兩個習慣,這個包便可以幫助你的R代碼進步一點點,此包主要使用一個概念,便是為專案root資料夾設立“criteria”,藉由檢查當前的資料架內結構,是否為特定的形式如r package、r project,或是包含特定檔名的檔案。藉由這個criteria,來確定root路徑,而剩下的檔案便是用相對路徑來表示

這邊有示範的代碼:

library(rprojroot
#Make Criteria
root <- has_file("README.md")

#Fine the file
dir <- find_root(root)
data.path <-find_root_file("Data", criterion = root)

#True or False criteria
file.exists(find_root_file("Data", criterion = has_file("README.md")))

這邊則是我的放代碼的資料夾結構:
screenshot.png

所以使用這個包來設定檔案路徑,未來只要整個資料夾給要合作的對象,基本上,重新執行就不會發生問題。

探索資料庫應用(四):PharmGKB:藥物基因體資料庫

PharmGKB logo.png

PharmGKB資料庫主要是儲存基因變異與藥物反應的資料,此資料庫在2000年發佈,由NIH NIGMS所資助的研究計畫,為NIH Pharmacogenomics Research Network的一部份,資料庫目前是由史丹佛大學的研究團隊所維護。

PharmGKB主要藉由下面八類工作來建立此藥物基因體資料褲

  1. 建立基因變異和藥物與疾病的關係,藉由文獻回顧的方式
  2. 整理在藥理上重要的基因,並且針對其基因上的變異、相關藥物和影響的路徑做彙整
  3. 針對FDA藥物標誌上跟基因相關的資訊做整理
  4. 提供作為檢驗藥物基因體學領域重要問題的資料
  5. 根據所彙整的藥物基因體學資訊,來製作藥物劑量的臨床指引
  6. 藉由建立合作的方式參與將藥物基因體學應用於臨床的研究項目
  7. 發表PharmGKB的分析和註釋結果,主要是基因變異註釋、基於藥物基因體學的藥物劑量指引、
  8. 將資訊公開於網站上,且提供下載

經由上面八類工作後,PharmGKB會將結果以下面六類形式在網站上提供瀏覽或是資料直接下載

  1. Variant Annotations(Research-level annotations of individual publications describing the relationship between genetic variants and drugs; these are created on a paper-by-paper basis)
  2. Drug-Centered Pathway
  3. Very Important Pharmacogene Summaries
  4. Clinical Annotations (Genotype-based pharmacogenomic relationships summarizing all variant annotations regarding the same genetic variant-drug association)
  5. Pharmacogenomics-Based Drug-Dosing Guidelines
  6. Drug Labels with Pharmacogenomic Information

PharmGKB的資料是來自於公開的研究文獻,使用自然語言處理和人工註釋這些文獻後,整理成知識資料庫(Konwledgebase),這些資料可以用來當作藥物與基因變異(或多型性)的支持證據,而為了有效將這些資料整理成對於臨床有影響力的指引,PharmGKB成立一個協會叫Clinical Pharmacogenetic Implementation Consortium(CPIP),這協會主要負責擔任將PharmGKB中的資料整理成臨床指引,目的是幫助臨床可以有效地利用基因檢測的資料於藥物治療決策上。

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2017-01-04-%e4%b8%8a%e5%8d%888-17-16

那PharmaGKB裡面到底有哪些資料呢?主要分成六大類:VA(Variant Annotation), PW(Drug-Centered Pathway), VIP(Very Important Pharmacogene Summarries), CA(Clinical Annotations), DG(Pharmacogenomics-Based Drug-Dosing Guidelines), DL(Drug Labels with Pharmacogenomic Information)

這邊收集蠻多相關的資料,作為之後閱讀的素材:
1. CPIC的網站,裡頭資料豐富,甚至提供ppt素材,可以下載
2. PharmGKB網站,除了有原始六大類檔案外,還有一些guidelines可以下載
3. PharmGKB資料下載處

系統思考:Thinking in System

這本書系統思考是由唐內拉.梅多斯(Donella H. Meadows)所寫,其為系統動力學派創始人美國麻省理工學院 Jay W. Forrester教授的學生,其本身是化學系畢業,之後研究所則讀生物物理學,但他把整套如何研究複雜系統的方法來探討許多社會議題相關的。這本書則從定義系統、系統特性、動態系統的回饋機制談起,另一大部分則是這套系統應用到社會議題時會發生什麼事情,如系統的八大陷阱、十二項變革方式。

這本書算是系統分析的入門,好處是書裡沒有複雜的數學公式,以觀念為主,且因為唐內拉.梅多斯教授有非常多實務經驗,所以每一章帶進的新觀念都會以實例的方式來解說,吸收上可以很快速,且能應用到生活上。

分享一下書裡的概念,書的開頭先定義一個系統,一個系統基本上是由要素連結、功能組成。
舉例來說,在腸胃道系統裡,嘴、食道、胃等,就是所謂的要素,而連結則是這些要素間的關係,可以是物理上的關係,也可以功能上的關係,而整個腸胃道系統就是為了能達成進食這項主要功能而組成的,所以一個分析的開始,便是要釐清要討論的系統裡頭有什麼要素參與,接者在來探討這些要素間的關係,等這些資料都被備齊了,那麼便可以在看他們整體提供了什麼樣的功能或是達到了什麼目的。

為什麼系統可以運作順利呢?
因為系統發會了整體大於總和的效果,產生了新的特性,主要有三個特性:適應力、自組織、層次性

適應力:一個系統相對於單個體或是零散地組織,是可以應付更為劇烈的變動,因為其有回饋機制,在其中能平衡來自外界的輸入。
自組織:一個系統通常讓自身更為複雜,也就是藉由調控機制或是連結,以及簡單規則,常常能形成個複雜的結構,如基因的序列只有四個,卻從四個字母的排列組成行程複雜的生物基因體
層次行:越複雜的系統,通常會形成次系統,讓整體更加穩定,而次系統內要素間的關聯會遠高過次系統間的,如此便是為了讓整個系統運作更為順暢。

系統為何常常行為會出乎意料之外呢?
竟然我們掌握到整個系統的基本要件,那為何很多時候系統表現的結果,會讓人無法理解,這就牽涉到更廣泛對於所謂系統的思想,比如你是如何劃分要分析的系統邊界的,劃分邊界會決定所探討的系統很多特性,但邊界的存在也代表者你看不到的影響力,畢竟我們所劃分的邊界都是為了要簡化系統,達到分析目的而存在的,會去忽視掉很多微小的關聯,以及邊界外的影響力,所以你也無法確定觀察到的部分是否是系統的全部,是否有思考到系統裡的限制因素,系統中的關係為非線性的等,每個特質都使得系統行為可能會出乎意料之外。

閱讀完這本書,能賦予人一套較完善的思考架構,在做些分析時能有所依循。對於我來說,其中關於限制因素(Limiting factor)的思考讓我學得到很多。

常常我們在制定計劃,或是觀測系統的變化時,不喜歡考慮所謂的限制因素或翻為,但實際上真實世界的系統通常都是存在這類型的限制因素,限制因素的概念可以想成,達成某件事物所需的東西,根據德國化學家尤斯蒂絲。馮。李比希(Justus von Liebig)所提出的著名『最小因數定律』,有相似的概念。其中有句話很棒,『關鍵不是追求持續成長,而是選擇在哪些因素的限制之下維持生存』