ビッグデータ解析の初期例


Pythonを使用してDNAデータを開き、加工します。


1. readlines()



readlines():すべてのローをローで出力します.

2. readline()



readline():上から1行しか出力されません

3. splitlines(True)



4. writelines



上の結果を見ると、「n」文字が表示されます.ただし、データ分析は不要なので削除が必要です.次のように「n」の文字を削除する必要があります.

5. replace('\n','')



スペース("")、"r"などの文字も上記のように置き換えることができます.

6.DNA配列をアミノ酸配列に変換する

with open("NM_207618.fasta", "r") as DNA:
    data = DNA.read().splitlines(True)
with open('1115dna.txt', 'w') as output:
    output.writelines(data[1:]) #첫번째 줄 제외 
f = open("1115dna.txt", "r")
a = f.read().replace('\n','')

def convert(seq):
    # 아미노산 시퀀스 변환 
    genetic_code = {
        'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
        'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
        'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',
        'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',
        'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',
        'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',
        'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',
        'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',
        'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',
        'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',
        'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',
        'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',
        'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',
        'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',
        'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',
        'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',
    }
    protein = ""
    if len(seq) % 3 == 0:
        for i in range(0, len(seq), 3): #데이터의 길이가 3의 배수이면 아래를 실행
            codon = seq[i: i+3]
            protein += genetic_code[codon]
    return protein
print(convert(a[20:938]))

7.変換後のアミノ酸配列とサイトからダウンロードしたアミノ酸配列が一致しているかを比較する

prot = read_seq('protein.txt')
prot == Convert(dna[20:935]) #True

統計および数学機能用Numpy


Numpyは科学計算のためにPythonによって作られた.Numpyはn次元配列のオブジェクトであり,離散数学や乱数生成などの機能を提供する.ただし,Cベースで動的に生成されたPythonリストとは異なり,Numpy配列の生成時のサイズは静的メモリ割当てと同じである.Numpyの特別なもう一つの原因は天書flowとの互換性です!

Numpyのインストールと基礎

pip install Numpy #요렇게 설치할 수 있다 
次の表に示すように、まずimport文インポートモジュールを使用して、データをNumpy形式に変更し、必要なNumpy機能を実行します.
import numpy as np		🎸numpy 모듈 가져오기  
x = np.array([1,3,5])		🎸파이썬의 데이터형(리스트)을 Numpy 형식으로 변환 
print(x.mean())			🎸Numpy에서 제공하는 기능 수행 
Numpyが提供する配列を使用して、配列に格納されている要素の平均値を計算します.次にarray()という名前の方法で1次元配列を作成できます.その後、mean()というメソッドを使用して、対応する値を得ることができます.

1 Dアレイの確認

print(x.shape) 	#(3,) 출력
ここではshapeクラスが提供するプロパティです.その結果,1次元配列には3つの要素があることが分かった.shapeはNumpy配列のオブジェクトがサポートする属性です.だから関数のように()はできません.
Quiz 9.1
import numpy as np 
a = np.array([[1,2,3], [2,3,4]])  #[], [] 을 [] 로 한 번 더 감싸야함
print(a.shape)

reshape()


ここでreforme(行、列)メソッドを追加すると、次のように任意の形状のNumpy 2 D配列を生成できます.
x = np.array([1,3,5,7,9,11]).reshape(3,2)
print(x)

결과
[[ 1  3]
 [ 5  7]
 [ 9 11]]

zeros([])


2 D配列を0(1)の値で埋めるには、次の操作を行います.
y = np.zeros([3,4])
print(y)

결과 
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

Numpy配列でのスライド


以下はPythonの2次元リストで、すべての要素を出力する2番目の要素です.
import numpy as np 
list = ([[1,11], [2,12], [3,13]])
np_ary = np.array(list)
print(np_ary[:,1]) #import numpy as np 

list1 = [[1,11], [2,12], [3,13]]
print(np.array(list1[:,1]))    
#TypeError: list indices must be integers or slices, not tuple
#리스트의 인덱스들은 튜플이어선 안 되며 반드시 정수나 슬라이스여야 한다. => 그냥 선언하면 튜플임
リストを直接使用することはできません.2 Dリストを最初にNumpyの配列フォーマットに変換し、次のように表示します.

Numpyによる演算

import math 
math.sqrt(2) #1.4142135623730951

# 리스트로 줘도 계산이 가능하다 
np.sqrt([2,3,4]) #array([1.41421356, 1.73205081, 2.        ])
한가지 확인해볼 수 있는 특징은 2. 뒤의 공백인데 메모리에 미리 공간을 할당해줌

プロセスマトリックス

import numpy as np 
a = np.arange(15)
print(a)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

b = a.reshape(3,5) #reshape(⬇️➡️) 요 순서다
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
       
quiz 9.4 6은 어떻게 출력? 
print(b[1][1]) 

ゼロベクトルとゼロマトリクス

import numpy as np 
zero_vector = np.zeros(3)
zero_vector #array([0., 0., 0.])
次のコードを実行すると、0に初期化された(4*3)形式の2 D配列が生成されます.
zero_matrix = np.zeros((4,3))
zero_matrix

#array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
一般的なリストの結果とは異なり、2つの配列に格納されたコンテンツはインデックスによって求められ、出力されます.これは線形代数の行列和と同じ概念であり,他の4則演算においても同様である.
x = np.array([1,2,3])
y = np.array([100,1000,10000])
z = x + y
z #array([  101,  1002, 10003])
以下にも適用できる.
x = np.array([1,2,3])
y = x + 1
y #array([2, 3, 4])
quiz 9.7
x = np.array([4,8,12])
y = np.array([2,4,6])
z = x // y 
z # array([2, 2, 2], dtype=int32)

リスト索引


リスト・インデックス・メソッドを使用して、新しいNumpy配列にアクセスできます.
a = np.array([10,20,30,40,50,60,70,80,90])
print(a[1::2])

ブライアン


次に、Numpyが提供するBooleanアレイを示します.
a = np.array([10,20,30,40,50,60,70,80,90])
b = a > 50
print(b) #[False False False False False  True  True  True  True]

等分間隔


Numpyは、開始値と終了値を指定し、両者の間で値を平均的に割り当てる機能を提供します.
np.linspace(0,12,4) # array([ 0.,  4.,  8., 12.])
np.linspace(0,12,4, retstep=True) # (array([ 0.,  4.,  8., 12.]), 4.0)
#retstep(return step)이 참이면 샘플 간의 간격을 마지막 값으로 출력함

np.linspace(0,12,3,endpoint=False) #array([0., 4., 8.]) 마지막 값 생략