파이썬에서 파일 끝에 "N"을 추가하는 방법은 무엇입니까?

Upendra

여러 시퀀스를 포함하는 fasta 파일이 있으며 원하는 것은 각 시퀀스 끝에 64 N을 추가하는 것입니다.

다음은 입력 파일의 예입니다.

>164778
AATCTAGATTTGTGTTGAACAACCCTTGGTACAACAAATACTTGGCACTTTTATAACCCAACTGTATGGTATAATCGACA
TCTGTGTTATGAAAGGAACTTGATTTGTTGTTAACATAAGCAATCACCATGAATACCTGATAATATTTACAAGTATTGGC
ATTACTCGAATAAGATAATTAATGTAATCATGTTAACAATTTATAATCTAATTGAAACCTCCTTTGTGTGTGGTTTCCAA
TTGGGCAATAAGAGTTTATAC
>164779
AAATCACTTTCAGTGGAAAATTATAAAACCTATTAATTTATTGCCGGCCCTCAAATCAACGCAACCCAAAACCTATTAAT
TATAAAACCTATTAATTTATTTTTTCAATCAACTACGACTATTAATTATATTTGATGATAATGAATGAAATGACACCATG
GTTATATAAAAAATATGTCAAAAGCTATTCTTAATAGGGTTT

나는 이것을 꺼내고 싶다

>chr
AATCTAGATTTGTGTTGAACAACCCTTGGTACAACAAATACTTGGCACTTTTATAACCCAACTGTATGGTATAATCGACA
TCTGTGTTATGAAAGGAACTTGATTTGTTGTTAACATAAGCAATCACCATGAATACCTGATAATATTTACAAGTATTGGC
ATTACTCGAATAAGATAATTAATGTAATCATGTTAACAATTTATAATCTAATTGAAACCTCCTTTGTGTGTGGTTTCCAA
TTGGGCAATAAGAGTTTATACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAATCACTTTCAGTGGAAAATTATAAAACCTATTAATTTATTGCCGGCCCTCAAATCAACGCAACCCAAAACCTATTAATTATAAAACCTATTAATTTATTTTTTCAATCAACTACGACTATTAATTATATTTGATGATAATGAATGAAATGACACCATG
GTTATATAAAAAATATGTCAAAAGCTATTCTTAATAGGGTTT

내가 지금 가지고있는 코드는 각 시퀀스의 끝이 아니라 각 줄의 끝에 N을 추가하는 것입니다.

import textwrap

result = list()
spacer = "N" * 64

with open ("join_fasta_test.fasta", 'r') as fh_in:
    for line in fh_in:
        line = line.strip()
        if not line.startswith(">"):
            result.append(line)
            result.append(spacer)

print result
result2 = "".join(result)
print result2
result3 = '\n'.join(textwrap.wrap(result2, 80))
print result3

with open("join_fasta_test_out.fasta", 'w') as fh_out:
    fh_out.write(">chr")
    fh_out.write("\n")
    fh_out.write(result3)
Martijn Pieters

다음을 테스트 할 수있을 때까지 줄을 작성하는 것입니다. 이렇게하면 파일을 읽고 한 번에 쓸 수 있으며 모든 것을 메모리에 보관할 필요가 없습니다.

spacer = "N" * 64

with open ("join_fasta_test.fasta", 'r') as fh_in, \
        open("join_fasta_test_out.fasta", 'w') as fh_out:
     prev = next(fh_in)  # first line
     for line in fh_in:
         if line.startswith('>'):
            prev = prev.rstrip('\n') + spacer + '\n'
         fh_out.write(prev)
         prev = line
     fh_out.write(prev.rstrip('\n') + spacer + '\n')

따라서 prev항상 앞의 줄이며 '현재'줄을 검사 한 후에 만 ​​작성되며 현재 줄이 >.으로 시작하는 경우 스페이서에 추가됩니다 .

데모:

