龍五?龍舞!分享 http://www.ueservicedoffices.com/u/DaCaiNiao 行蹤常在云霄外,天下英豪我第一

博文

如何姿勢正確的使用他人代碼? 精選

已有 12889 次閱讀 2017-8-18 09:34 |系統分類:觀點評述

   按慣例講正事兒之前,得先說幾句無關的廢話,簡稱“慣正幾廢”。在很久很久以前,呃,其實也沒有那么久,那是2003年的事情。那時候我剛讀研究生一年級,一個學年即將結束,暑假沒有雜事自然是繼續加班。在過去的一整年里,我主要忙一件事情:繪制動點(kinetochore)蛋白質之間的相互作用網絡。動點是細胞中重要的蛋白質超級復合物,在細胞有絲分裂期間分別組裝在染色體兩側的著絲粒(centromere)上,負責連接染色體和微管,從而使得姐妹染色單體能夠在有絲分裂的后期順利的分離到兩個子細胞里。那時,蛋白質-蛋白質相互作用是整個生命科學領域最蜜汁熱門的研究方向之一,我的導師很希望搞清楚那時已經發現的上百個動點蛋白質之間究竟怎樣相互作用。作為當年實驗室里唯一一個做生信的學生,這個任務自然落到了我頭上。事實上在當時我的生信研究能力基本接近于零,除了滿腔熱血和用不完的精力,連個三腳貓的功夫也還沒有入門。因此這個問題,對于當時的我來說,幾乎是無解的。

所以我思考了半年之后,終于在暑假之前解決了這個問題:在PowerPoint里手工繪制網絡。對,你沒有看錯,手繪。雖然看起來亂糟糟的,但怎么說我也完成任務了不是?所以當我高高興興把畫的密密麻麻的網絡圖拿給老板看的時候,我猜想,導師會不會瞬間有種烈日灼身的感覺?老板看了很久,問了一個問題,那如果有新的蛋白質加入,你打算怎么辦?我毫不猶豫地答:重新畫一張。老板聽了這話當真是虎軀一震,瞪了我半天不說話。我一看,得,老師不滿意,那重新來吧。所以整個暑假就在忙這件事情,等到暑假結束的時候,冷不丁的讀到一篇Bioinformatics上的論文,是一位德國學者Ralf Mrowka設計了一個JAVA Applet小程序,用來顯示蛋白質相互作用網絡。所以我就給作者寫信,說你這個程序挺好,我能不能拿來處理我的數據?保證引用;匦牛罕M管用(Please feel free to use the applet with your own data)。后來我就拿這個程序繪制了動點蛋白質的相互作用網絡,拿給老板看,這回老板看起來比較滿意,然后提了兩個問題,第一是他覺得網絡節點的顏色不太好看建議我換一種;第二是他感覺節點太小,問能不能改的大一些。這兩個問題直接用人家程序解決不了,必須得改他的代碼。所以我又寫信給作者,說要您這源代碼行不?只用來從事學術研究;匦牛河脝h。代碼不長,總共也就1000行左右,咱拿過來按照需求在相應的地方做了修改,然后再編譯一下,然后就順利完成了老板交代的任務。

這個程序我一直很喜歡,并且保留至今。今天寫博客翻到以前的信件,順手還查了一下Ralf Mrowka的信息,發現這位仁兄已經是德國耶拿大學(Universität Jena)的教授了。找了一下他現在的聯系方式,寫了封信過去感謝一下。在后來的學術研究中,這個程序我用過幾次,包括人類蛋白質相互作用預測工具hsPPIP的構建,以及激酶-底物磷酸化網絡模擬等。其中第一篇文章里沒有致謝但有引用,為“We also adopt a Java applet program [7] (a modified version for hsPPIP)…”這個參考文獻7就是Ralf的論文,而且我也注明這是“modified version”。第二篇文章里沒有引用,主要是因為網絡的可視化不是論文的主要內容,正文里也沒有體現,所以在致謝里專門加了一句:“We thank Dr. Ralf Mrowka (Charite, Germany) for providing a Java applet for visualizing protein-protein interaction”。因此,在我的程序里,關于蛋白質相互作用網絡的可視化部分,這不是代碼相似,而是我就是在人家代碼的基礎上改出來的。因為用了別人的代碼,所以要么引用要么致謝,做研究咱得遵守學術規范啊。

