Finder
with open ('Result_{0}-{1}-{2}_{3}-{4}.txt'.format(year,month,day,enzyme,search_sequence_name),'w',encoding='utf-8') as f:
if search_sequence.find(res_find) != -1:
search_sequence = search_sequence.replace(res_find,res_site)
print(enzyme,",",cut_feature)
print(search_sequence)
f.write("{0} | {1} | {2} \n".format(enzyme,res_site,cut_feature))
f.write('Sequence name: {0} \n'.format(search_sequence_name))
f.write(search_sequence)
f.close()
# DB에 효소가 있고 일치하는 시퀀스가 있을 때
elif enzyme_table['Enzyme'].isin([enzyme]).any() == True and search_sequence.find(res_find) == -1:
print("No restriction site in this sequence. ")
f.write("{0} | {1} | {2} \n".format(enzyme,res_site,cut_feature))
f.write('Sequence name: {0} \n'.format(search_sequence_name))
f.write("This restricion enzyme never cut this sequence. ")
f.close()
# DB에 효소가 있으나 일치하는 시퀀스가 없을 때
else:
print("No data in database. ")
f.write("{0} \n".format(enzyme))
f.write("This restriction enzyme not entried in database. ")
f.close()
# DB에 효소가 없을 때
저장 형식은 동일하고, 저장용 코드가 간소화 되었습니다. 저게 format이 들을 줄은 몰랐지...
Cutter
filter = input("sticky로 자르는 제한효소만 보고 싶으면 sticky, blunt로 자르는 제한효소만 보고 싶으면 blunt를 입력해주세요. ")
Filter 기능이 추가되었습니다. 거창한 건 아니고, sticky end나 blunt end만 보고 싶을 때 쓰시면 됩니다.
if filter == 'sticky':
enzyme_table = enzyme_table[enzyme_table['cut_feature']== 'sticky']
enzyme_table.reset_index(inplace=True)
elif filter == 'blunt':
enzyme_table = enzyme_table[enzyme_table['cut_feature']== 'blunt']
enzyme_table.reset_index(inplace=True)
else:
pass
참고로 filter 입력 여부에 따라 DB에서 해당 조건으로만 테이블을 재구성합니다. (아무것도 안 입력하면 패스)
count = 0
with open('Result.txt','w',encoding='utf-8') as f:
f.write("Restriction enzyme which cuts this sequence: ")
for i in range(len(enzyme_table)):
enzyme = enzyme_table['Enzyme'][i]
res_find = enzyme_table['sequence'][i]
res_find = str(res_find)
if res_find in sequence:
print(enzyme, res_find, sequence.find(res_find))
f.write("{0}: {1} \n".format(enzyme,res_find))
count += 1
else:
count += 0
print(count)
f.write("Total: {0} enzymes cut input sequence".format(count))
# 아직 저장기능은 없습니다. 지금 출력도 좀 중구난방이라 정리 좀 해야될듯.
# find로 나오는 위치의 경우 0부터 시작하기떄문에 하나 더해줬습니다. 아울러 해당 메소드가 '가장 처음에 나오는 글자'만 찾아주는거지 전체 검색이 아니기때문에 여러군데를 자르는지 여부는 모릅니다.
아 출력 파일도 만들어준다구! 형식은 (날짜)-filter입니다. (아무것도 선택하지 않을 경우 filter=None)
참고로 여기에 쓰이는 DB와 쓰이지는 않는 DB 둘 다 구축 끝냈습니다. (쓰이지 않는 DB: 인식 혹은 자르는 시퀀스에 N, R, Y같은 게 들어가서 따로 처리해야 함)
'Coding > Python' 카테고리의 다른 글
Searcher 만들었음 (0) | 2022.08.21 |
---|---|
Cutter & Finder 패치노트 (0) | 2022.08.21 |
제한효소 커터 2편 나왔음 (0) | 2022.08.21 |
제한효소 커터 코드 패치했음 (0) | 2022.08.21 |
제한효소 커터 만들었음 (0) | 2022.08.21 |