반응형

log 파일 작성 모듈 logging.

 

import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(levelname)s %(asctime)s] %(message)s',"%Y-%m-%d %H:%M:%S")

stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)

file_handler = logging.FileHandler(f'my.log')
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)

logging.info(f'Read Database File')
logging.debug(f'Read Database File')

 

handler를 여러 개 만들어서 하나는 stdout 다른 하나는 my.log 파일로 만들고 level에 따라 출력 범위를 다르게 조절한다.

 

위의 예시에서는 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 중에 debug는 파일로만 생성되도록 설정되었다.

 

개발 단계에서는 stream_handler를 DEBUG로 놓고 진행하다가 개발 완료시 INFO로 수정하면 원하는 부분만 출력하도록 조정 가능하다.

 

a = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0].decode('UTF-8')
logging.debug(f'{cmd}\n{a}')

subprocess와 연결해서 command를 입력하고 나오는 출력물까지 debug로 한 번에 연결 할 수 있다.

반응형

'Computer Science > python' 카테고리의 다른 글

Progress bar 모듈 tqdm  (0) 2022.03.07
pandas 활용하기  (0) 2022.02.18
f-string을 활용한 regex 사용법  (0) 2022.02.15
Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
반응형

 

read 서열에서 error를 1이하로 허용하는 내에 BESTMATCH를 찾아 시작과 종료지점 그리고 매치되는 서열을 확인하는 코드. error는 mismatch, insertion, deletion을 의미한다.

 

import regex

primer_seq, read_seq

regex_primer_seq = fr'({primer_seq}{{e<=1}})'
match_object = regex.search(regex_primer_seq, read_seq, regex.BESTMATCH)

match_start, match_end = match_object.span()
match_seq = match_object.captures()
반응형

'Computer Science > python' 카테고리의 다른 글

pandas 활용하기  (0) 2022.02.18
logging 모듈 사용하기  (0) 2022.02.17
Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
python multi-level argparse  (0) 2019.07.12
반응형

NGS 데이터에서 adapter 서열과 primer 서열에 따른 read 분류.

 

아래는 pseudo code 이므로 적절한 변환이 필요하다.

import regex

#ambiguous base list
ambiguous_base_dic = {"N":"ATGC","R":"AG","Y":"TC","K":"GT","M":"AC","S":"GC","W":"AT","B":"CGT","D":"AGT","H":"ACT","V":"ACG"}

#if ambiguous base occured, change to regular expression format
for word, initial in ambiguous_dic.items():
	primer_f = primer_f.replace(word, "["+initial+"]")
    
#index sequences are allowed one mismatch
primer = r"(^{0})".format(primer_f)+"{e<=1}"

#if primer sequence is inside sequence, print out.
if regex.findall(primer, sequence):
	print(sequence)

 

 

 

반응형

'Computer Science > python' 카테고리의 다른 글

logging 모듈 사용하기  (0) 2022.02.17
f-string을 활용한 regex 사용법  (0) 2022.02.15
String Format으로 길이 고정하기  (0) 2020.06.24
python multi-level argparse  (0) 2019.07.12
python 파일 입출력  (0) 2019.07.12
반응형

string의 format 함수로 글자 길이 고정하기.

 

print('{:<5s} [{:20s}] {:^30s} {:>5s}'.format('#####', time.ctime(), cnt_step,'#####'))

 

들여쓰기 하고 싶은 방향에 따라 <, ^, >를 넣어주면 된다.

반응형

'Computer Science > python' 카테고리의 다른 글

f-string을 활용한 regex 사용법  (0) 2022.02.15
Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
python multi-level argparse  (0) 2019.07.12
python 파일 입출력  (0) 2019.07.12
Python 설치 및 실행하기  (0) 2017.08.16
반응형

python multi-level argparse

 

 

parser = argparse.ArgumentParser()

subparser = parser.add_subparsers(help='Desired action to perform', dest='action')

parent_parser = argparse.ArgumentParser(add_help=False)

parser_ReDemulti = subparser.add_parser("ReDemulti", parents=[parent_parser], help='Re Demultiplexing')
parser_ReDemulti.add_argument("RunID", help='Only require one run ID which have Samplesheet_gpcd.csv')

