5

私の知識のレベル (または不足) を考えると、このタスクはおそらく少し野心的ですが、それでもなお.

約 3000 項目の長さの 16 文字列のリストがあり、各文字は別の数字のリストを表します。私がそれを明確にしているかどうかはわかりません。実際には、16 アミノ酸長のペプチドのリストであり、各アミノ酸 (20 のうちの 1 つ) は 5 つの数字で表されます。

そのリスト (ペプチド) を反復処理し、各文字 (アミノ酸) について、関連する 5 つの数値 (興味がある場合はアッチリー係数) を配列に追加して、3 次元配列を作成します。 : ペプチドのインスタンス (3000) x そのペプチド内のアミノ酸 (16) x 係数 (5)。

私は信じられないほど私の深さから外れているので、私が持っているものが役立つかどうかはわかりませんが、ここにあります(numpyを使用):

array = np.empty(shape=(len(peptides),16,5)

for i in peptides:

    for j in str(i):

(そして、この時点で、フォーラムをトロールしながらさまざまなことを試し、このようなもので終わりましたが、ここで目指していたことさえ逃したと確信しています)

    if j == 'A':    
            L16Afctrs = np.append([-0.59145974, -1.30209266, -0.7330651, 1.5703918, -0.14550842], axis=1)
    elif j == 'C':
            L16Afctrs = np.append([-1.34267179, 0.46542300, -0.8620345, -1.0200786, -0.25516894], axis=1)
    ...
    elif j == 'Y':
            L16Afctrs = np.append([0.25999617, 0.82992312, 3.0973596, -0.8380164, 1.51150958], axis=1)

私が言うように、私は正直に苦労しています。

編集:明確化(うまくいけば)

約 3000 の異なる 16 文字の文字列のリストがあり、これらの文字列の各文字はさらに 5 つの数字を表します。

私は 3 次元配列または構造を生成したいと考えています。これにより、(最終的に) 3 次元配列内の特定の平面を見渡すことで、3000 個の文字列すべての特定の位置にこれらの 5 つの数値をプロットできます (私が想定している次元は元のものです)。文字列×16文字×5要素)。

私は現在、@Winstonからの投稿に関連して、さまざまな文字の辞書を作成し、それを3D配列に折りたたもうとしています。

編集 2: 成功!

Winston の修正は見事に機能します。

4

1 に答える 1

2

データを辞書に保存します。

DATA = {
    'A' : numpy.array([-0.59145974, -1.30209266, -0.7330651, 1.5703918, -0.14550842]),
    'B' : numpy.array([-1.34267179, 0.46542300, -0.8620345, -1.0200786, -0.25516894]),
    'D' : numpy.array([1.05015062, 0.30242411, -3.6559147, -0.2590236, -3.24176791])
    ...
}

Pythonリスト内包表記を使用してそれらすべてのリストを作成し、numpyにそのリストをnumpy配列に変換させます

counters = numpy.array([DATA[letter] for peptide in peptides for letter in peptide])

最後のステップには2D配列があるため、配列を3D次元に再形成します

counters = counters.reshape( len(peptides), 16, 5 )
于 2012-11-09T18:51:47.337 に答える