================================================

講完廢話,咱講正事兒。前幾天咱寫了篇博客《BMC Systems Biology沒有學術不端》,主要是講了一篇2013年發表在BMC Systems Biology上的工作ppiPre,使用了Y同學設計的GOSemSim軟件包的代碼,但既沒有引用也沒有致謝,并且后續處理也不怎么好,所以就引發了一系列學術爭議。博客貼了之后,動靜不小,立馬有信過來說您咋摻和這事兒呢?我說這事兒我得說,第一,Y同學這幾篇文章里講到的事情,不是個例,許多人都經歷過類似的事情,既然這是個普遍的問題,我豈能視而不見?這幾天也和許多朋友交流過,我不能說所有,但幾乎絕大多數生信學者都碰到類似的問題,例如,C教授做了個很有新意的工作,還發布了開源代碼,結果論文發表幾年之后另一位教授發了類似的工作,做會議報告反復強調自己是原創。當然問題并不在于說自己是原創,而是這位教授在吹自己是原創的時候,C教授就坐在底下聽這位教授說自己是原創聽的臉色鐵青。J教授發現了一組特異的轉錄調控關系,后來老外基于這篇文章驗證了其中的一對轉錄調控關系,不引用也就算了還寫文章說自己是first,J教授寫信給期刊編輯,編輯再轉給作者,所以作者老老實實承認自己的錯誤,連個Erratum也沒有這就過去了。海外的O教授,2010年做了個工具,2013年有個老外的實驗室做了個類似的工具發表在頂級期刊上。后來O教授去這個老外所在的學校作報告,底下學生有質疑說O教授你不是抄別人東西吧?于是O教授很耐心的解釋,你看,雖然你穿越小說看得多,但問題是我這點兒工資想穿越回三年前也付不起票錢啊。后來O教授氣不過寫信給期刊的編輯,編輯說我們同意你的說法,然而審稿人沒提這個問題,所以我們就不出Erratum了。當然上述這幾件事情那都不叫事兒,去年兄弟我參加一個會議,居然看見有人做報告用我的ppt模板。當時我周圍幾個朋友都震驚了,說菜鳥這不是你整天用的那個破模板嗎?我后來跟朋友們解釋,這個吧,咱這個模板不錯的,當年結婚那會兒豆子媽嫌我做ppt用的模板太爛,專門給我做了一個,沒準兒這位報告人覺得不錯就拿過來用了呢,當然連個招呼都不打那是有點兒過了。所以這種事兒很多,國外比國內多得多。

第二,有人問了我一個問題,別人的代碼和軟件,“是調用合適,還是拷貝合適”?這也就是本篇要討論的重點問題:如何姿勢正確的使用他人的代碼或軟件?答:姿勢要正確,introduction里要有介紹,方法學里要有概括,人家論文你要引用,致謝里最好再寫上感謝XX大蝦仗義相助云云,這幾個您總得占上一個吧?啥?一個都沒有?那等著吧,看作者怎么寫信來罵你。乖乖道歉估計也就罵一頓,不夠乖估計Erratum是跑不了了。另外,使用他人代碼是否規范,并不能按照代碼相同或相似的比例來判定,GOSemSim做的是GO分析,ppiPre做的是相互作用預測,即使這兩個代碼相似度在99.9999999999%,那ppiPre也必然有自己獨到的東西,不然如何能預測蛋白質的相互作用?所以抄襲是不存在的。同樣的,RalfMrowka教授的小程序,是用來做相互作用網絡的可視化,我改了他的代碼來做我的研究,解決我想解決的問題,并且也得到了作者的許可,所以自然是符合學術規范。再有就是HPOSim、DOSimGOSim代碼相似的問題,有相似性或者有相同的地方,這是因為這三篇論文都沒有涉及新的語義相似性比較方法,都是使用之前他人設計的方法,其中HPOSim用了7種方法,研究人類表型注釋的相似性;DOSim用了10種,研究疾病注釋的相似性;GOSim用了3種,研究基因注釋的相似性。既然用了別人的方法,論文里不講清楚他咋能過得了審稿人這一關?所以這三篇文章在方法學里,都用了相當的篇幅來介紹如何用之前他人的方法來研究自己關心的問題,并且既然都是用之前他人設計的方法,這代碼如何能沒有相似之處?最后,GOSim并不是一個完全原創的工作,它用的3種方法也是之前他人設計的,所以從學術上來講,HPOSimDOSim可以不引用GOSim,HPOSim也不必須引用DOSim,可以看成是平行的工作,credit應當是引用開發這些原創算法的作者。

