跳到主要內容

發表文章

成長?

「十個男人七個傻、八個呆、九個壞」,若以上敘述為真,試推論男人又傻又壞但不呆的機會。 從前會在心裡暗笑這樣試著給死氣沈沈的題目包上一層糖衣,卻又包得各種尷尬,好像穿上不合身便服的臥底似的作法。每當看到這樣的題目,總覺得老師不夠意思:既然你知道這教材無趣到需要調味才能入口,那為何又做得如此半調子呢? 現在偶有教同事或新人的機會,整理起自己慣用的玩笑時才發現那可能並不是什麼半調子,只是開得了的玩笑脫不出我能唱的歌能說的故事的範圍;教材和題目貼近的生活也只能是我活著而留下印象的那種生活。 望著投影片發呆,嗅著它那淡淡的不合時宜的味道,等到它已熟成我卻還是想用這個把戲活絡氣氛的時候,從前的我就會好好的嘲笑著未來的我吧。
最近的文章

出類拔萃

如果時空是無限的,那麼一切可能發生的事情都已重覆無限次,並且將再重覆無限次。 在煩惱「有什麼事是只有我能做到的?」的時候,我對那個概念十分著迷:它強迫我接受 嚴格定義的獨特成就 這東西很可能是不存在的,而光是這樣的念頭,對於當時和十餘萬同儕攀著同樣一條蜘蛛之絲的我就已足夠心安。 那時我想像生涯如同溜滑梯,爬上去的路徑是一樣而擁擠的,但站上高處之後才是精采的開始,所以等到那時再煩惱就好了吧? 可是高處究竟在哪裡呢?在徐徐走著的路上,隊伍只有更為整齊而已,整個世界似乎是巨大的搶孤,太陽下不存在只有誰能做到的事,而只有誰都能做到的少數幾件事在高處成為爭搶的對象。 在那之後,我不曾在兩個極端間理出頭緒。不管拚著要搶先誰一步,或者是張望人跡較為稀疏的路本身都已讓人筋疲力盡,也只有在兩口喘不過的氣之間會問自己究竟在追求什麼,然後隨即嘲笑起自己:路是沒開拓出來的,爭先也沒拿下什麼,又何苦糾結呢? 可是,即使明白自己做不到,人總還是會想把自己嵌進某些更大的架構裡來提取意義吧。前些日子讀到 唐鳳約十年前實作 Perl 6 的嘗試 ,讚嘆之餘覺得這或許就是平衡點吧。一個有趣卻太有挑戰性的規格,在一個人發起的衝刺之下開始有了雛形。 那大概不是只有唐鳳能夠做到的事情,但即使有人能夠做到,他們終究是沒有去嘗試的;唐鳳也沒有完成它,他在中途似乎因為理念上或想法上的原因而離開,而 Perl 6 後來由另一個團隊重新實作出來,但正是這樣的轉折,使得他在當時 Perl 6 的開發裡的必要性變得更為明顯。 那麼我想做又只有我做得好的事情是什麼呢?

Run Seurat (a R Package) in a notebook interface on a server without root

tl;dr: Dependencies hurts when you try to set up R on server After a while of playing around, I’ll say the best way to use R with a Notebook-style interface on a server where you are no superuser would be using Anaconda, and then run R inside Anaconda to get whatever package you need. It is designed to run for a normal user, so there’s no need for superuser permission, and dependency issue is also taken care of most of the time. If you get the permission on server and are comfortable with R Studio, R Studio Server might be a even better option. That is because even if the packages are in Conda R , Conda Forge , or Bioconda , sometimes they are out of date, which might break dependencies, and conda skeleton and conda build unfortunately come with a lot of dependency issue as well. Besides, the visualization of environment and integration of documentation is better in R Studio for me. What worked for me starts from creating a new environment in Anaconda and install t

2017 歲末雜想