parser_MultiAnal = subparser.add_parser("MultiAnal", parents=[parent_parser], help='Multiple Analysis from One Customer')
parser_MultiAnal.add_argument("SampleFile", help='A file with one sample ID per line')

parser_NoData = subparser.add_parser("NoDataSamples", parents=[parent_parser], help='Re Run No-Data Samples')
parser_NoData.add_argument("SampleFile", help='A file with one sample ID per line')

parser_RunFastQC = subparser.add_parser("RunFastQC", parents=[parent_parser], help='Run from FastQC Step')
parser_RunFastQC.add_argument("SampleID", help='Only require one sample ID')

parser_RmDenovo = subparser.add_parser("RmDenovoFiles", parents=[parent_parser], help='Remove Database Files in denovo01')
parser_RmDenovo.add_argument("SampleID", help='Only require one sample ID')

args = parser.parse_args()
반응형

'Computer Science > python' 카테고리의 다른 글

Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
python 파일 입출력  (0) 2019.07.12
Python 설치 및 실행하기  (0) 2017.08.16
cannot mkdir R_TempDir 에러  (0) 2016.09.07
반응형

python 파일 입출력

 

 

python에서 파일을 찾고, 파일이 없을시 except 출력, 있다면 파일을 열어서 본문을 수행하고 파일 닫고 종료.

 

        try : 
                list_file = open(list_file_name) 

        except OSError : 
                print('can\'t find '+list_file_name) 

        else : 
                with listfile : 
                        for line in listfile :
                        	# do somthing

 

반응형

'Computer Science > python' 카테고리의 다른 글

Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
python multi-level argparse  (0) 2019.07.12
Python 설치 및 실행하기  (0) 2017.08.16
cannot mkdir R_TempDir 에러  (0) 2016.09.07
반응형

Python 설치 및 실행하기




Python은 프로그래밍 언어의 일종으로 배우기 쉽기 때문에 입문용으로 많이 사용된다.


Data science 분야에서 전반적으로 사용하고 있다. 


다운로드 경로 https://www.python.org/downloads/ 에서 원하는 버전을 다운로드 받는다.


tar -zxf Python-*.tgz

cd Python-3.5.1

./configure --prefix=/PATH/TO/INSTALL/PYTHON

make && make install



Python 2.X 버전은 python 모듈을 쉽게 설치할 수 있는 easy_install이나 pip를 기본적으로 제공하고 있지 않다.


setuptools를 다운로드 받아서 설치해 줘야 한다.



setuptools를 다운 받았으면 설치한 python을 사용하여 아래와 같이 입력 한다.


python setup.py install


그러면 python/bin 폴더에 easy_install이 생긴다.


pip를 설치하기 위해서는 다시 한 번 아래처럼 입력 한다.


easy_install pip


bin 폴더에 pip도 생겼다.



pip를 사용하여 모듈을 설치할 때 pip install <MODULE> 를 입력하면 된다.


반응형

'Computer Science > python' 카테고리의 다른 글

Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
python multi-level argparse  (0) 2019.07.12
python 파일 입출력  (0) 2019.07.12
cannot mkdir R_TempDir 에러  (0) 2016.09.07
반응형


Python에서 rpy 모듈을 사용하다가 


Python 2.6.9 (unknown, Feb 26 2015, 10:49:14) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import rpy

Fatal error: cannot mkdir R_TempDir


cannot mkdir R_TempDir 에러메세지 발생했다.


/tmp/ 폴더를 확인해 봐야 한다.


권한이 없거나, tmp 폴더에 설정한 용량을 채우면 더 진행되지 않는다.


확인필요.



반응형

'Computer Science > python' 카테고리의 다른 글

Primer 서열 분석을 위한 python 코드  (0) 2021.08.17
String Format으로 길이 고정하기  (0) 2020.06.24
python multi-level argparse  (0) 2019.07.12
python 파일 입출력  (0) 2019.07.12
Python 설치 및 실행하기  (0) 2017.08.16

+ Recent posts