簡単なフローチャートを作成した。

2. フローチャートの概要

2つのpdbファイルを読み込み、残基番号と位置情報を比較し、構造変化部位を同定する。

3. 実行例1

まず簡単のためにあらかじめCaのみを取り出したファイルを使用してプログラミングを行ったものについて、 フローチャートを作成した。

リスト 3.1 structchange.dot
 1digraph G3 {
 2    graph [size="3,8"]
 3    node [shape=hexagon] i;
 4    node [shape=box] d f;
 5    node [shape=parallelogram] b c h;
 6    node [shape=trapezium] ls;
 7    node [shape=invtrapezium] le;
 8    node [shape=diamond] e g ;
 9    node [shape=box,style=rounded] a j ;
10        a [label="スタート"]; 
11        i [label="Ca原子のみを取り出したファイルを作成する"];
12        b [label="比較する2つのファイルA,Bを読み込む"];
13        c [label="各リスト←A,Bのx,y,z座標,残基番号"];
14        ls [label="ループはじまり"];
15        d [label="各リストを読み込む"];
16        e [label="AとBで同じ残基番号が存在する"];
17        f [label="残基番号が同じもの同士の距離を調べる"];
18        g [label="距離≧threshold"];
19        h [label="その残基番号のリストを表示"];
20        le [label="ループ終わり"];
21        j [label="エンド"];
22        
23        a->i;
24        i->b;
25        b->c;
26        c->ls;
27        ls->d;
28        d->e [label="  "];
29        e->f [label="Yes"];
30        e->le [label="No"];
31        f->g [label="  "];
32        g->h [label="Yes"];
33        g->f [label="No"];
34        h->le;
35        le->j;
36        
37}
digraph G3 {
    graph [size="3,8"]

    node [shape=hexagon] i;
    node [shape=box] d f;
    node [shape=parallelogram] b c h;
    node [shape=trapezium] ls;
    node [shape=invtrapezium] le;
    node [shape=diamond] e g ;
    node [shape=box,style=rounded] a j ;
        a [label="スタート"];
        i [label="Ca原子のみを取り出したファイルを作成する"];
        b [label="比較する2つのファイルA,Bを読み込む"];
        c [label="各リスト←A,Bのx,y,z座標,残基番号"];
        ls [label="ループはじまり"];
        d [label="各リストを読み込む"];
        e [label="AとBで同じ残基番号が存在する"];
        f [label="残基番号が同じもの同士の距離を調べる"];
        g [label="距離≧threshold"];
        h [label="その残基番号のリストを表示"];
        le [label="ループ終わり"];
        j [label="エンド"];

        a->i;
        i->b;
        b->c;
        c->ls;
        ls->d;
        d->e [label="  "];
        e->f [label="Yes"];
        e->le [label="No"];
        f->g [label="  "];
        g->h [label="Yes"];
        g->f [label="No"];
        h->le;
        le->j;

}

図 3.1 structchange.pyのフローチャート

4. 実行例2

次に実行例1に変更を加え、元のpdbファイルを使用してプログラミングを行ったものについて、 フローチャートを作成した.