>>> from cStringIO import StringIO
>>> sample = '''\
... >164778
... AATCTAGATTTGTGTTGAACAACCCTTGGTACAACAAATACTTGGCACTTTTATAACCCAACTGTATGGTATAATCGACA
... TCTGTGTTATGAAAGGAACTTGATTTGTTGTTAACATAAGCAATCACCATGAATACCTGATAATATTTACAAGTATTGGC
... ATTACTCGAATAAGATAATTAATGTAATCATGTTAACAATTTATAATCTAATTGAAACCTCCTTTGTGTGTGGTTTCCAA
... TTGGGCAATAAGAGTTTATAC
... >164779
... AAATCACTTTCAGTGGAAAATTATAAAACCTATTAATTTATTGCCGGCCCTCAAATCAACGCAACCCAAAACCTATTAAT
... TATAAAACCTATTAATTTATTTTTTCAATCAACTACGACTATTAATTATATTTGATGATAATGAATGAAATGACACCATG
... GTTATATAAAAAATATGTCAAAAGCTATTCTTAATAGGGTTT
... '''
>>> spacer = "N" * 64
>>> fh_in = iter(sample.splitlines(True))
>>> fh_out = StringIO()
>>> prev = next(fh_in)  # first line
>>> for line in fh_in:
...    if line.startswith('>'):
...        prev = prev.rstrip('\n') + spacer + '\n'
...    fh_out.write(prev)
...    prev = line
... 
>>> fh_out.write(prev.rstrip('\n') + spacer + '\n')
>>> print fh_out.getvalue()
>164778
AATCTAGATTTGTGTTGAACAACCCTTGGTACAACAAATACTTGGCACTTTTATAACCCAACTGTATGGTATAATCGACA
TCTGTGTTATGAAAGGAACTTGATTTGTTGTTAACATAAGCAATCACCATGAATACCTGATAATATTTACAAGTATTGGC
ATTACTCGAATAAGATAATTAATGTAATCATGTTAACAATTTATAATCTAATTGAAACCTCCTTTGTGTGTGGTTTCCAA
TTGGGCAATAAGAGTTTATACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
>164779
AAATCACTTTCAGTGGAAAATTATAAAACCTATTAATTTATTGCCGGCCCTCAAATCAACGCAACCCAAAACCTATTAAT
TATAAAACCTATTAATTTATTTTTTCAATCAACTACGACTATTAATTATATTTGATGATAATGAATGAAATGACACCATG
GTTATATAAAAAATATGTCAAAAGCTATTCTTAATAGGGTTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파일 끝에 개행을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 구분 기호가있는 파일을 읽고 끝에 문자를 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 경로와 함께 파일 이름을 추가하는 방법은 무엇입니까?

분류에서Dev

추가 모드에서 파이썬 덮어 쓰기 파일을 수정하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 동일한 목록에 사전 목록을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬을 사용하여 JSON 파일에 무언가를 추가하는 방법은 무엇입니까?

분류에서Dev

카운터의 모든 값에 N을 추가하는 방법은 무엇입니까? -파이썬

분류에서Dev

데이터 파일의 두 열을 곱하고 파이썬에 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬으로 yaml 파일에 새 줄을 추가 / 업데이트하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 .py 파일을 편집 / 재 컴파일하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 두 번째 줄을 첫 번째 줄 끝에 연결하는 방법은 무엇입니까?

분류에서Dev

Eclipse에서 파일 끝을 인식하는 방법은 무엇입니까?

분류에서Dev

줄 끝에 raw man 파일에 점을 추가하는 방법은 무엇입니까?

분류에서Dev

rmarkdown 청크에서 파이썬 파일을 가져오고 실행하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 하루 중 몇 분을 목록에 추가하는 방법은 무엇입니까?

분류에서Dev

JSfiddle에서 로컬 파일을 추가하는 방법은 무엇입니까?

분류에서Dev

파일에 서명을 추가하는 방법은 무엇입니까?

분류에서Dev

.wav 파일 끝에 몇 초간 침묵을 추가하는 방법은 무엇입니까?

분류에서Dev

