Re: [心得] 完全使用免費軟體的學術研究生活

看板PhD作者 (ives)時間6年前 (2018/03/01 16:40), 6年前編輯推噓45(450185)
留言230則, 10人參與, 5年前最新討論串2/2 (看更多)
※ 引述《caseypie (吟遊詩人)》之銘言: 恕刪, 我也有些心得想分享 : 領域:理論/計算生物物理 : 應用程式:Mac,不過大部分Linux也通用,不通用的我會加上Linux替代方案 : 十年沒用Windows所以不是很清楚通用情況 : 1.寫文章:Latex (TexShop) 我覺得TeX在這年代還能發光發熱,最重要的是能夠跟版本管理做結合 像是git搭配TeX很強大,寫個LaTeX可也搞得跟開發軟體一樣像在做工程 而且由於TeX文檔也就是純文字而已, 所以如果使用git的圖形界面或是GitHub,不同版本間的差異一目瞭然 如果是使用指令行界面,簡單的diff/vimdiff/git diff也很好用 尤其當合寫paper的人也用git跟GitHub時,合作寫作會變得很有效率 所以我強烈推薦,就算跟寫程式無關的人,只要有用TeX,也要學個版本管理程式 目前最流行的應該就是git了,然後再搭配個GitHub,就會非常強大 : 2. 文獻管理:BibDesk 我們團隊是使用I, Librarian ( https://github.com/mkucej/i-librarian ) 他的特色是團隊的資料庫是合併共享的,很適合團隊合作的project 另外所有資料庫(PDF/references等等)都是存放在自己架設的伺服器上 他不像其他文獻管理都是本地資料庫爲核心,然後使用者只是把資料庫上傳到雲端備份 所以I, Librarian提供的是伺服器端的程式,他本身並沒有本地的客戶端程式,也不需要 他所謂的使用者界面就是網頁罷了 使用者用瀏覽器去登入自己架的網站就可以使用I, Librarian了 他第一個缺點是使用者界面不好用,對用慣Mendeley或Zetero的人來說很難適應 而且畢竟只是php網頁,速度沒辦法跟Mendeley那種真正的客戶端比 通常只適合管理團隊共享的文獻資料庫跟產生bibtex,不適合直接使用他看PDF檔 雖然他也跟Mendeley一樣可以看PDF 寫筆記 畫重點等等就是了 第二個缺點是,雖然他是開源的,但是他缺乏詳細說明文件 因爲那間公司就是靠提供服務來賺錢,所以不會免費提供太多資訊 有點類似一間公司免費提供各式汽車零件,但是不會免費教你怎麼組裝一臺車子跟保養 如果不想付錢,就必須自己要懂一些架站跟管理的知識 尤其如果打算伺服器完全對外網開放,就那就複雜多了,要考慮很多安全問題 : 3. 數值工作:Python(Anaconda package) 很高興看到認同使用python取代matlab的同好 我們團隊一直致力於推廣使用python取代matlab 但是即使到這年代了,一堆科系大學部還是只教matlab,所以我們頗挫折的 在數值模擬領域,傳統使用C/C++/Fortran的人還是瞧不起直譯式語言 (但的確,python在高校能計算領域也只是剛起頭而已) 而就教學或入門級程式課程而言,很多教授還是覺得matlab是唯一,不願意嘗試新東西 我們系甚至發生過有教授得到好處,想要把大學部python課程改回matlab Python是一種程式語言,能做很多事,或者說想用來做什麼都可以(?) 在科研上,畫圖跟資料分析,原Po已經介紹了一些 基本上只要把握numpy, scipy, matplotlb, sympy, pandas就可以解決很多科研的事情 python的東西講都講不完,所以這邊我只想針對大規模的數值模擬 傳統上都認爲Python/Matlab/Java這類直譯語言跟高校能計算(HPC)無緣 但其實現在已經開始有python程式在超級電腦上使用了 去年一個計算流力程式,PyFR,成功在ORNL的Titan上,執行了使用超過1萬張GPU的計算 (Titan是2012年世界排名第一的超級電腦,現在第五名) 雖然PyFR這個程式用了很多trick,不是普通的python程式 而且需要Titan的工作人員做一些系統上的特殊處理後,才能達到效能標準 但是相較於matlab, 我還真沒聽過top10超級電腦裏,美國聯邦政府擁有的那幾臺,有哪臺跑過matlab程式 而至少python成功登陸這個直譯式語言的禁區了 (超級電腦耗電量很驚人,所以就聯邦政府擁有的超級電腦而言, 效能達不到標準的程式是不會被允許在超級電腦上執行,除非有管道走後門) 至於小規模的數值模擬,很多平行化模型都已經有python界面 譬如MPI有mpi4py,然後CUDA有pycuda,OpenCL有PyOpenCL 然後熱門的分散式計算的涵式庫,像是PETSc跟Trilinos也有python binding 也有像numba這種無需自己寫gpu kernel,就可以自動幫你使用GPU加速迴圈的工具 而非得寫C/Fortran kernel的時候,python呼叫這些kernel也很方便 畢竟早期python就被稱爲glue language,容易跟其他語言結合 如果對設計互動式教學教材或是想自動產生報告,則可以參考Jupyter Notebook Python很有趣,就算我們只針對科研來說,畫圖/數據分析/數值模擬都只是冰山一角 Python在不同的學術領域還有更多不同的應用,希望有更多人來分享跟推廣 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.206.47.136 ※ 文章網址: https://www.ptt.cc/bbs/PhD/M.1519893619.A.639.html

03/01 17:59, 6年前 , 1F
所以本文作者要否提供更進一步細節,例如入門教學網頁,
03/01 17:59, 1F

03/01 18:00, 6年前 , 2F
或者啥別的技術細節分享? 比方針對這裡提及的數值計算
03/01 18:00, 2F

03/01 18:00, 6年前 , 3F
或者其他啥的有助執行研究的功能?
03/01 18:00, 3F
我的確是蠻想寫一些git跟合作寫paper的經驗, 因爲這些經驗是我們團隊幾次合作寫paper時摸索出來的,不是直接從哪裏學到的 但我目前還想不出要怎麼跟完全沒有經驗的人解釋版本管理的概念 所以可能還有得等XD 至於python的東西,我覺得就像樓下m大說的,用關鍵字搜尋到的資料已足夠 如果找到的資料看不懂,那可能需要先入門python,入門可以參考 https://www.coursera.org/learn/python https://courses.edx.org/courses/MITx/6.00.1_3x/2T2014/course/ 如果想入門python特定在數值研究的應用,我們有設計3門結合python的學術課程 放在我們自己的mooc平臺上 https://openedx.seas.gwu.edu 分別是大學數值分析,空氣動力學,以及數值微分方程 這幾門課都降低了數學理論的比重跟深度,但是加強了python實作,對象是大學生 課程涵蓋了前述提到的numpy, scipy, matplotlib, pandas,以及一點numba 如果已經有數值分析背景,透過這些教材可以很快熟悉python 不想在mooc平臺開帳號的話,三門課的原始教材可以從下面網址得到 https://github.com/engineersCode/EngComp https://github.com/barbagroup/AeroPython https://github.com/numerical-mooc/numerical-mooc 這三門課本身就是使用Jupyter Notebook設計教材的範例 另外我們還有針對計算流體力學的12-steps to Navier-Stokes的python教材 http://lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes/ 但已經很久沒有人去維護教材裏的程式碼了,因爲這門課沒在開了 至於實務使用python在數值相關研究上的例子,除了PyFR之外 可以在The Journal of Open Source Software上找到很多:尋找用py開頭的程式 https://joss.theoj.org/

03/01 20:02, 6年前 , 4F
Bitbucket 可以private project for free
03/01 20:02, 4F

03/01 20:29, 6年前 , 5F
最近AI紅了點 python 又更熱門了
03/01 20:29, 5F

03/01 20:41, 6年前 , 6F
s大 這些東西都是只要有關鍵字 都能 google的
03/01 20:41, 6F

03/01 20:41, 6年前 , 7F
有些甚至你一輩子想搞懂一樣都有點難XD
03/01 20:41, 7F

03/01 20:42, 6年前 , 8F
我記得之前在一個seminar遇到J. Dongarra 他也在說
03/01 20:42, 8F

03/01 20:43, 6年前 , 9F
python這事 不過這主要還是跟社群有關
03/01 20:43, 9F

03/01 20:43, 6年前 , 10F
還有開發者怎樣應用有關 至於超級電腦上
03/01 20:43, 10F

03/01 20:47, 6年前 , 11F
python真的是菜鳥 而且就連PyFr也是站在別人肩上那種
03/01 20:47, 11F

03/01 20:47, 6年前 , 12F
比較像是作者自己說的framework
03/01 20:47, 12F

03/01 20:49, 6年前 , 13F
純Python還沒看到過 (我是c++派的 但我到是很支持
03/01 20:49, 13F

03/01 20:50, 6年前 , 14F
拿p當前端 paraview就是一個好例子
03/01 20:50, 14F

03/01 20:52, 6年前 , 15F
看來i大大您是作數值分析的XD
03/01 20:52, 15F

03/01 20:54, 6年前 , 16F
目前看了幾個案子還是C++還是大宗
03/01 20:54, 16F
我不是大大.. 我只是不務正業不專心做研究很久了,所以反而對工具使用很有心得.. 然後又剛好加入了一個對python還有open source很有愛的研究團隊... 其實我自己也是C/C++派,但是除了production code外,其他我都使用python處理 譬如後處理或是建立數值方法prototype等等 ※ 編輯: ives0228 (161.253.72.248), 03/02/2018 04:02:15

03/02 09:49, 6年前 , 17F
推 如果你要寫我可以幫補充一些git+latex(有需要的
03/02 09:49, 17F

03/02 09:50, 6年前 , 18F
話啦 從小烏龜用到svn再用到git 人生真漫長)
03/02 09:50, 18F

03/02 09:53, 6年前 , 19F
我是在用python亂搞 從後處理到網頁都用
03/02 09:53, 19F

03/02 09:54, 6年前 , 20F
最近還真的就是要用Jupyter Notebook 方便的話有問題
03/02 09:54, 20F

03/02 09:55, 6年前 , 21F
請讓我跟你討論這個啊 Q_Q
03/02 09:55, 21F

03/02 13:50, 6年前 , 22F
感謝捧場!當然沒問題阿~大家一起互相學習!
03/02 13:50, 22F

03/02 14:27, 6年前 , 23F
敝校已購買matlab大量授權...
03/02 14:27, 23F

03/02 15:15, 6年前 , 24F
各有優缺吧python在矩陣運算上本來就沒matlab快啊
03/02 15:15, 24F

03/02 17:30, 6年前 , 25F
推一下 git+latex
03/02 17:30, 25F

03/02 20:47, 6年前 , 26F
矩陣運算沒有matlab快....不一定吧
03/02 20:47, 26F

03/02 20:48, 6年前 , 27F
大型運算上都是矩陣的情況下 還沒看過matlab的
03/02 20:48, 27F

03/02 20:49, 6年前 , 28F
矩陣一大上去matlab先倒給你看啊(memory問題)
03/02 20:49, 28F

03/03 01:13, 6年前 , 29F
團隊協作或許可以把JabRef/BibDesk的總bib放在github上
03/03 01:13, 29F

03/03 01:14, 6年前 , 30F
或直接把文獻管理軟體的資料庫拉到dropbox/google drive
03/03 01:14, 30F

03/03 01:18, 6年前 , 31F
數值計算我只是個使用者,所以只要前端好用就好了XD
03/03 01:18, 31F

03/03 01:20, 6年前 , 32F
像Scipy底下還不都是從c和fortran繼承過來的library
03/03 01:20, 32F

03/03 01:21, 6年前 , 33F
所以我選工具的重點是有沒有人已經都寫完了我可以直接用
03/03 01:21, 33F

03/03 01:22, 6年前 , 34F
自己開發數值模擬程式實在太累太困難了根本不想弄啊
03/03 01:22, 34F

03/03 01:27, 6年前 , 35F
好好寫的numpy就未必比matlab慢了
03/03 01:27, 35F

03/03 01:28, 6年前 , 36F
用numba的話更是可以提速到與C不相上下
03/03 01:28, 36F

03/03 01:29, 6年前 , 37F
當然,大部份時候大家都是輕鬆寫、亂寫、出事就call out
03/03 01:29, 37F
還有 154 則推文
03/04 05:30, 6年前 , 192F
其他我就不熟Q_Q
03/04 05:30, 192F

03/04 05:32, 6年前 , 193F
那就是應數CS研究方向的2/8=25%,加上數學方向是12.5%
03/04 05:32, 193F

03/04 05:32, 6年前 , 194F
你抓著整個學門1/8的研究方向來說速度很重要沒有很慘
03/04 05:32, 194F

03/04 05:33, 6年前 , 195F
我不理解這樣的價值判斷
03/04 05:33, 195F

03/04 05:33, 6年前 , 196F
好吧 我的價值偏差 囧>
03/04 05:33, 196F

03/04 05:36, 6年前 , 197F
大大您正確 我回去好好反省
03/04 05:36, 197F

03/04 05:39, 6年前 , 198F
這好沒有意義的討論 都好 都好
03/04 05:39, 198F

03/04 05:41, 6年前 , 199F
這算文章不要歪樓了 這是篇分享文Q_Q
03/04 05:41, 199F
be cool please~ 雖然討論好像篇題了,但是覺得我作為原PO好像該回些什麼... 我自己認知是,數值方法的確不是美國大學應數系的主流,至少我申請博班的時候不是 美國做數值研究有名的大學,不少另開了專門的單位 譬如史丹佛 奧斯汀 普林斯頓等等,這些都有數值研究的專門單位 而沒有專門單位的學校,數值方法的研究則常集中在傳統工學院,或是大氣海洋領域 畢竟數值模擬的實用化,以及超級電腦的發展,都從計算流力及計算力學開始 題外話 跟大學不同,美國國家實驗室裡,應數部門卻是專注數值方法跟高效能運算的研究 ANL/ORNL/LBNL/LLNL都是。我在ORNL打雜過,所以我肯定ORNL的情況 至於該把程式效能這事放在什麼地位,或該怎麼看待,我就不評論了,人各有志(??) 至少那些雖然自己寫程式 但是覺得程式能跑就好的人,他們創造了很多就業機會 ORNL/ANL/LLBL都有種單位,在幫那些程式隨便寫的研究者,改寫他們的程式 最後我想再拉回免費的研究工具的討論:使用python不要錢,不怕沒funding! ※ 編輯: ives0228 (71.206.47.136), 03/04/2018 17:30:41

03/05 16:23, 6年前 , 200F
看到python就要推!
03/05 16:23, 200F

03/05 16:23, 6年前 , 201F
我覺得學校不教python是因為懶,還有些教授覺得python免費
03/05 16:23, 201F

03/05 16:24, 6年前 , 202F
所以一些資源外掛要擔心出錯(他們認為:免費的最貴)
03/05 16:24, 202F

03/05 16:24, 6年前 , 203F
所以既然學校買了Matlab,那就繼續用吧!而且商用軟體還
03/05 16:24, 203F

03/05 16:25, 6年前 , 204F
有一隻團隊幫你維修,儘管這軟體跑起來可以慢得要你命XD
03/05 16:25, 204F

03/05 16:26, 6年前 , 205F
超大矩陣用Matlab硬幹這個沒問題(礙於環境我幹過XD)
03/05 16:26, 205F

03/05 16:27, 6年前 , 206F
但拆解矩陣之後重組的過程大概可以讓你看完整場美網決賽XD
03/05 16:27, 206F

03/05 16:28, 6年前 , 207F
fortran當唯一解是歷史包袱+1 如果你待的團隊老闆過去幾
03/05 16:28, 207F

03/05 16:28, 6年前 , 208F
十年都用fortran,那要你跳到別的幾乎不可能
03/05 16:28, 208F

03/05 16:28, 6年前 , 209F
例如跑CFD的,老闆過去二、三十年都用fortran,就算老闆
03/05 16:28, 209F

03/05 16:29, 6年前 , 210F
自己忘了fortran怎麼寫,但他徒子徒孫都用fortran
03/05 16:29, 210F

03/05 16:29, 6年前 , 211F
整個團隊的技術核心就在那裡,要改變太難了
03/05 16:29, 211F

03/05 16:29, 6年前 , 212F
不過當商用CFD軟體也做得越來越好的今日,fortran也不是搞
03/05 16:29, 212F

03/05 16:30, 6年前 , 213F
CFD人的唯一解(至少我實驗室有學長很想改用fluentXD)
03/05 16:30, 213F

03/05 18:40, 6年前 , 214F
數值研究和科學計算計算(計算力學等)研究重點有差別
03/05 18:40, 214F

03/05 18:41, 6年前 , 215F
工學院或非數學系的幾乎都是計算科學研究。
03/05 18:41, 215F

03/05 21:15, 6年前 , 216F
雖然我不知道大家講什麼 但跟我認知認識差上不小
03/05 21:15, 216F

03/05 21:15, 6年前 , 217F
大概是我廢材學店生所以特別糟吧 Q_Q
03/05 21:15, 217F

03/05 21:16, 6年前 , 218F
FORTRAN總是會慢慢退下舞台的 去年NASA才有個計劃
03/05 21:16, 218F

03/05 21:16, 6年前 , 219F
要改它的CFD 不過這要美國人才能參加 FUN3D
03/05 21:16, 219F

03/05 21:26, 6年前 , 220F
我知道最新很多的數值研究都是跟著計算器的特性去提
03/05 21:26, 220F

03/05 21:27, 6年前 , 221F
升和研發 還蠻多跟傳統數值想法有差異
03/05 21:27, 221F

03/05 22:32, 6年前 , 222F
不過一開始也都是用matlab小規模做做 丟丟siam
03/05 22:32, 222F

03/05 22:33, 6年前 , 223F
等到大一點後 就丟好一點的siam 或是專門的期刊
03/05 22:33, 223F

03/05 22:34, 6年前 , 224F
美國很多國家實驗室或是單位都有很多開源軟體
03/05 22:34, 224F

03/05 22:34, 6年前 , 225F
其實會用的話要解很多東西都不用自己刻啦....
03/05 22:34, 225F

03/05 22:36, 6年前 , 226F
更別提很多商用公司都用這些軟體出客戶報告賺錢
03/05 22:36, 226F

03/05 22:37, 6年前 , 227F
套句某大頭的話(他是數值的沒錯) 不會寫程式要找什
03/05 22:37, 227F

03/05 22:38, 6年前 , 228F
麼工作啦
03/05 22:38, 228F

03/05 22:39, 6年前 , 229F
他是對他系上應數的學生講的
03/05 22:39, 229F

10/02 09:14, 5年前 , 230F
推 我追蹤你們團隊很久了
10/02 09:14, 230F
文章代碼(AID): #1QbxnpOv (PhD)
文章代碼(AID): #1QbxnpOv (PhD)