おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

2014-06-01から1ヶ月間の記事一覧

Newton Inversion Methods による粗視化DNAモデル(2014)

以下に書いたものは、論文を基にした私の理解なので、正確性を欠きます。正確な情報を知りたい場合は、下記の論文を参照してください。また、下記の論文の図を参照することで、理解が深まると思います。 A Solvent-Mediated Coarse-Grained Model of DNA Der…

生体分子のシミュレーションにおけるImplicit溶媒モデルの適用と開発(2014)

以下に書いたものは、論文を基にした私の理解なので、正確性を欠きます。正確な情報を知りたい場合は、下記の論文を参照してください。また、下記の論文の図を参照することで、理解が深まると思います。 Design and application of implict solvent models i…

T4のDNAパッケージングモーターによって生み出される力が静電力学である証拠(2014)

以下に書いたものは、論文を基にした私の理解なので、正確性を欠きます。正確な情報を知りたい場合は、下記の論文を参照してください。また、下記の論文の図を参照することで、理解が深まると思います。 Evidence for an electrostatic mechanism of force g…

粗視化力場を最適化するための遺伝的アルゴリズム(2013)

以下に書いたものは、論文を基にした私の理解なので、正確性を欠きます。正確な情報を知りたい場合は、下記の論文を参照してください。また、下記の論文の図を参照することで、理解が深まると思います。 Evolutionary Algorithm in the Optimization of a Co…

生体分子のための粗視化とall-atomの両方を含むポテンシャルの開発(2014)

以下に書いたものは、論文を基にした私の理解なので、正確性を欠きます。正確な情報を知りたい場合は、下記の論文を参照してください。また、下記の論文の図を参照することで、理解が深まると思います。 Resolution-Adapted All-Atomic and Coarse-Grained M…

DSSPのバイナリファイルをゲットする。

