나는 작업중인 생물 정보학 프로젝트에 약간의 코딩 문제가 있습니다. 기본적으로, 내 임무는 데이터베이스에서 모티프 시퀀스를 추출하고 정보를 사용하여 시퀀스 정렬 파일에 주석을 달아주는 것이다. 정렬 파일은 일반 텍스트이므로 주석은 정교한 파일이 아닙니다. 추출 된 시퀀스를 정렬 파일 자체의 별표로 바꾸는 것만으로도 정교합니다.Python의 ASCII 파일에서 부분 문자열 찾기/바꾸기
나는 데이터베이스 파일을 스캔하고 필요한 모든 시퀀스를 추출하여 출력 파일에 기록하는 스크립트를 가지고 있습니다. 쿼리가 있으면이 시퀀스를 읽고 ASCII 정렬 파일의 해당 부분 문자열과 일치시켜야합니다. 마지막으로 모티프 시퀀스 (매우 큰 문자열의 하위 문자열)가 나타날 때마다 모티프 시퀀스 XXXXXXX를 별표 시퀀스로 바꿉니다. *.
내가 사용하고 코드는 (11SGLOBULIN 데이터베이스에서 단백질 항목의 이름입니다) 이렇게되면 :
motif_file = open('/users/myfolder/final motifs_11SGLOBULIN','r')
align_file = open('/Users/myfolder/alignmentfiles/11sglobulin.seqs', 'w+')
finalmotifs = motif_file.readlines()
seqalign = align_file.readlines()
for line in seqalign:
if motif[i] in seqalign: # I have stored all motifs in a list called "motif"
replace(motif, '*****')
하지만 그 대신 별표 (*)의 순서로 각 문자열을 대체, 그것은 전체 파일을 삭제합니다 . 왜 이런 일이 일어나는 지 알 수 있습니까?
필자의 ASCII 파일은 기본적으로 하나의 매우 긴 아미노산 목록이며, Python은 매우 긴 문자열 내에 숨겨진 특정 부분 문자열을 대체하는 방법을 알 수 없다고 생각됩니다.
무엇이'i'이고'replace'입니까? – geoffspear
나는 1996 년과 1999 년 사이 런던에서 생화학을 연구 한 스파이 로스를 알았다. 어쨌든. 이 '대체'기능은 무엇입니까?파일 내용을 변경하려면 새 파일을 만든 다음 이전 파일을 바꾸는 것이 좋습니다. 이렇게하면 실행에 문제가있는 경우 종료 상태를 확인하고 데이터가 손실되지 않도록 할 수 있습니다. – MattH
@Wooble, replace는 하나의 문자열을 다른 문자열로 바꾸는 문자열 처리 명령입니다. motif [i]는 일련의 문자열을 포함하는 motif라는 목록에 대한 색인 방법입니다. – Spyros