Vi 파일의 각 줄 끝에 명령 출력을 추가하는 방법은 무엇입니까?

분류에서Dev

Sed로 파일의 각 줄 끝에 첫 번째 줄을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 XML을 파싱하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 datetime 객체에 패딩 0을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 for 루프의 사전에 항목을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 숫자 오른쪽에 0을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 파일을 gml에서 edgelist로 변환하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 문자열을 기반으로 모양을 추가하는 방법은 무엇입니까?

분류에서Dev

열 n과 파일의 첫 번째 줄에 문자열을 추가하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 \ n으로 출력을 올바르게 분할하는 방법은 무엇입니까?

분류에서Dev

saz 파일에서 파일을 추출하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    파일 끝에 개행을 추가하는 방법은 무엇입니까?

  2. 2

    파이썬에서 구분 기호가있는 파일을 읽고 끝에 문자를 추가하는 방법은 무엇입니까?

  3. 3

    파이썬에서 경로와 함께 파일 이름을 추가하는 방법은 무엇입니까?

  4. 4

    추가 모드에서 파이썬 덮어 쓰기 파일을 수정하는 방법은 무엇입니까?

  5. 5

    파이썬에서 동일한 목록에 사전 목록을 추가하는 방법은 무엇입니까?

  6. 6

    파이썬을 사용하여 JSON 파일에 무언가를 추가하는 방법은 무엇입니까?

  7. 7

    카운터의 모든 값에 N을 추가하는 방법은 무엇입니까? -파이썬

  8. 8

    데이터 파일의 두 열을 곱하고 파이썬에 추가하는 방법은 무엇입니까?

  9. 9

    파이썬으로 yaml 파일에 새 줄을 추가 / 업데이트하는 방법은 무엇입니까?

  10. 10

    파이썬에서 .py 파일을 편집 / 재 컴파일하는 방법은 무엇입니까?

  11. 11

    파이썬에서 두 번째 줄을 첫 번째 줄 끝에 연결하는 방법은 무엇입니까?

  12. 12

    Eclipse에서 파일 끝을 인식하는 방법은 무엇입니까?

  13. 13

    줄 끝에 raw man 파일에 점을 추가하는 방법은 무엇입니까?

  14. 14

    rmarkdown 청크에서 파이썬 파일을 가져오고 실행하는 방법은 무엇입니까?

  15. 15

    파이썬에서 하루 중 몇 분을 목록에 추가하는 방법은 무엇입니까?

  16. 16

    JSfiddle에서 로컬 파일을 추가하는 방법은 무엇입니까?

  17. 17

    파일에 서명을 추가하는 방법은 무엇입니까?

  18. 18

    .wav 파일 끝에 몇 초간 침묵을 추가하는 방법은 무엇입니까?

  19. 19

    Vi 파일의 각 줄 끝에 명령 출력을 추가하는 방법은 무엇입니까?

  20. 20

    Sed로 파일의 각 줄 끝에 첫 번째 줄을 추가하는 방법은 무엇입니까?

  21. 21

    파이썬에서 XML을 파싱하는 방법은 무엇입니까?

  22. 22

    파이썬에서 datetime 객체에 패딩 0을 추가하는 방법은 무엇입니까?

  23. 23

    파이썬에서 for 루프의 사전에 항목을 추가하는 방법은 무엇입니까?

  24. 24

    파이썬에서 숫자 오른쪽에 0을 추가하는 방법은 무엇입니까?

  25. 25

    파이썬에서 파일을 gml에서 edgelist로 변환하는 방법은 무엇입니까?

  26. 26

    파이썬에서 문자열을 기반으로 모양을 추가하는 방법은 무엇입니까?

  27. 27

    열 n과 파일의 첫 번째 줄에 문자열을 추가하는 방법은 무엇입니까?

  28. 28

    파이썬에서 \ n으로 출력을 올바르게 분할하는 방법은 무엇입니까?

  29. 29

    saz 파일에서 파일을 추출하는 방법은 무엇입니까?

뜨겁다태그

보관