DSSPとは、タンパク質の立体構造に基づいて、その二次構造を出力するアルゴリズムです。同名でプログラムも存在します。プログラムをダウンロードして使う場合と、DSSPが出力したバイナリファイル(PDBに登録しているタンパク質については、DSSPが出力したバ…

はじめてのOpenMP(4)

OpenMPの構文は以下のようになります。 #pragma omp 指示文名 [指示句[]...] 指示文 parallel 構文 並列実行の開始を指示し、複数のスレッドを生成する。 for 構文 forループの繰り返しがスレッドに並列処理されることを指定する。 #pragma omp for [指示句[…

はじめてのOpenMP(3)

private指示文 ソースと実行結果を見れば、private指示文の挙動がわかると思います。OpenMPでfor文を並列化するとき、for文で使用されるインデックスは自動的にprivate変数になっています。 #include <omp.h> #include <stdio.h> int main(void){ int i=0,j=10,k=20; #pragma</stdio.h></omp.h>…

はじめてのpthread(1)

pthreadを使って、並列処理を体感してみました。しかし、その実態は難解、OpenMPと比べて難しすぎる。そのせいか、参考となるドキュメントも少ない。pthreadとOpenMPの違いは難易度以外に、並列計算を実行するときの変数の扱いにあります、OpenMPはスレッド…

はじめてのOpenMP(2)

sectionに分けて並列化をする。 #include <omp.h> #include <stdio.h> int main(void){ int i; int th_num[3]; #pragma omp parallel { #pragma omp sections { #pragma omp section { th_num[0]=omp_get_thread_num(); } #pragma omp section { th_num[1]=omp_get_thread_nu</stdio.h></omp.h>…

はじめてのOpenMP(1)

OpenMPを使って簡単なプログラムを書いてみました。 #pragma omp parallel num_threads(4):OpenMPの始まりとスレッド数の指定する。 #pragma omp for:OpenMPを使って、forを各スレッドに分割する。 omp_get_thread_num():スレッドの番号を取得する。 omp_get…

Streaming SIMD Extensions(SSE)[Wiki]

ストリーミングSIMD拡張命令 (Streaming SIMD Extensions, SSE) は、インテルが開発したCPUのSIMD拡張命令セット、およびその拡張版の総称である。 SSEは、x86アーキテクチャに8本の128ビットレジスタを新設し、浮動小数点演算のSIMD処理を実現したものであ…

フリンの分類[Wiki]

コンピュータアーキテクチャの分類法である。 Single Instruction, Single Data stream (SISD) 命令にもデータにも並列性のない逐次的なコンピュータ。SISDアーキテクチャの例としては、いわゆるシングルプロセッサのマシンが挙げられ、旧式のパーソナルコン…

大沢統計第1章(2)

前回に続いて大沢統計をプログラミングしてみました。 内容は前回の記事とほぼ一緒です。最初にnum_person人にmoney=30をランダムで配ります。その後にランダムで選ばれた人が、ランダムに選ばれた人にmoney=1を渡すという過程を10000回繰り返します。結果と…

大沢統計第1章(1)

生物物理学分野の大御所、大沢文夫先生が執筆された『大沢流手づくり統計力学』の第1章の内容をプログラミングしてみました。大沢流 手づくり統計力学作者: 大沢文夫出版社/メーカー: 名古屋大学出版会発売日: 2011/08/10メディア: 単行本購入: 1人 クリック…

構造体内で定義されているファイルポインタ。

ヘッダファイルに構造体を宣言し定義し、以下のソースのように、tmp1.cで読み込んだファイルポインタがtmp2.cでは消えている…。 tmp1.c #include <stdio.h> #include <stdlib.h> #include "t_struct.h" void tmp2(void); int main(void){ if((t_s.infile=fopen("tmp1.c","r"))==</stdlib.h></stdio.h>…

fortran90(f90)のコードをCに書き換える..............。(f90toC)

http://www.ncsa.illinois.edu/People/mdewing/f90toC/から、f90toC.tar.gzをダウンロードする。 $tar xvfz f90toC.tar.gz $cd f90toC $make すると、以下のようなエラーが出る。 cc -ggdb -c f90main.c f90main.c: In function ‘genmain’: f90main.c:22:17:…

Emacsの開発環境を整える。cmake-modeのインストール

http://www.cmake.org/Wiki/CMake/Editors/Emacsからcmake-mode.elを落としてきます。(http://cmake.org/gitweb?p=cmake.git;a=blob_plain;hb=master;f=Auxiliary/cmake-mode.el) それを~/.emacs.d/に保存します。最後に、.emacsに以下の記述します。 (requi…

Pythonのmatplotlibを使ってアニメーションを作る。

matplotlibを使って、y=xの直線を引くアニメーションを作成しました。初めて使う機能はシンプルであればシンプルである程いいと思うので、ソースも出来るだけシンプルに書きました。 #! /usr/bin/env python from matplotlib import animation as anim impor…

Fortranにおけるコマンドライン引数

iargc()で引数の数を数え、getargに空の文字列と引数の番号を与えると、与えた文字列に対応するコマンドライン引数を代入してくれる。不思議なのは、引数番号0にはプログラム名が入っているところで、fortranのループが1から回ることを考えれば、引数番号1に…

Emacsの開発環境を整える。magitのキーバインド一覧

magitの使い方をまとめたサイトをそのまま引用しました。すぐにコマンドを忘れるので記事にしておきます。 参考URL:http://w.koshigoe.jp/study/?%5Bgit%5D%5Bemacs%5D+magit%A5%E1%A5%E2 M-x magit-status g: リフレッシュ l: 履歴操作用のサブメニューのウ…

char *strとchar str[]で定義したときの挙動の違い。

上記の定義は一見違うように見えるが、ある文字列"___str"(アンダーバーはスペース)があり、このスペースを除く関数では挙動が違う。どうして違うのかは目下調査中、以下に正常に動作するコードとしないコードを載せる。下記の本に書いてありそう。C言語ポイ…

string.hの関数一覧(定義のみ)

string.hで定義している関数の一覧を示します。使うときなどに参考にする予定。 以下の内容は man stringで確認することができるので、一度確認してください。memcpy,memmove,memcmp,memchar,memsetなどのmem系?が定義されていません…。どうしてでしょう。 …

1次元のランダムウォーク(今更!!)

このプログラムでは、正規分布に従い乱数を発生させ、その値が負であるならば-1で正であるならば+1させます。これを時間発展させればランダムウォークの出来上がりです。 #! /Usr/bin/env python import numpy as np import matplotlib.pyplot as plt fig=pl…

Emacsの開発環境を整える。C言語の開発環境(compile,flymake)

M-x compile [Enter] を入力し、次にmakefileを指定する。その後、コンパイル結果が新しいウィンドウに表示されるので、 出力されているエラーの上でM-x `を実行するとバグの場所へジャンプが出来る。 flymake-mode 逐次コンパイルを実行し、エラー箇所をハ…

transfer関数とSELECTED_INT_KIND関数

SELECTED_INT_KIND:指定した指数範囲を表現できる整数型の種別型パラメタ値を求める 使い方 program large_integers integer,parameter :: k5 = selected_int_kind(5) integer,parameter :: k15 = selected_int_kind(15) integer(kind=k5) :: i5 integer(kin…

mallocとcallocの違い。

言わずと知れたメモリ確保のためのmallocとcalloc関数。これらの違いをcallocは、0で初期化し、mallocはしないと考えてました。 しかし、callocは’\0’ヌル文字で初期化するのであって、0で初期化するのではありません。ここら辺が、分かっていないとバグの温…

LINUXの起動

Ubuntuサーバーを立てたのですが、iptable.shを作成し、起動時に自動実行するように設定したいのですが、/etc/network/if-pre-up.d/にiptable.shに実行権限を与えたのですが、実行されません。ubuntuの起動理解するための記事。 参考URL:http://www.atmarkit…

Martini(粗視化)力場を用いた計算(チュートリアル)

http://cgmartini.nl/cgmartini/ Martini 力場は分子動力学計算のための粗視化力場です。平均的に、4つの重原子を1つの粒子に置き換えます。この力場はシステマティックに決められて、極性と非極性の多くの化学複合体における自由エネルギー分割の再現に基づ…

GROMACSのコードリード(code reading)(2)

今回はMD計算がどのように実行されるかを中心に読んでいく。引数は省略。変数t_stateを追えば、Gromacsのkernelが見えてくるはず! ディレクトリ gromacs-4.6.5/src/kernel mdrun mdrunはGROMACSに含まれる主要な計算化学エンジンである。分子動力学計算に加…