質問編集履歴
4
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -130,7 +130,7 @@
|
|
130
130
|
|
131
131
|
私はこのコードでマルチプルアライメントされたアミノ酸の保存度を計算しようと試みています。その際に、valder式を用いていて、この式の分母を計算する段階にいます。
|
132
132
|
|
133
|
-
ここで、コードの「denominate = []」、以下のfor文の中で「paramate = 0」の値を、for文が回るたびに更新していきたいと考え、上記のようなコードを書きました。しかし、paramateの値が更新されていなくて困っています。
|
133
|
+
ここで、コードの「denominate_half = []」、以下のfor文の中で「paramate = 0」の値を、for文が回るたびに更新していきたいと考え、上記のようなコードを書きました。しかし、paramateの値が更新されていなくて困っています。
|
134
134
|
|
135
135
|
|
136
136
|
|
3
やりたいことを具体的にまとめました、よろしくお願いします。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,36 +1,122 @@
|
|
1
1
|
```python3
|
2
|
+
|
3
|
+
data = ["DDDDDDDDDD","DDDDDDDDDE","DDDDDEEEEE","DDDDDDDDDF","DDDDDEEEEF",
|
4
|
+
|
5
|
+
"DDDDDEEEFF","IIIILLLLVV","PPPPWWWWSS","DVYATKPCRH","LLLL"
|
6
|
+
|
7
|
+
,"LLLL------"]
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
#(1)アライメントの長さを計測し、各サイトの配列数も計上する。
|
14
|
+
|
15
|
+
alignment_num = len(data)
|
16
|
+
|
17
|
+
num = 7
|
18
|
+
|
19
|
+
string_1 = data[num]
|
20
|
+
|
21
|
+
sequense_num = len(string_1)
|
22
|
+
|
23
|
+
print("アライメントの長さは"+str(alignment_num)+"で、サイト番号が" +str(num)+"の配列数は"+str(sequense_num)+"個である。")
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
#(2)試験的にサイト7の保存度を算出してみる。
|
28
|
+
|
29
|
+
amino_acid_type = "STYGAVLIFDNEQMCHKPWR"
|
30
|
+
|
31
|
+
amino_acid_frequency = {}
|
32
|
+
|
33
|
+
amino_acid_num = []
|
34
|
+
|
35
|
+
result_num = {}
|
36
|
+
|
37
|
+
for test in amino_acid_type:
|
38
|
+
|
39
|
+
result = string_1.count(test)
|
40
|
+
|
41
|
+
if result > 0 :
|
42
|
+
|
43
|
+
frequency = (result/sequense_num)
|
44
|
+
|
45
|
+
amino_acid_frequency.setdefault(test,frequency)
|
46
|
+
|
47
|
+
amino_acid_num.append(test)
|
48
|
+
|
49
|
+
result_num.setdefault(test,result)
|
50
|
+
|
51
|
+
print("サイト中に"+test+"のアミノ酸が"+str(result)+"個存在していて、頻度は"+str(frequency)+"である")
|
52
|
+
|
53
|
+
gap = "-"
|
54
|
+
|
55
|
+
result_2 = string_1.count(gap)
|
56
|
+
|
57
|
+
if result_2 > 0:
|
58
|
+
|
59
|
+
print("サイト中のgapの数は"+str(result_2)+"個です。")
|
60
|
+
|
61
|
+
else:
|
62
|
+
|
63
|
+
continue
|
64
|
+
|
65
|
+
print("この配列中には、" + str(len(amino_acid_num)) + "個の種類のアミノ酸がある。")
|
66
|
+
|
67
|
+
print("この下の辞書には、分母のkに代入する各アミノ酸の個数が記録されている。")
|
68
|
+
|
69
|
+
print(result_num)
|
70
|
+
|
71
|
+
print("この下の辞書には、分母のnに代入する各アミノ酸に対応する頻度が計算されている。")
|
72
|
+
|
73
|
+
print(amino_acid_frequency)
|
74
|
+
|
75
|
+
keys_for_k = [e for e, w in result_num.items() ]
|
76
|
+
|
77
|
+
keys_for_n = [k for k, v in amino_acid_frequency.items()]
|
78
|
+
|
79
|
+
print(keys_for_k)
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
denominator_half = []
|
2
84
|
|
3
85
|
for i in range (2):
|
4
86
|
|
5
87
|
paramate = 0
|
6
88
|
|
7
|
-
print(paramate)
|
8
|
-
|
9
89
|
for string_2 in string_1[paramate:sequense_num-1]:
|
10
90
|
|
11
91
|
for string_3 in keys_for_k:
|
92
|
+
|
93
|
+
paramate += 1
|
12
94
|
|
13
95
|
if string_3 in string_2:
|
14
96
|
|
15
97
|
k_value = result_num[string_3]
|
16
98
|
|
17
|
-
print(k_value)
|
99
|
+
#print(k_value)
|
18
100
|
|
19
101
|
n_value = amino_acid_frequency[string_3]
|
20
102
|
|
21
|
-
print(n_value)
|
103
|
+
#print(n_value)
|
22
104
|
|
23
105
|
denominator_1 = (1/alignment_num) * (1/(k_value * n_value))
|
24
106
|
|
25
|
-
print(denominator_1)
|
107
|
+
#print(denominator_1)
|
26
108
|
|
27
109
|
denominator_half.append(denominator_1)
|
28
|
-
|
29
|
-
paramate += 1
|
30
110
|
|
31
111
|
else:
|
32
112
|
|
33
113
|
continue
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
print(len(denominator_half))
|
118
|
+
|
119
|
+
print(denominator_half)
|
34
120
|
|
35
121
|
```
|
36
122
|
|
@@ -38,6 +124,44 @@
|
|
38
124
|
|
39
125
|
|
40
126
|
|
41
|
-
|
127
|
+
#####質問
|
42
128
|
|
43
|
-
|
129
|
+
質問を再編集しました。今回やりたいことを具体的に記載します。
|
130
|
+
|
131
|
+
私はこのコードでマルチプルアライメントされたアミノ酸の保存度を計算しようと試みています。その際に、valder式を用いていて、この式の分母を計算する段階にいます。
|
132
|
+
|
133
|
+
ここで、コードの「denominate = []」、以下のfor文の中で「paramate = 0」の値を、for文が回るたびに更新していきたいと考え、上記のようなコードを書きました。しかし、paramateの値が更新されていなくて困っています。
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
このコードのどの部分が間違っているのかわかりません。
|
138
|
+
|
139
|
+
ご回答をいただいた方の文章中に、このコードが正常に動いていないのでは?と、ご指摘があったので、参考までに、以下に実行結果を記載します。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
#####実行結果
|
144
|
+
|
145
|
+
アライメントの長さは11で、サイト番号が7の配列数は10個である。
|
146
|
+
|
147
|
+
サイト中にSのアミノ酸が2個存在していて、頻度は0.2である
|
148
|
+
|
149
|
+
サイト中にPのアミノ酸が4個存在していて、頻度は0.4である
|
150
|
+
|
151
|
+
サイト中にWのアミノ酸が4個存在していて、頻度は0.4である
|
152
|
+
|
153
|
+
この配列中には、3個の種類のアミノ酸がある。
|
154
|
+
|
155
|
+
この下の辞書には、分母のkに代入する各アミノ酸の個数が記録されている。
|
156
|
+
|
157
|
+
{'S': 2, 'P': 4, 'W': 4}
|
158
|
+
|
159
|
+
この下の辞書には、分母のnに代入する各アミノ酸に対応する頻度が計算されている。
|
160
|
+
|
161
|
+
{'S': 0.2, 'P': 0.4, 'W': 0.4}
|
162
|
+
|
163
|
+
['S', 'P', 'W']
|
164
|
+
|
165
|
+
18
|
166
|
+
|
167
|
+
[0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.2272727272727273, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.05681818181818182, 0.2272727272727273]
|
2
編集完了しました。よろしくお願いします
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
```python3
|
2
|
+
|
1
3
|
for i in range (2):
|
2
4
|
|
3
5
|
paramate = 0
|
@@ -30,6 +32,10 @@
|
|
30
32
|
|
31
33
|
continue
|
32
34
|
|
35
|
+
```
|
36
|
+
|
37
|
+
|
38
|
+
|
33
39
|
|
34
40
|
|
35
41
|
この繰り返しの中で、paramateの値を随時変更していきたいのですが、この記述方法では、paramateの値が更新されないのはどうしてなのでしょうか??
|
1
#を消しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
k_value = result_num[string_3]
|
14
14
|
|
15
|
-
|
15
|
+
print(k_value)
|
16
16
|
|
17
17
|
n_value = amino_acid_frequency[string_3]
|
18
18
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
denominator_1 = (1/alignment_num) * (1/(k_value * n_value))
|
22
22
|
|
23
|
-
|
23
|
+
print(denominator_1)
|
24
24
|
|
25
25
|
denominator_half.append(denominator_1)
|
26
26
|
|
@@ -30,6 +30,8 @@
|
|
30
30
|
|
31
31
|
continue
|
32
32
|
|
33
|
+
|
34
|
+
|
33
35
|
この繰り返しの中で、paramateの値を随時変更していきたいのですが、この記述方法では、paramateの値が更新されないのはどうしてなのでしょうか??
|
34
36
|
|
35
37
|
調べて見たのですが、あまり答えらしきものが出ていなかったのでここで質問させていただきます。よろしくお願いします。
|