助理飄飄 好 的研究者每年大約要發表一到二篇 好 的論文, 好 的論文又常是報告新穎有趣的現象。然而這樣的主題並不常有,於是研究就如同淘金,對鑽探的主題的嗅覺和快速掃過潛在地點的能力都不可少。 助理可以推測礦脈,可以四處走走,但究其本質還是那個背十字鎬的人,價值來自於帶回來的金沙,而目前為止我屬於連黃鐵礦都尚未挖到的那一組。 這個圈子裡,老闆那對我可說是毫無來由的信任似乎是稀缺資源。我還不明白這個 圈子 有多大,但或許是整個國家吧。當事情被分為簡單和困難並且分別定價之後,困難的事情就突然變少了。 ____ 只不過是把 ____ 拿去 ____ 而已,不是嗎? 從近期勞基法的紛擾來看,我們的社會似乎是這樣看待大部分的工作的,所以只要隨便找一個人就可以填起這個空位,也因而沒什麼價值,可能甚至不配被當做 人 ? 我想這些事終究還是互相的。大人們越是小看一件事,做事的人多半也就跟著看不起這件事,這件事終究會收斂在勉強能動的恰恰不合格狀態。有些人稱之為 異化 的,就是這樣的現象嗎? 很幸運能夠棲身在不必為「我把你們當人看」而費盡全力的地方,可即使是這樣的地方也無法自外於下滑的螺旋吧。 學習 說起人生學習密度最低的時段就是醫學系的七年了,做為很能配合傳統制約的標準化 好學生 ,醫學系那能用的東西不考,會考的東西沒用的懲罰系統有效的撲滅了我所有去了解什麼的嘗試。助理這段時間恰好是相反的,老闆撐起一方足夠自由的空間,在這空間裡的懲罰就只有用得上的東西卻不會而已。在自由中的確是略有怠惰,但能對學習和探索感到開心是不可或缺的復健。 這一年來摸索最多的是程式。程式對我有種奇異的魅力,可能是羨慕那種確實知道如何解決問題的姿態吧,但過去的嘗試大多在不知學來做什麼之下默默消失。今年搭配著各式各樣亂七八糟的實驗資料可供整理,終於是勉強的敢說自己會一點 R 了。照順序來說,拼湊出了一些東西: 自動加總螢光染色的統計報表 定量 PCR 圖表產生器 在別人的電腦裡弄了 Linux 虛擬機器 雖然理論上能夠自己分析公開的次世代定序資料集了,但速度實在太慢。使用 Linux 的經驗在後來轉用資訊室的伺服器時還是幫了不少忙就是。 電生理示波器總結圖表產生器 PubMed 摘要文字雲 雖然一直沒有搞定 Shiny 的設定

關於Gitk 在 MacOS Sierra 無法啟動一事