第三,學術有爭議很正常,學術不夠規范也很常見,但討論學術爭議,我們應當客觀,該是什么樣就得是什么樣。所謂的客觀,就是不管誰說,這事兒的性質不會變。舉個例子來說,咱讀研究生那會兒,逛論壇發現一個帖子,內容是有位學生說,他一篇文章同時投了18個雜志,然后問大家這算不算一稿多投?椿貜痛蠹业年犘魏芡暾,基本上都是答:不算。我和FF教授(當時的合作者)瞪著眼看這個帖子憋到內傷,然后不約而同都回復:不算。所以這里出一道送分題:有一稿18投,眾曰不算一稿多投,那究竟算不算一稿多投?

第四,我們做生信的,就是希望別人能夠用自己的東西,但對自己的東西也需要有很好的保護,例如軟件做出來要記得申請個著作權證書,網站、說明書和代碼注釋部分要寫清楚使用之后得引用等等,別人用了自己的東西如果既沒有引用也沒有致謝那得寫信去罵人,所以做研究要有耐心,沒有關系的,挨個罵反正人家不占理。再有就是盡量多和同行交流、多參加學術會議,大家都知道你做了什么東西,不引用的情況就會少很多。當然如果希望完全能夠避免此類事情,最好的方法是代碼不開源,只放可執行文件,或者做成在線工具或數據庫。例如我們組就從來不開源代碼,不開源代碼的原因在于,第一,我不能100%的保證我的東西不會被別人用了并且只字不提;第二,我們組設計的工具,潛在用戶是實驗學家而不是生信的同行,畢竟實驗學家的數量要遠比咱生信的人數多,實驗學家不怎么編程拿源代碼有何用?第三,我們對所有工具都是持續維護,用戶有什么問題寫信過來我們都會想辦法解決,并且實現到軟件里,所以代碼我們自己維護,就犯不著讓別人代勞了。

最后,我上一篇博文提出來之后,Y同學有回應《大學教授力挺抄襲為哪般- 回應BMC Systems Biology沒有學術不端》,另一位X同學也有話說《活久見,抄襲竟是重用他人代碼沒有致謝?》,一件事情各人會有各人的觀點,不同的觀點建議結合起來看,這樣會更清楚。本篇寫完之后也發給幾位朋友看了看,其中J教授說,

   “我們不是要去跟別人爭對錯,而是告訴大家怎么樣處理這個事兒,下回再碰到享用別人代碼的時候,該怎么做。找到一個代碼你肯定要先判斷,你覺得挺好的話,你要先判斷他是不是開源的。如果是開源的,人家允許不允許用這些都要先判斷完了,然后再修改,修改完了應該保留源代碼,并且在源代碼上必須要有注釋,這是從哪里來的等等。然后文章中致謝也好,引用也罷,這些都應該做。另外,有些可能沒有說明是開源代碼,那就要發信去問人家我能不能用,該怎么用,這些都需要遵循原作者的意見。再有,使用代碼的時候,是否有學術不端的應該這樣判斷,不能說我用了別人一個代碼做了一個東西,我就是剽竊,這個肯定是不對的。他只要是開源的,最多就是叫做疏忽,這個應當要非常明確!

http://www.ueservicedoffices.com/blog-404304-1071612.html

涓婁竴綃囷細BMC Systems Biology沒有學術不端
涓嬩竴綃囷細俠之大者•紀念郝柏林先生

15 馬省偉 趙克勤 楊正瓴 岳東曉 黃仁勇 文克玲 陸澤櫞 張明武 周春雷 鄒斌 李毅偉 韋玉程 劉永鑫 xlsd dachong99

該博文允許注冊用戶評論 請點擊登錄 評論 (22 個評論)

數據加載中...

Archiver|手機版|科學網 ( 京ICP備14006957 )

GMT+8, 2019-6-10 00:28

Powered by ScienceNet.cn

Copyright © 2007- 中國科學報社

返回頂部
时时彩平台