본문 바로가기

파이썬3

2개의 회귀선의 기울기를 통계적으로 비교하는 법 H0 : beta1과 beta2는 같다. H1 : beta1과 beta2는 다르다. def compare_slope_test(x1,x2,y): from statsmodels.formula.api import ols import numpy as np from scipy.stats import t ''' x1,x2,y : np.array or list conatining numeric values. They should have same size. ''' df=pd.DataFrame({'x1':x1,'x2':x2,'y':y}) x1_model=ols('y~x1',data=df).fit() x2_model=ols('y~x2',data=df).fit() slope_difference=x1_model.params.. 더보기
vcf를 pandas dataframe으로 변경하는 코드 import pandas as pd def vcf2df(path): ''' 이 명령어는 vcf파일을 pd.DataFrame으로 변환하기 위한 스크립트임. path : 파일 경로 ''' with open(path,'r') as f: lines = f.readlines() chrom_index = [i for i, line in enumerate(lines) if line.strip().startswith("#CHROM")] data = lines[chrom_index[0]:] header = data[0].strip().replace('#','').split("\t") informations = [d.strip().split("\t") for d in data[1:]] vcf = pd.DataFrame(i.. 더보기
실행 중인 노트북들 한번에 종료하는 스크립트 ''' 이 스크립트는 jupyter-notebook을 중단시키기 위한 스크립트임. 사용하다보면 메모리 사용량이 너무 커지므로 이를 활용해서 제거하기 위함임. ''' import subprocess as sbp import os def listing_jupyter_pid(): cmd='ps -ef | grep conda | grep sjoh | grep json' pids=sbp.check_output(cmd,shell=True) pids=str(pids) pids=pids.replace("b'",'') pids=pids.split('\\n') pids=list(filter(lambda x: '.json' in x,pids)) while ' ' in pids[0]: pids=list(map(lambda x.. 더보기
pd.read_csv 빠르게 하는 법 pip install pyarrow pd.read_csv('csv파일', engine='pyarrow') 더보기
protein sequence one-hot encoding 단백질 서열을 원핫 인코딩할 때 유용하게 쓸 수 있다. 매우 빠른 속도로 할 수 있다. amino_acids = "ACDEFGHIKLMNPQRSTVWY" # 20 standard amino acids # Create a dictionary to map each amino acid to its index aa_dict = {aa: i for i, aa in enumerate(amino_acids)} def encode_peptide(sequence): # Initialize the encoding matrix with zeros encoding = [[0] * len(amino_acids) for i in range(len(sequence))] # Encode each amino acid as a one-.. 더보기
f-string 사용법 내가 만든 프로그램이 작동하는지 확인하기 위해 종종 중간에 메세지를 내보내면 할 때가 있다. 또는 메세지 중간에 많은 변수들이 들어가야할 때가 있다. 이럴 때 쉽게 사용할 수 있는 것이 파이썬의 f-string이다. var1='Kim' print(f'{var1} : hi') # Kim : hi names=['kim','oh','lee'] for name in names: print(f'{name} : hi') # kim : hi # oh : hi # lee : hi 위와 같이 f를 쓴 후에 넣고 싶은 문장을 뒤에 붙이면 된다. 이 때 {} 안에 원하는 변수를 넣으면 된다. 소수점을 포맷팅할 수도 있다. # 예제 1 pi=3.1415926 # 소수점 미만 2자리까지만 출력 print(f'{pi:.2f}').. 더보기
[biopython] Gene symbol/alias/Entrez id얻기 유전자 분석을 하면 결국 official genesymbol이나 entrez id등을 활용할 필요가 생긴다. 이를 위한 스크립트는 아래와 같다. def get_entrez(x=None,human_only=True): if x is None: print( ''' 이 기능은 주어진 유전자의 input/symbol/Aliases/entrez 아이디를 돌려주는 기능임 NCBI에 등록된 것을 기준으로 하기에 최신 정보만 들어옴 실행 전에 아래의 명령어를 실행할 것 1) from Bio import Entrez 2) Entrez.email = 'email@address.com' param x: gene name/id (ex. 'TP53', 'P29996', ...) param human_only: True일 경우 .. 더보기
[biopython] NCBI에서 단백질 서열 (protein sequence) 얻기 단백질 서열을 사용해야할 때가 가끔 있다. 이 경우 NCBI에 등록된 id라면 biopython으로 쉽게 단백질 서열을 얻을 수 있다. from Bio import Entrez Entrez.email = "이메일@주소.com" def retrieve_peptideSeq_from_uniprot(x=None): if x is None: print( ''' This function retrieves peptide sequence for the given geneID. Before use this, please do following steps. from Bio import Entrez Entrez.email = 'email@address.com' param x: uniprot ID such as P29996 .. 더보기