• 談談我對計算化學代算的看法

    談談我對計算化學代算的看法

    文/Sobereva   2019-Aug-20


    時常有人在群里、論壇里,或者直接郵件問我,他要算***問題,哪里可以提供計算化學代算、哪里有靠譜的。我以前專門做過兩年多代算,接過的代算任務有將近90個,對于代算這方面我覺得我還是比較有發言權的,所以在此文我說說我對代算的看法。順帶一提,我早已不再接任何代算了,而是提供計算化學的培訓(見http://www.keinsci.com的“科研培訓”欄目)。授人以魚不如授人以漁,教會別人怎么做基本的計算,比起直接給別人算出來數據有意義得多。

    本文里我基本的觀點是:提供代算的機構里良心的極少。如果需要算的問題不是操作工簡簡單單就能完成的那種,應當去找專門方向的理論計算課題組合作,而不是去找代算,否則極可能花不少錢最后文章也發不出來。如果要算的是非常簡單、直白、只需要基本操作而幾乎不需要經驗和動腦的任務,與其去找代算機構冒著被宰的風險,還不如找圈子里的在讀學生或者淘寶上的人給你算,價格比較公道和透明(需要開發票的情況除外)。但我絕不是說所有代算機構都是很黑或者不負責任的,但如果你問我哪家是良心和靠譜的,反正我是不知道,無法給予答復。

    下面我先說一個最關鍵的問題,即代算到底靠不靠譜。然后在第2節再說一些找人代算/給別人代算需要注意的事情。計算化學的面非常廣,本文在討論時我主要從我代算經歷最多的量子化學角度來談,對其它類型代算大家也要注意類似問題。

    另外,在筆者的QQ群里的聊天中,看到有個人差點被山寨代算機構騙了1500塊錢,我相信這絕對不是個例,強烈建議大家看看,了解一下不懂計算的人找亂代算有多么危險:《外行人別輕易找量子化學代算》(http://bbs.keinsci.com/thread-19519-1-1.html)。更糟糕的是,亂找代算,可能發票也拿不到,自己的錢白打了水漂,還弄得一肚子氣,這是群聊里的一個截圖:


    1 代算到底靠不靠譜?

    代算絕對沒有很多不搞理論計算的人想象的那么簡單!!!

    計算化學能從深層次探究、闡明大量光靠一般實驗手段弄不清楚的問題,現在想要發高IF的期刊,光靠純實驗越來越難,將理論計算結合進去的必要性越來越高。理論計算絕對不是像某些搞實驗的人想象的那么容易。理論計算在我來看,由易到難可以分為三類:
    (1)簡單體系的計算一些很簡單的任務。比如計算HOMO/LUMO能級、計算偶極矩、優化分子結構、繪制分子表面靜電勢、計算電子激發能、計算紅外和拉曼光譜等等。如果被計算的體系簡單的話,算這些確實很容易,給高中生培訓一下都能算。
    (2)牽扯到亂七八糟問題的常見體系的普通任務。即便計算上述這些司空見慣的普通問題,碰上復雜的情況考慮起來很麻煩,涉及到一堆坑。比如一個柔性分子,可能有很多構象,對偶極矩、分子結構、電子光譜影響往往很大,怎么去恰當考慮?有時候溶劑效應對UV-Vis或ECD譜的影響不是寫個關鍵詞就能充分體現,需要考慮顯式溶劑乃至動態效應,怎么恰當去搞?算熒光是常見計算問題,可有些體系熒光不是那么簡單,可能從S2發射,也可能從S1不同極小點發射,溶質分子可能形成多聚體而明顯影響發光特征,這一大堆亂七八糟的因素怎么充分考慮使得結果能和實驗對上?
    (3)復雜、綜合性需要探究的任務。比如做實驗的人想解釋一個實驗現象,讓一個做計算的人去研究,那里面牽扯到的計算步驟、需要反復思考/琢磨/嘗試的地方、需要查閱相關的理論計算和實驗文章太多了,難度高的甚至要做幾個月甚至半年。還很有可能受限于當下計算方法學和計算能力,以及研究者自身經驗水平,最后白忙活一通,最終也沒能讓算出來的數據充分解釋/支持實驗。像這種較復雜的研究,通常都可以作為一個獨立的paper的素材。

    現在有些代算機構各處打廣告提供代算,好像顯得神通廣大無所不能似的,還弄個像模像樣的代算任務表格交由需求代算的人填寫,顯得好像很正規,似乎按照他們的“流程”就沒有他們算不了的問題似的。這種,作為理論計算的內行一看就知道不靠譜!要明白代算機構絕大多數都是沖著錢去的,代算是商業行為,錢賺到了目的就達到了,能有幾個代算機構是真心想著幫助你的文章能順利發表到好期刊?前面說了理論計算有那種很簡單的,這些機構確實能快速給你算出正確、有用的數據,但是由于你不知理論計算的深淺、不同問題所需計算量的大小和計算步驟,沒良心的(也是大多數的)代算機構會利用信息不對稱宰你一刀。可能在網上找個計算圈子里的學生,兩百塊錢就能給你算的簡單數據,那些機構要一千五乃至兩千多(這不是瞎說,之前群里討論時有人說,某機構算個分子軌道居然收了兩千塊錢!)。

    而對于前面說的那種更復雜的、需要一定經驗、得考慮構象/溶劑等等亂七八糟效應的計算的情況,代算機構能給你的數據的可靠性就很難保證了,主要原因之一是你往往太好騙了,你不懂怎么計算才是真正合理的。比方說,你給代算機構提供了一個藥物分子的結構,讓他給你預測溶液中的電子光譜,然后過些天,你拿到了結果,由于光譜乍看起來沒有硬傷,你覺得挺滿意,把錢交了。然而,你可知他在計算時候怎么算的?計算流程合理么?用的計算級別恰當么?用的結構是穩定結構么(有沒有虛頻)?做構象搜索考慮了構象平均了么?用的什么質子化態算的?怎么考慮的溶劑效應?這些都不是小問題,一個因素考慮不恰當,算的結果就可能和實驗差相當大。對這樣的任務,若代算的人給你算出有價值的數據,不僅代算的人要非常懂行、有經驗,還需要他真的有良心才行。要是碰上沒良心的,他可能沒有考慮溶劑、沒有考慮構象平均、優化完了也不檢查有無虛頻、用一個很便宜的精度在內行看來很垃圾的級別做這些計算。這樣他自己省事了,比起恰當考慮那些效應/因素所需的步驟少得多,計算耗時低了幾百倍,然而算出的結果根本不準確。等你回頭把那個物質測出來實驗譜,你屆時可能會發現和算的結果相差極其離譜。可這時候,你再找人家說理,人家就不理你了,反正你錢已經交了。你若還想讓人家重算,人家會說,要算更高精度數據太復雜啦,完整考慮那些效應你得再交***錢(可能是最初人家給你報價的5倍以上,是你無力支付的)....

    前面還說了,有些問題是復雜、綜合性的問題,比如解釋某個搞實驗的人想不明白的實驗現象、通過計算推測個復雜反應的機理。這種問題想讓代算的人通過理論計算給你解答,完全是異想天開。前面說過,這等問題的計算研究,那都是可以作為單獨的純理論計算paper的內容,通過計算把這些問題搞清楚了可能都能發個3區乃至2區的期刊。而代算機構的目的是賺錢,哪有工夫“幫你搞科研”、“幫你發文章”?不搞計算的外行人,不知道理論計算什么能行什么不能行、適合什么不適合什么,以為把復雜問題直接丟給那些“萬能”的代算機構就直接能解決了,這是何等的天真!無良的代算機構,接到這樣的可能完全超越他們自身能力或精力的代算任務時,為了能賺錢,往往也會不負責任地拍著胸脯說:“沒問題!能算!價格是***”。然后呢,他們會做一些計算,一旦發現棘手的情況(比如很優化難收斂、虛頻消不干凈)、碰見不理想的計算結果(比如電子光譜和實際差了50~100nm)、發現得到能用的結果需要用極其昂貴的級別(比如確實需要用很貴的CCSD(T)或費事的多參考方法算)、遇見算不出來的問題(比如試了幾把還找不到過渡態),他們絕對不去去花精力和計算資源想辦法給你算出來、把問題圓滿地解決,而是會瞎湊合一下;而遇到解釋不通實驗的地方,他們也不會去花時間給你調研文獻、反復琢磨,而是稀里糊涂瞎弄一下,湊湊數據胡解釋一通就算交差了,嚴重的情況甚至可能偽造數據來和你提供的實驗數據或現象對上(人家覺得反正你也看不懂計算輸出,造假你也不知道。如果你要對方提供輸出文件以便你認識的內行檢查,人家可能說沒有保存,不給你)。所以啊,凡是號稱什么都能算的機構,碰見復雜問題,返回來的是什么鬼數據都不知道!可能最后你很不滿意,但如果你先交了錢或者先付了定金,那就打水漂了,一般都要不回來了,人家會說人家都已經給你花精力和機時算了,無法退款。還可能騙你說算的數據不好是因為目前理論計算領域的發展至多只能算到這種程度、沒法算得更好了,你由于不懂計算,也只能信了。如果你去問內行,內行人指出代算機構是胡算瞎算,或者審稿人明確指出他們的計算明顯不靠譜,當你要求他們重算的時候,8成就聯系不上他們了,或者根本就不再理你。

    代算這么多坑,那么,什么樣的能代算?什么樣的不能代算?綜上所述,前面提到的第(1)類問題是可以代算的,找誰算基本都差不多,本身不需要代算者有很豐富的經驗和責任心,也沒有太大的門道。這類代算就類似于測試中心,你給個樣品,對方按照標準化的操作流程測試出各種數據,結果是什么就是什么,也不存在太多可產生爭議的地方(但是即便如此,也不能找太不靠譜、太新手的人給你算。沒準你讓他算個某有機分子的HOMO、LUMO能級,他直接拿ChemDraw畫出來用Chem3D生成一個粗劣結構,然后用巨垃圾的HF/6-31G級別算個單點任務然后給你結果)。

    如果不屬于上述第(1)類的代算,而是那些確實有一定水平且負責任的人才有可能合理計算的任務,我不建議找人代算(因為能得到可靠、合理數據的幾率不高),而是最好找理論化學課題組合作發文章。有一點極其關鍵:只有文章里掛上對方的名字,對方才有可能真心實意地、花精力和腦力認真去做這個計算任務!因為這文章既是你的也是他的,他必然得對他算出的數據負責;也只有他算的數據可靠、準確,最后文章也才能發到較好期刊上。找這些理論課題組合作一點都不難,因為如今國內做理論計算的人非常多,而且增速迅猛,師生加起來得有好幾萬。你可以在相關的論壇(如人氣最高的計算化學論壇“計算化學公社” http://bbs.keinsci.com)里發帖求合作,或者去看主流期刊里的國內高校和研究所發表的和你研究的問題有關的計算文章,通過通訊作者的郵箱聯系他們。

    這里給個有代表性的例子,讓大家看看隨便找代算有多坑(原帖http://bbs.keinsci.com/thread-25694-1-1.html)。有人要算這么個問題

    下圖是代算給他計算用的模型,在內行人眼里完全就是個笑話,就那么一丁點簇結構還能近似表現固體表面?真是找人花錢算出個笑料!遇到內行審稿人,這計算100%會被嚴重質疑、要求重算,而就算碰到的審稿人都是外行,從而文章僥幸發表了,這也會成為自己科研的污點,被文章讀者們笑話。


    2 代算的其它問題

    寫含有計算內容的文章的時候,顯然得對計算細節進行描述、對計算的結果進行恰當的分析討論。如果你對計算一竅不通,讓別人代算的話,別人光給你計算結果、圖片是不夠的,應當要求對方把你的文章computational details段落也寫出來,并且里面插入恰當的要引入的文獻,否則文章肯定發不出去,審稿人會讓你補充這部分內容。另外,由于你對理論計算的知識可能很缺乏,在對計算數據進行分析討論的時候可能需要代算的人輔助。但代算的人一般不愿意無償協助你寫文章的這些部分,如果沒有事先約定的話,在這方面向你額外收費是正常的。所以如果需要代算的人在你的文章撰寫階段提供幫助,應當事先跟人家說好。

    在文章投出去之后,往往審稿人會對你文章里的計算的方法學或者相關分析討論有所comment,或者讓你補算一些數據。有良心、能給你靠譜數據的代算的人,會在這個階段給你提供幫助,協助你回復審稿人的意見,但這嚴格來說不屬于代算的人的“義務”。所以,在代算之前,應當在回復審稿意見這方面進行約定,是否收費以及如何收費。這要是不說清楚,到時候代算的人不幫你回復審稿人,你覺得對方不負責任,而對方又嫌你粘人、煩人,覺得明明給你算完了怎么你還有一堆破事要糾纏他。

    計算中用到的程序版權問題是要重視的。大量主流計算化學都是收費的,比如量子化學計算最常用的Gaussian、第一性原理領域常用的VASP,分子動力學領域里知名的Amber等等。如果代算的人用了這些收費程序,你肯定得在文章里說明用的是什么程序,若你自己沒通過正規方式購買程序的版權,那么文章發出去之后,被開發者知道,有吃官司、被要求撤稿、進入用戶黑名單以后再也無法購買程序的風險。那怎么解決版權問題?無非就這四種
    (1)發文章前老老實實購買使用版權。購買方式大多數情況都會在程序官網上寫明
    (2)找個有版權的人掛名
    (3)事先要求代算的用免費的程序給你代算。比如量化程序用ORCA,第一性原理計算用Quantum Espresso或CP2K等
    (4)如果你用的程序如Gaussian已經有學院里的人買了site license,整個學院的人都能合法使用,你就不用再買了,你得向同事或者代理商打聽一下有沒有買過site license。
    當然,還有一些不可描述的解決方法,由于嚴格來說不合法,或者過于投機取巧,我就不說了。

    順帶一提,有一些代算機構,在宣傳信息里標榜“正版軟件授權”,還對找他們代算的人說“只要致謝了他們就可以”,這完全就是在坑害對方!可能最終對方會被這種不負責任的說法坑得很慘!這些代算機構,他們不是官方代理,程序開發者根本都不知道他們是誰,他們說致謝他們一下就不用花大價錢買程序了?明顯是開玩笑!代算方買過使用版權,絕對不代表給別人代算的時候別人也等于有合法版權。倘若用戶只要致謝一下有版權的某人就能解決版權問題,程序開發者得少賣出去多少份copy,損失得多大?你覺得官方開發者能答應么?我前面說很多代算機構很不靠譜,就想著多接代算多撈錢,這從某些機構關于程序版權的這種不負責任的發言上就可見一斑。如果你真覺得致謝一下有版權的代算方就不用買程序了,最起碼,你得去程序官網上查詢客服的電子郵箱,發郵件向官方問清楚這樣是否屬于正當行為。可能有人心想,我也沒買程序使用版權,但是之前發文章時用這程序不是一直也沒事?可別心存僥幸,這就跟酒駕一樣,沒逮著什么事也沒有,一旦逮著就是大事!

    關于代算的價格,這是一個很不透明的區域,目前代算機構極少有明碼標價的。由于現在代算機構還不算多,競爭還不太激烈,不同類型任務算不同類型體系是什么價格也沒有一個一般化的標準。代算機構普遍想著多撈錢,因此宰人現象嚴重、頻發。如果你真的必須去找代算機構,建議你多問幾家,也可以去理論計算的群或者論壇里問問內行,看看內行人對那些機構的報價如何評價,如果水分太大一下子就會被內行人拆穿。如前所述,筆者當年也做過很多代算,當年筆者的定價是這樣的:http://www.keinsci.com/fee.shtml。當然了,近些年通貨膨脹極其厲害,如今的報價不能與當年同日而語,但是以我的評價標準來看,如果對方給你的報價比起這個網頁里高得太離譜,比如高三四倍,那就很坑爹了,你可以輕易從量化計算學術交流群或者論壇上找到要價低得多的同樣能給你做代算的人。另外,我認為以上面這個頁面里這種形式給出報價,是靠譜的代算機構的應有的作風。決定代算花費的關鍵因素是什么?顯然就是計算量和人力的付出。這就像修手機,需要更換不同配件都有不同的價格。我認為,但凡靠譜的代算機構,都應該制定這樣一個價目表并且掛出來,明碼標價,一方面顯示出代算提供方有專業性,是內行、靠譜(黑心機構肯定不敢這樣暴露自己的收費標準),而需要代算的人看了也更放心,不用擔心對方會漫天要價而被宰。

    現在有很多人提供私人的代算,比如淘寶上一搜就能找到不少。那些代算的,可靠程度如何我無從判斷,但似乎整體價格還可以,大部分不黑,畢竟要價都是公開的,大家都可以互相對比,所以水分不會太大。但私人代算有個問題就是不一定能開發票,而大多數人代算肯定都是要開發票報銷的,這點得事先考慮好、問清楚。

    由于我之前做過大量的代算,作為提供代算的一方,我對一些問題也深有感觸,所以這里我也從給別人代算的角度,給提供代算的和需求代算的人提一些意見和建議。
    (1)對需要代算的人,應當給其交代清楚具體計算流程,這樣收費比較透明,減少之后可能有的爭執。對于很多問題,有的計算流程和計算級別精度高但耗時高,也有的精度低而耗時也低,需要代算的人不知道這些,代算者有義務讓對方結合實際需求和可接受的花費進行選擇,并且提供指導意見。別為了代算時候省事就都給對方用簡單便宜的計算方式,到時候對方發文章的時候可能被審稿人嫌棄,回頭還得重算。
    (2)需求代算的人不要向代算者提一些無理、不合基本邏輯的要求,否則會令代算者很為難。比如之前我接過一個動力學模擬的代算,算一個分子多聚體,明明跑出來的團簇結構就是橢圓的,從分子結構特征、相互作用角度來說都是很合理的結果,可對方偏偏非要跑出來圓的,完全莫名其妙,也不知道是出于什么極其特殊的理由。于是我只能從軌跡里取一個看起來最接近圓的一幀給他,他滿意地接受了(雖然這從計算角度來說說不通,但對方非要這樣的結果我也著實沒辦法)。
    (3)向代算的人提出代算要求時,不要隱藏已知數據、隱藏自己對結果的期望,而是應當把盡可能多的信息、自己希望要什么結果都一次性說清楚,免得之后有爭執,而且一定要確定自己給代算的人提供的信息是正確的,免得對方做無用功。比如我之前給別人算了一個有機分子的熒光,本身算這種過程不麻煩,按照一般討論就是優化S1態,然后取最后的激發能和振子強度繪圖就完了。本以為這個過程花不了多少時間,于是就接了。等到都算完了,對方才說算的結果和實驗差得較多,而事先他也不說他們已經有的實驗結果是多少。于是我之后又花了很大精力嘗試其它計算方式,查看相關文獻,折騰一番后終于發現問題在于對方提供的分子結構本來就是錯的,在他實驗的溶液環境中那個分子的質子化態和他提供給我的結構根本就不符。最后對方又追加新的要求和數據,弄得我又得給他考慮S2、內轉換問題,還算旋軌耦合,最終給他算的內容比起他一開始說的“我要對xxx分子算個熒光”麻煩、復雜了至少10倍,早知道需要花我這么大精力我都不接這任務了。還有一次,對方讓我算個抗凍蛋白,還給我了我一個文獻,讓我照著做類似的計算。我明顯覺得那篇文獻的做法不甚合理,模型過于簡單了,我也給她提出了我的看法,但她的意思就是讓我那么做。等到真給她做完了,她又嫌結果不能說明問題,最終害得我不得不用更復雜、考慮更周全但也費事的多的方式給她算。她要是早說就是需要解釋實驗現象,我就完全沒必要按照她提供的那個文獻的做法算了。還有一次,對方要求算個有機大分子的軌道圖形,大概收費是兩三百,本以為挺簡單的事,把作完的圖發給他,他又嫌視角不好,改了視角,又嫌配色不好,折騰了半天才完事。對圖像配色、角度有那么多零零碎碎的要求,干嘛不事先說清楚?如果語言說不清楚,直接拿文獻里的一張圖作為例子不就好了?
    PS:我代算定價一直比較良心,不靠這個業務獲取任何暴利,而且我對代算出的數據相當認真負責,這也導致我做代算花精力多但又不帶來太多獲利,再加上上述令我不愉快、煩心的情況,以及偶有碰見一些胡攪蠻纏的人,令我最終決定把代算業務給徹底砍掉了。
    (4)要和代算者商量好計算產生的中間文件怎么處理。顯然計算過程涉及到大量輸入、輸出文件,還有一些其它的文件,比如軌跡文件、格點文件等等。這些文件哪些需要對方提供給自己,哪些不需要故對方可以直接刪掉,應該溝通好。比如代算的人用的是Gaussian,你若不告訴對方算完之后需要留著chk文件,原本那批任務算完了之后,你又額外要求對方給出分子軌道圖形、用Multiwfn做一些波函數分析,那人家還得給你重算一遍產生chk文件,屆時可能還需要為此額外向你收費。當然你可能完全不懂Gaussian,不知道這些細節,這種情況你就應當一次性把要算的所有內容完整告訴代算的人,這樣代算者可以規劃好流程。我覺得,如果代算的人不反對的話,你最好把他計算中產生的輸入、輸出等文件都要過來,這樣你可以參考著他的文件學習計算套路,也可以之后找內行人參謀這個計算是否合理,自己有計算常識的話也可以看看代算的人有沒有玩什么貓膩,而且利用這些文件也便于之后補算新數據。
    (5)以量子化學方式研究問題,必須把被計算的對象和計算條件明確到極致方能開始計算。因此,讓別人代算時,要盡量把要算的內容明確化,最好確切到具體算什么結構的什么類型的任務,而不是告訴對方自己想研究什么問題,因為這太含糊了。前面說了,代算的話,只有很簡單、內容非常明確的任務,找別人代算一般才是比較靠譜的,否則一方面容易被宰,另一方面如果對方水平不高,設計了不合理的計算流程,不僅你可能會為他算的無意義的數據白花不少錢,還可能最后算完的數據不能滿足你的最初要求。我覺得,如果你要算的東西不是那么傻瓜化、一兩步任務就可以完成的話,那么對代算的人最友好的表達你要算的東西的方式是直接給對方提供一個文獻,明確告訴對方,對于我的這個結構,我想要類似文獻里某某某數據,那就沒有任何歧義了,對方可以清楚明白你要算什么,他有了前人的文章作為參考也能更順利地算出來你想要的數據。
    (6)給別人代算時,應當事先跟對方講好整個計算中是否會涉及到收費的程序,對于程序版權問題應給對方合理的提醒和建議。否則對方拿了代算出的數據也沒法直接發文章,可能引起麻煩、爭議。

    最后,我想再說一下,對于那些很適合被代算的很簡單、標準的計算任務,我覺得盡量還是應該自己學會計算、自行完成(除非你僅僅是對當前的體系需要理論計算數據,以后再也不需要類似數據了,甚至根本不做科研了,這樣自己學計算確實沒必要。或者你其實也會計算,但由于機子太爛,只能找有較好計算資源的人代算)。用目前主流的量子化學程序做那些容易代算的任務其實真的很簡單,不用懂Linux,不用懂編程,不用很懂數學物理,高中生都能學會,有臺個人計算機其實就能順利完成那些計算(除非體系特別大、精度要求高,不得不用服務器)。參加4天時間的北京科音初級量子化學培訓班,對于常見量子化學計算任務包會,不僅以后自己需要用的數據自己都能算了,比讓別人代算省錢、省事得多往往還更省時,甚至自己還能給別人代算,賺一些外快,相關信息看《談談學量子化學如何正確地入門》(http://www.shanxitv.org/355)和北京科音官網http://www.keinsci.com的“科研培訓”欄目。至于那些比較復雜的計算任務,有的確實需要計算者在相關領域有較多經驗和知識,不得不讓專業內行幫忙算,但自己若有量化計算底子,看別人的計算也能做到心里有數,溝通起來順暢得多,用那些數據寫文章分析討論的時候也不會犯一些低級錯誤、暴露對理論和數據理解上的無知,回復審稿人的時候也不會感到茫然。

    久久精品国产99久久香蕉