リスト 4.1 unexpected.dot
 1digraph G4 {
 2    graph [size="8,16"];
 3    node [shape=parallelogram] b h;
 4    node [shape=box] d f;
 5    node [shape=diamond] e g ;
 6    node [shape=component] c ;
 7    node [shape=trapezium] ls;
 8    node [shape=invtrapezium] le;
 9    node [shape=box,style=rounded] a j ;    
10        a [label="スタート"]; 
11        b [label="読み込む2つのファイルA,Bを指定"]
12        c [label="関数pdb2list"]
13        d [label="各リスト←A,B"];
14        ls [label="ループのはじまり\n各リスト"];
15        le [label="ループの終わり\n各リスト"];        
16        e [label="AとBで同じ残基番号が存在する"];
17        f [label="残基番号が同じもの同士の距離を調べる"];
18        g [label="距離≧threshold"]
19        h [label="その残基番号のリストを表示"];
20        j [label="エンド"];
21
22        
23        a->b;
24        b->c;
25        c->d;
26        d->ls;
27        ls->e [label="  "];
28        e->f [label="Yes"];
29        e->le [label="No"];
30        f->g [label="  "];
31        g->h [label="Yes"];
32        g->f [label="No"];
33        h->le;
34        le->j;
35
36    graph [size="8,16"];
37    node [shape=hexagon] b2;
38    node [shape=parallelogram] c2 g2 h;
39    node [shape=diamond] d2 e2 f2 ;
40    node [shape=trapezium] ls2;
41    node [shape=invtrapezium] le2;
42    node [shape=box,style=rounded] a2 h2 ;    
43        a2 [label="関数\n(pdb2list)"]; 
44        b2 [label="x,y,z座標と残基番号を入れる空リストを作成"];
45        c2 [label="ファイルを読み込む"]
46        d2 [label="1文字目から6文字目まで(name)の間に\nATOMが含まれている"];
47        e2 [label="21文字目から23文字目まで(chain)の間に\n後に指定する原子の名前(mol)が含まれている"];
48        f2 [label="12文字目から16文字目まで(gensi)の間に\nCAが含まれている"];
49        g2 [label="リストに書き出す"];
50        h2 [label="リターン"];
51        ls2 [label="ループのはじまり\nファイル"];
52        le2 [label="ループの終わり\nファイル"];           
53        
54        a2->b2;
55        b2->c2;
56        c2->ls2;
57        ls2->d2 [label="   "];
58        d2->e2 [label="Yes"];
59        e2->f2 [label="Yes"];
60        f2->g2 [label="Yes"];
61        d2->le2 [label="No"];
62        e2->le2 [label="No"];
63        f2->le2 [label="No"];
64        g2->le2;
65        le2->h2;
66        
67}
digraph G4 {
    graph [size="8,16"];
    node [shape=parallelogram] b h;
    node [shape=box] d f;
    node [shape=diamond] e g ;
    node [shape=component] c ;
    node [shape=trapezium] ls;
    node [shape=invtrapezium] le;
    node [shape=box,style=rounded] a j ;
        a [label="スタート"];
        b [label="読み込む2つのファイルA,Bを指定"]
        c [label="関数pdb2list"]
        d [label="各リスト←A,B"];
        ls [label="ループのはじまり\n各リスト"];
        le [label="ループの終わり\n各リスト"];
        e [label="AとBで同じ残基番号が存在する"];
        f [label="残基番号が同じもの同士の距離を調べる"];
        g [label="距離≧threshold"]
        h [label="その残基番号のリストを表示"];
        j [label="エンド"];


        a->b;
        b->c;
        c->d;
        d->ls;
        ls->e [label="  "];
        e->f [label="Yes"];
        e->le [label="No"];
        f->g [label="  "];
        g->h [label="Yes"];
        g->f [label="No"];
        h->le;
        le->j;

    graph [size="8,16"];
    node [shape=hexagon] b2;
    node [shape=parallelogram] c2 g2 h;
    node [shape=diamond] d2 e2 f2 ;
    node [shape=trapezium] ls2;
    node [shape=invtrapezium] le2;
    node [shape=box,style=rounded] a2 h2 ;
        a2 [label="関数\n(pdb2list)"];
        b2 [label="x,y,z座標と残基番号を入れる空リストを作成"];
        c2 [label="ファイルを読み込む"]
        d2 [label="1文字目から6文字目まで(name)の間に\nATOMが含まれている"];
        e2 [label="21文字目から23文字目まで(chain)の間に\n後に指定する原子の名前(mol)が含まれている"];
        f2 [label="12文字目から16文字目まで(gensi)の間に\nCAが含まれている"];
        g2 [label="リストに書き出す"];
        h2 [label="リターン"];
        ls2 [label="ループのはじまり\nファイル"];
        le2 [label="ループの終わり\nファイル"];

        a2->b2;
        b2->c2;
        c2->ls2;
        ls2->d2 [label="   "];
        d2->e2 [label="Yes"];
        e2->f2 [label="Yes"];
        f2->g2 [label="Yes"];
        d2->le2 [label="No"];
        e2->le2 [label="No"];
        f2->le2 [label="No"];
        g2->le2;
        le2->h2;

}

図 4.1 unexpected.pyのフローチャート