【IT】かくして「プログラミング」は生物学者の必修科目となった [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ナムラター・ウデシは、ヒト細胞のプロテオーム解析(プロテオミクス)の手法に精通している。プロテオーム解析とは何なのか、なぜそれが重要なのか、読者にはさっぱりわからないとしても無理もない。大学院で何年も経験を積んでようやく習得できる、複雑な研究手法なのだ。とりあえずいまは、疾病研究に重要な手法だということを覚えておいてほしい。
ブロード研究所のプロテオミクス研究室グループリーダーであるウデシは、複雑な細胞機能の謎を解明すべく日夜研究に励んでいる。さらに彼女は幼い2児の母でもあり、自由時間はまったくないに等しい。
それでもなお、彼女は毎日数時間かけてプログラミング言語「Python」を学んでいる。
「博士研究員として働き始めて以来ずっと、データ解析を自動化できたらいいなと思っていたんです。でも、わたしにはプログラミングの知識がなかったので、詳しい人を探し出しては協力をお願いしていました」と、ウデシは言う。しかし、このやり方は手間がかかるし、限界がある。それゆえ彼女は現在、ハーヴァード・エクステンションスクールでプログラミングの初級講座を受講しているのだ。ウデシだけではない。ボストンでブランチをとっていた生物系の博士研究員数人に、プログラミングの勉強をしているか尋ねてみたところ、全員がイエスと答えたのだ。生物学者に必須の要素がカリキュラムから欠落していることを全員が認識し、彼らはそれを自力で補おうとしているのだ。
そんな時代になったのか、と驚かされる。いまや生物学の主流はビッグデータだ。生物学者は研究室に通いつめ、生命体からデータを引き出す。「CRISPR-Cas9[日本語版記事]」のような新たな研究ツールの登場により、ますますデータは増える一方だ。ウデシも以前はExcelで自分の研究データを管理していたが、ここ5年でデータセットは急激に巨大化した。「1万5,000件のデータポイントを手作業で確認するなんて、もはや不可能なのです」と彼女は言う。すべてを分析するためには、生物学者は自分の実験にあわせたプログラムを自分で書くしかない。
http://wired.jp/2017/05/11/biologists-teaching-code/ Phythonを使う前にやることがあるだろう
ただPhythonでは限界がある もうしばらくするとプログラミングは必修科目ではなくなって
さらにもうしばらくすると生物学者が必要なくなりそう >>3
知ったか乙
ライブラリが豊富だから需要あるんだよ マジだよ
最先端のバイオロジーは今や殆どデータサイエンスと化した
Rとかシェルとか使いこなせないと話にならん ビッグデータ(1万5,000件)でもPhythonで十分できます >>6
R使いは重宝されるよ
データサイエンスの世界において、Pythonから入った人はプログラミングはできても計算に疎い
Rの人はそのあたりしっかりしてるから 全部最初から最後まで人工知能にやらせた方が速そうだが >>10
そのうちそうなるだろうね
最初からというか、人工知能への目的の伝え方のコツが学者のスキルになる >>3
言語名を全角で書くような奴が言っても説得力ゼロ >>3
Phython っていう言語があるんだよ、きっと
俺らの知ってる Python とは別の 日本のプログラムなら格安の月十数万の使いたい&使い捨て放題で雇えるのに。 それほど長くない数列で成るかの自然界の解明
真理への近道 IT系だったけどプログラミングに関わる仕事拒否し続けてたらリストラされた >>17
役に立たないけどね。
英語が通じないし。 論理的な手順を記述すること(だけ)が目的だから、IT技術者の想定する
プログラミングとはちょっと違うと思うけどね
速度さえ十分ならデータベースやエクセルのマクロでも事足りるし、本格的に
速度が必要な部分はプロ(数理系の共同研究者)に依頼した方が速いと思う 生物系というかバイオインフォマティクス関係だろう
ピペドは相変わらず肉体労働 大人になってからのプログラミングだと最先端を切り開くネイティブプログラマーには逆立ちしても勝てないし、かといってそういった宇宙人はアスペ気質の過集中が多いので結局は自分の分野は自分でとなるのか・・・。 >>25
というか、コンピュータサイエンスについては知識や経験が豊富な凄腕プログラマでも
バイオインフォマティクスについての知識を持って無いのが普通だから、
やりたいことを伝えるのに手間がかかるってことだろう。 深い層のプログラマーは表面の仕事はしないし、浅い層のプログラマーは深い層のことなんて知らないし
今の時代APIやフレームワークを効果的に活用する方が重要で、言語の知識はさほど必要ない 俺は中学生の頃からC/C++やって、今は研究者やってるけど、
大人になってから必要になって始める人はRとかPythonとかから始めるから、
どうしても基礎力が身につかない。回り道でもCからやったほうがいい。 >>29
基礎力がどうしても身につかないならしょせんその程度の人間ということだ >>29
バカだなお前
プログラミングすること自体が目的ではなく
pandas, scipy, scikit-learn, matlibplotを
使ってデータ分析することが目的なんだ
そういうライブラリに入ってる関数を
C/C++のプリミティブな記述で自分で書くなんて
車輪の再発明、バカのすることだ >>31
それだとライブラリに入ってるものしか使えないよ。
自分でコード書けたり修正できればそれ以上のことができる。
例えば、あるアルゴリズムで解析したい。
そのコードは論文の著者がMATLABスクリプトで公開している。
しかしコードは若干のバグがあり、そのままではエラーが出る。
あと、高速化のために並列化するように拡張したい。
こういうケースはざらなんだよ。
そこでできるかできないかで研究のクオリティが変わってくる。 おれちっちゃい頃 python をピトホンって読んでた 俺、脳神経科学の研究者やってるが、
プログラミングどころか物理さえおぼつかない >>1 みたいな人らってバージョンアップできずに古いシステム使ってそうだなw
実はその手間を惜しむ事が競争から落ちていく落とし穴なんだよな。 >>32
分かってないな
ライブラリは最新の計算技法の集大成であり、
それぞれの学問分野でみんなが使う基礎的なものが
これでもか!ってなくらいに多数、様々にあり、
世界中の研究者が愛用し、テスト、デバッグされている
それらを組み合わせた1つ上の階層で
自分独自のアルゴリズムを構築するんだ
例えば、バイナリサーチを自分で組むのは
今の時代、馬鹿のすることだろ?
scipyにはもっと高度な方程式求解のクラスオブジェクトが入ってるんだから、
方程式の解を求めること自体はそれをそのまま使い、
その解が何を示しているか?
その利用価値を考えることに時間を費やすべきだ
プリミティブなプログラミングテクニックなんて今の時代じゃ必要ないんだよ >>37
別にそれらをCで自分で実装しろとは言ってないでしょ。
しかしなんでもライブラリの関数呼び出せば済むというものでもない。
新しいアルゴリズムだと利用者なんて少ないぞ。
1〜2年前に論文で発表されてコードは公開されているが誰も使ってないとかよくある。
誰かが書いたライブラリ使う場合でも自分がデバッガやるようなもんだ。
そこで大事になるのがCやC++をやることで養われる基礎力だ。 こういう特殊用途
自分にとって重要だが、多くの人が使うものではないようなものは
自分で作れるようになるのがてっとりばやいだろうな
もちろん生物学全体でこういう流れになれば
需要が増えるからそこを狙った有料無料ソフトがいろいろでるだろうけど
自分が処理したい処理が実装されているかどうかはわからないから
(枠組みは一般向けソフトが提供しても)
自分に特化した部分は自分でつくらないといけない Cをやるべきだって意見も
Pythonで充分って意見も
どっちの考え方もあるだろうな
使いたいソフトがあって、データがあって、手作業でそれにかけてもいいっちゃいいけど、そこを自動化したい
そういうつなぎの部分をやるだけならPythonでもいいだろうし
それよりももう少し深いこと、新規のアルゴリズム、高速アルゴリズムを自分で生み出したい
みたいな場合は高速化のための知識とかあったほうがいいだろうし
そこは立ち位置の違いによっていろいろじゃないのかな 数値を扱うならCOBOL一択だろ
COBOL以外で計算された値なんて信用できない ノーベル生理学賞取った大村智氏とか
生理学に重要な研究の当たり所を勘で探していくようなタイプの人は
プログラミング必要になったらついていけなくなるだろ そこは経験豊富な年配の研究者と
新しいテクノロジーを取り込むのは早い若い研究者が
役割分担すればいいんじゃないかな Pythonのおかげで驚くほどプログミングの閾値が下がったね。
研究開発に従事している人は使えたほうがいいよ。 昔はFORTRUNだったな。
SORYは外部ルーチンでいいし
IF文とSEL文だけあれば組めるかなぁ。 >>42
AI「どんな種類のデータをどのようにでもどんどん解析します 日常語でご指定ください」
大村さん系「ほう、便利になったものじゃな これは流行りからずれたマイナーな対象なんだが、わしの勘は注目しておる
それにさらにこれこれの特殊な関連でもないか調べてみてくれ」
99%凡庸研究者「えっと、最近みんなで学会で話題のこういう対象、その範囲を少し広げたデータ一生懸命取ったよ、当然何か出る可能性高いと思うから調べて! ワクワク!」
当然大村さん2個目のノーベル賞 特殊用途のいろいろなソフトは進化していくだろうけど
世の中のいろいろな事象を認知して
こちらの意図をくみ取って処理してくれるAIは
まだ当分できないと思うけどな >>24
バイオインファマティクスは更にMatlabも必要だぞ
これは実験解析が多目な実験ラボだな 多量のデータ処理で研究分野ならpythonは有力な選択肢だろ。ビックデータと相性が良くライブラリも文献も豊富。日本では今一人気無いのが勿体無い。
今後もデータは増える一方だしデータサイエンスは基礎学問になっていきそうだな。 これだけスマホやらパソコンやらが普及してる
カメラやらセンサーやらそんなのもつながってくる
データが大量に集まる
そんなのの処理は自分ではできない
コンピュータで処理する
ただし、自分のやりたい処理をするソフトが都合よくあるかわからない
ないなら自分でつくるしかない
まあ自然な流れだろうな
分野による部分もあるんだろうけど 昔数理生物学をやってたけどUNIXでCを使ってプログラムして計算機シミュレーションしてたわ
生物系の研究者ってプログラムできる人がほとんどいないんだよね
某医大の教授なんかはプログラムできないから非線形微分方程式を数列でエクセル使って必死こいて計算してたわ >>40
PhythonのライブラリはC言語で書けて
呼び出して使える。 だから、既存のライブラリに
無くて、学者の仮説に合わせた計算アルゴリズムは
C言語で書ければ凄く研究活動に寄与するわ。
この辺を専門のPGに任せれば良いのだが、時間短縮の
ためには自分で書ければ人の先を行ける。 物理系の人は随分前から自分でやってたよね。
大型計算機を二月待で一月かけて計算する時代が、パソコンで1時間で出来るのが感激だったとか。
今60くらいの人はそんな感じ。
生物系の人で、30年くらい前の情報処理1種を研究の片手間に勉強して取ったって人いたな。 >>51
日本人ならC言語を使うべきだろ
他人が作ったライブラリを信用するとかあり得ない >>32
中のアルゴリズム修正するくりらい、if文とfor文が分かる程度で十分でしょ >>54
大抵はNumpyの配列演算で十分高速だと思うけどねわざわざCで書かなくても Pythonで充分だよ。
コーディングにかかる時間が圧倒的に短いし。
計算時間だってnumpy使えば実用上問題ないよ。
物理系シミュレーションもComsolのPDEソルバー使えば大抵なんとかなるから、
自分でコード書くのは計算後のデータ処理とかだね。 phythonみたいなおもちゃは仕事には使えないよ MATLABとかIgorでよくね?
昔は技官さん雇ってたよね。貧しくなったのか。
っていうかこんなんがビジネスニュースなのか?糞スレたてんなよ それぞれ一長一短だから状況に応じて使い分けじゃないかな
初学者の敷居が低い
場当たり的にコードを追加していきつつ機能を増やしていけるのはPython
一方で本当に大量に計算する部分のルーチンを高速化したいとか
将来的にGUIつけたりしてそれなりのソフトに持っていきたいとかなら
CやらJavaとかGUIライブラリとつなげやすいほうがいいだろうし Cで自分で書け他人のライブラリは信用するなとか言ってるやつは自分で何かやったことないね。
大体計算機シミュレーション本業が人の作ったライブラリ使ってるのすら知らないようで。 手順だけプログラミングして、データセットを流し込み、出て来た処理済みデータさえもらえればそれで十分だし >>58
そりゃどんなプログラムでもそうだけど、
ツール的にPythonとかRとか使ってる程度だと難しいと思うよ。
他人のコード読んで理解するのは自分で書くより難しいからね。
よくあるバグとして、ゼロ除算がらみ、小数点がらみ、メモリリークがらみ、
非同期がらみがあるんだけど、やっぱりC/C++でソフトとか作ったことがあると早い。
JavaとかC#でもいいけどさ。 Rはnosqlからデータ引っ張ってきたり
メモリーに載らないサイズのデータ処理すんの面倒い
後、動的変数作るのも面倒い
メリットは圧倒的なライブラリだな。これ使わないならmatlabでもいい >>37
SciPy は、基本的なものしか入っていないとおもうが。 ScilabとかRとかmathematicaとかならわかるがPythonなんてまったく意味ないだろ ソフトエンジニアじゃないんだったらPythonで充分。
仕事のメインはソフト開発じゃないんだから。
Pytonはオープンでシンプルだったので
UNIX系使いの科学者のプロトタイプ用言語として普及した
ただしインタプリタがメインだから
カリカリのチューニングで大量の計算をスパコンするような事には向いていない Pythonの次はPython+その次はPython++でさらにPython#とか
新しいMPUやOSが出来るたびの新しい言語も増えてく >>71
今時のインタプリタ言語は実行時にコンパイルしているので高速ですよ。
カリカリチューニングならマシン語でやるぐらいじゃなきゃ。 >>73
スパコンでやるような計算をしたことないんだろ?w 自分達で書くようになったからもうプログラマ要らない。
お前らは失職 >>74
時代はカスタムマイコン、PLCですよね。 Pythonは書き易いからな
なんとなく適当に書いたらその通り動く CからバンバンBIコードを書くなんて、それこそ超人みたいな計算生物物理学者だけで
いいんじゃないのかな
普通の生物学者はPythonだけでいいと思うよ >>37
浮動小数点数の演算誤差とか大丈夫なのかな?
計算順序で誤差の蓄積とか変わるからね。
その辺の精度まで求めないのならライブラリで十分だとは思うけどね。
ただオープンソースなんで、ライブラリの中も丸見えなのが良いよね。
matplotlibで不親切なエラーが出ても、自分で深く調べて問題解決出来るから楽で良いよね。 >>82
Cで書く必要はないよ。でもPythonだけでは完結しない。
俺も研究で使った言語だけでも、
VBA, Java, MATLAB, R, Python, C/C++ と多岐にわたる。
使うライブラリによって言語なんてバラバラだから。
誰かが書いたコードを呼び出すだけじゃ済まないから、
いざとなったら中身を見て弄くる必要がある。
となると結局C/C++できると一番強い。 Python ってオブジェクトの型はあっても
変数の型ってないんじゃないっけ?
そのあたりが大きいものをつくるのには向かないかなって気はするけど
小物をちょこちょこっとつくるのには便利は便利そう >>83
while(x < threashold) { ... x = x + delta; }
こういう処理で delta が浮動小数点型のときに、delta > 0 でも
場合によっては x が増えずにプログラムが止まらないとかよくある。
Cから入った人からすればお馴染みだけどね。
浮動小数点の扱いは難しいって知ってるだけでも役に立つ。 >>86
そうそう
無限ループ書くときは要注意ですね。
それにしても、オブジェクトを返すとか、コールバックとか、読み出し可能なオブジェクトとか、Cのポインタとか関数ポインタの知見無しにどうやって皆んな理解してるのかな?
この他、変数のスコープなんかも、アセンブラのcallによるスタックの使い方とか、Cだとmmapによるheapの確保の仕方とか知っていれば一発で理解できるけど、そうじゃ無い方々はどうやって理解してるんだろう… >>81
うっかり多階層のネストを書いた時、ループの閉じ括弧を書くのが鬱陶しかったな。
データ加工用のスクリプトをawkで書いてた時の話だけど。
その後、pythonに出会って、ネストの閉じ括弧を書かなくて済んで感動したね。
ところでネット上でVBAのサンプルを見る事が多々あるんだけど、ネストの部分でインデント入れない人って結構多い様に思う。
ループの開始と終了位置が見辛く無いのかな?
pythonはインデント必須だから、記述した人の個人差が少なくて良いよね。
自由度が無くて嫌だと言う人も居るけど。 >>73
JITの限界を知っていたら
そんな恥ずかしいことは言えないw
マシン語で十分な計算式しか考えられないのなら
FORTRANがなぜ生まれたかも理解できないねw この手のスレでは >>75 みたいなコンプレックス丸出しの何も実現できない無能が沸くよな そのうち、node.jsでなんでもやる時代になる気もする
ウチの会社は開発をnode重点にした結果、絶望的にjavascriptが遅いIEは使用禁止になった。 理系の分野でプログラミングしなくてもいいと言う方が、もう少数派だよ スルーされてるID:QPyBs1cE
みてらんない 浮動小数点演算のフォーマットはIEEE754で規格化されてて値の丸めの方法も決まってる
どの言語でもIEEE754の規格を使ってるよ
ただし、32bitのx86はFPUが80bitで計算し、IEEE754の規格とは違うので誤差の出方が違う
64bitのx86では浮動小数点演算はSSEで行うのでIEEE754のフォーマットになってる
32bitのx86でもSSEを使うようにすればIEEE754のフォーマットで計算する
今時、科学技術計算するのに32bitのコンピュータを使うことはないだろうけどね Pythonは整数演算は多倍長演算で巨大なbit数の演算が可能
だから2の1024乗なんて計算も簡単にできる
浮動小数点演算は倍精度浮動小数点で演算する 試しにPythonで2**1024と入力すると
17976931348623159077293051907890247336179769789423065727343008115773267580550096
31327084773224075360211201138798713933576587897688144166224928474306394741243777
67893424865485276302219601246094119453082952085005768838150682342462881473913110
540827237163350510684586298239947245938479716304835356329624224137216
という値が返ってくる >>48
> 99%凡庸研究者「えっと、最近みんなで学会で話題のこういう対象、その範囲を少し広げたデータ一生懸命取ったよ、当然何か出る可能性高いと思うから調べて! ワクワク!」
凡庸な学者って皆が注目してるって分かって行くタイプなの?
凡庸なら尚更マイナーなテーマから鉱脈を探しそうだけど。 このスレ見ててすごく昔の2ちゃんねる思い出した。
チンプンカンプンだけど。 ニーズがあるなら識者がnode-redのノードを作ってくれそう。
そしたら手法をフローに置き換えるくらいで済む。
それにしてもpython2.7はいつ駆逐されるのだろう >>100
付け焼き刃なエセ知識をひけらかして墓穴を掘る
「便所の落書き」と揶揄されても仕方がないwww 気候変動とか遺伝子変異とか自然の中の個体数シミュレーションとか
そういうもののシミュレーションというのが必要になってきたから
プログラミングが必要になってきてるってのはある
モアやドードーの絶滅プロセス研究にそれぞれの動物(ブタやヤギや人間)パラメータを入れたシミュレーションとかで
実際にかなり正確な現象曲線出せるようになってきたみたいだしなあ 理論を実践する前にコンピュータでシミュレーションするのは当たり前
実践が難しい分野ならシミュレーションそのものをモデルとして成果物にする
それを自分で構築できない研究者は遅れを取るというだけ
別に人を使ってもいいが時間と金が掛かるわな >>99
マイナーな分野やると研究費が出ない
研究費を出させるのも研究者の腕なんだよ >>105
関係なさすぎだろ
なんで生物やる人がライフゲームで遊ぶんだよ ■ このスレッドは過去ログ倉庫に格納されています