最近為了幾個整理資料的小腳本開始使用 Git 來做版本控制 ,假裝自己好像真的會寫程式一樣 。 自己摸索了一會,對於 Git 分支和提交的概念雖然覺得可以想像,不過實作起來又是完全另一回事,每次要提交或放上 Github 都是幾番 Google 以上的工夫。這時看到 這樣的文章 格外的認同。 是啊,終端機界面真的是太黑太危險了,我還是把圖形化的 Gitk 叫出來看看吧。 於是我就 gitk 了一下,發現它崩潰了。 然後又再 gitk 了一下,發現它還是叫不出來。 嗯,看來不是打開的方式不對,是它整個都不太對勁,再一查發現 StackOverflow 早有人解決這個問題。於是先裝 homebrew 讓自己感覺彷彿像學程式的 ,然後 brew cask install tcl 問題解決,不過我反正也沒更新腳本,所以即使 Git 能用了我也沒東西試 (´・ω・`)

第一次的 StackOverflow

今天為一個用 R 畫畫的小腳本第一次到傳說中 的萬事屋 StackOverflow 去 發問 了,謹為文記念。 在我一拐一拐學著 R 的過程中,帶我前進的拉力的成分幾乎全是 StackOverflow (至於推力嘛,當然就是在實驗室生活中越養越肥美的懶病),如果沒有它,我想寫出來偷懶的腳本十個有十一個會寫到 library(stringr) 就結束囉。 今天的問題來自之前為了把電位測定的紀錄畫成圖而寫的腳本,是個裡面充滿巢狀的 for - loop 迴圈的恐怖玩意,它雖然會動但因為難以讀懂所以也不太可能再加功能進去。無奈我發下豪語說「啊,這個反正用 R 弄很快」的那個心血來潮只生出個別樣本的電位圖,至於總結的摘要圖當時就沒做了。 不過說到底,最重要的根本就是總結圖…… 動手改的過程當中對於執行速度之緩慢感到不耐煩,想起之前看過的 讀取速度比較 文,我決定歸咎給最開始的 read.table() 跑太慢,目前讀一個原始檔大概要花十秒。 開開心心的戴入 data.table 套件,我理想的流程是這樣的:把讀取的部分用 fread() 重寫一次,然後進到後面的迴圈海整理出可讀的版本再往下做。事實上…… Error in fread( "test.txt" , fill = TRUE , sep = "\t" , quote = "" , header = FALSE ) : Expecting 3 cols, but line 258088 contains text after processing all cols. Try again with fill= TRUE . Another reason could be that fread 's logic in distinguishing one or more fields having embedded sep=' ' and/or (unescaped) ' \n ' characters within unbalanced unescaped quotes has failed. If quote=' ' doesn' t

心血來潮的定序分析:Linux安裝

我想嘗試的 ChIP-seq 分析流程是這樣的: 取得需要的定序資料:從 GEO Dataset 下載 把載來的打包檔案 (.sra) 轉換成可分析的原始資料 (.fastq):使用 SRAToolKit 確認定序品質: FastQC 排除品質不佳的資料: FastX Toolkit 將定序結果對應到參考的基因組上: Bowtie 2 整理對應完成的資料: BEDTools 尋找訊號峰值(是說中文維基百科上 這個條目 竟然就直接用英文上了): MACS 依樣畫葫蘆的過程中發現,啊呀 FastX Toolkit 、 BEDTools 還有 MACS 都要在 UNIX-like 系統上才能執行,原因我也沒去深究,用現成的工具也不能挑剔這個吧。 所以只好試著 Linux 一下了,這次嘗試我選擇在 Virtualbox 虛擬機器裡安裝長期支援版本 ( Long term support, LTS )的 Ubuntu Server ,過程跟平常重灌電腦沒有太大差異,也不難找到 流程教學 。 選擇用 Virtualbox + Ubuntu 的理由很簡單:大家用什麼我就跟著用,碰到問題的時候能夠從 無窮之海的集體意志 找到答案的機會大一點。 在安裝的過程當中如果Virtulbox不讓你裝 64 位元版的 Linux ,那可能是 虛擬化 功能沒有啟動,可以尋找一下符合你使用電腦的 教學 來啟動這個功能。由於 32 位元的作業系統只認得最多 2 GB 記憶體,在動輒就用掉 5 GB 以上的定序世界是沒有 32 位元的生存空間的。 OK ,到了這裡安裝應該也差不多完成了,如果你好奇為什麼裝 Ubuntu Server 而不是 Desktop 版本,那是因為接下來用上的工具反正沒有圖形介面,不想裝用不上的桌面介面 ,而且直接對著命令列下指令感覺比較帥。 說到命令,很多人到這裡可能會對不熟悉的介面過敏起疹子之類的,不過說真的扣掉工具本身 靠複製貼上可以解決的 指令,只會幾個指令也能活得很好的。

心血來潮的定序分析:起手配裝篇

任何人有五百萬(定序深度)都可以參加慈善論文王大賽 想不到和電腦差不多,全基因組分析在生命科學所扮演的角色在數年之間從最新最炫最頂尖,直教人傾家盪產也玩不起的奢侈品成了如果負擔得的起的話就該來上一點的錦上添花,如果單看幾家豪門期刊,甚至都要有些標準配備的味道了。 這類的研究看多了就有些好奇除了作者們注重的結果之外的其他地方究竟是什麼樣子。畢竟全基因組的賣點就在全面嘛,光是秀個相關係數分布圖說「大部分都沒差啦」然後就開始花式特寫想講的東西,感覺就像是看旅遊生活頻道那樣沒到現場去總覺得有些空虛寂寞又遺憾。 可是次世代定序資料它比起相對好理解的微陣列分析,方法本身已經比較抽象,又搭配上花樣百出的免疫沉澱或者鹼基配對之類就更讓人眼花撩亂了。以前雖然屢屢有進大觀園的念頭,但這一類沒有明確的目的、只是想學點新東西的念頭在懶病下的平均壽命大概只有一天。 不過俗話說得好,懶能載舟亦能覆舟,最近因為手上的題目鬼打牆,其中一部分的線索或許可以在 GEO Dataset 裡面翻出來,當然想知道的事定序的原作者都沒提到 是說有提到的話我也不用做了 ,只好自己動手到別人的資料裡撈東西,畢竟這總比自己重做來得輕鬆 又便宜 。 這一動手不禁感到十足困擾,網路上能找到台灣的相關資料不太多,即使有也不少是展示性質的要嘛太細節、要嘛魔法一般;換用英文看倒也不是不行,不過英文資料又是千頭萬緒,找什麼都有,就是沒個起點可以下手;最後呢,能接受的指南竟然是在日文找到的 1 。 跟著跑完一次流程之後,我決定留個紀錄給自己備查,也或許有天會幫到打算以一種 IKEA 的氣勢來自家烘焙定序資料而開始 Google 的人,預設的目標是能對已發表的定序資料用現成的工具做一些探索。 那麼,就讓我們開始吧,在那之前首先低頭望向電腦: 你扛得住定序分析嗎? 因為 Linux 平台可以使用的現成工具資源比較完整,所以用虛擬機器來跑 Linux 做分析是不錯的選擇,目前嘗試中的幾個重要數字是這樣的,請自行估算分析資料的規模和可以忍受的耗時。 在分析 ChIP-seq 的時候,最瓶頸的時間大概是把定序片段對回參考基因組的步驟 2 ,一千萬個讀數 (reads) 的原始 .fastq 檔案使用 Bowtie2 來做排列的時間大約是: 一百個小時 (Core i5 2500 @ 3.30 G