Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Inferring mRNA from Protein: Products and Reductions of Lists

onouyek
February 25, 2022

Inferring mRNA from Protein: Products and Reductions of Lists

onouyek

February 25, 2022
Tweet

More Decks by onouyek

Other Decks in Programming

Transcript

  1. 環境構築 - 必要パッケージ群のインストール # 公開されているレポジトリからファイル群を取得 $ git clone https://github.com/kyclark/biofx_python $

    cd biofx_python # requirements.txtに記載のパッケージをインストール $ pip3 install -r requirements.txt # pylintの設定ファイルをホームディレクトリに移動 $ cp pylintrc ~/.pylintrc # mypyの設定ファイルをホームディレクトリに移動 $ cp mypy.ini ~/.mypy.ini
  2. デカルト積 >>> from itertools import product >>> from pprint import

    pprint >>> combos = list(product(*codons)) >>> pprint(combos) [('AUG', 'GCA', 'UAA'), ('AUG', 'GCA', 'UAG'), ('AUG', 'GCA', 'UGA'), ('AUG', 'GCC', 'UAA'), ('AUG', 'GCC', 'UAG'), ('AUG', 'GCC', 'UGA'), ('AUG', 'GCG', 'UAA'), ('AUG', 'GCG', 'UAG'), ('AUG', 'GCG', 'UGA'), ('AUG', 'GCU', 'UAA'), ('AUG', 'GCU', 'UAG'), ('AUG', 'GCU', 'UGA')] 第9回で扱ったitertools.product()でデカルト積を生成できる
  3. 剰余演算におけるオーバーフロー >>> 5 % 2 1 %演算子による剰余の計算 >>> import math

    >>> math.prod(range(1, 1000)) % 1000000 0 math.prod()で1000の階乗で1,000,000の余りを求めようとするとfloatの上限を超えてしまうため結果が0になってしまう
  4. functools.reduce() >>> reduce(lambda x, y: x + y, possible) 8

    2つの引数を受け取る関数を定義して配列を累積的に処理して 1つの値を返す >>> reduce(lambda x, y: x * y, possible) 12 Sum Product 1 4 3 + 5 3 + 8 1 4 3 * 4 3 * 12
  5. Solution 2: 辞書のkeyをアミノ酸にする >>> pprint(dict(map(reversed, c2aa.items()))) {'*': 'UGA', 'A': 'GCU',

    'C': 'UGU', 'D': 'GAU', 'E': 'GAG', 'F': 'UUU', 'G': 'GGU', 'H': 'CAU', 'I': 'AUU', 'K': 'AAG', 'L': 'UUG', 'M': 'AUG', 'N': 'AAU', 'P': 'CCU', 'Q': 'CAG', 'R': 'CGU', 'S': 'UCU', 'T': 'ACU', 'V': 'GUU', 'W': 'UGG', 'Y': 'UAU'} reversed()するだけだとvalueが1つのコドンだけになってしまう >>> aa2codon = defaultdict(list) >>> for k, v in c2aa.items() aa2codon[v].append(k) >>> pprint(aa2codon) defaultdict(<class 'list'>, {'*': ['UAA', 'UAG', 'UGA'], 'A': ['GCA', 'GCC', 'GCG', 'GCU'], 'C': ['UGC', 'UGU'], 'D': ['GAC', 'GAU'], 'E': ['GAA', 'GAG'], 'F': ['UUC', 'UUU'], 'G': ['GGA', 'GGC', 'GGG', 'GGU'], 'H': ['CAC', 'CAU'], 'I': ['AUA', 'AUC', 'AUU'], 'K': ['AAA', 'AAG'], 'L': ['CUA', 'CUC', 'CUG', 'CUU', 'UUA', 'UUG'], 'M': ['AUG'], 'N': ['AAC', 'AAU'], 'P': ['CCA', 'CCC', 'CCG', 'CCU'], 'Q': ['CAA', 'CAG'], 'R': ['AGA', 'AGG', 'CGA', 'CGC', 'CGG', 'CGU'], 'S': ['AGC', 'AGU', 'UCA', 'UCC', 'UCG', 'UCU'], 'T': ['ACA', 'ACC', 'ACG', 'ACU'], 'V': ['GUA', 'GUC', 'GUG', 'GUU'], 'W': ['UGG'], 'Y': ['UAC', 'UAU']})