Primer3 Boulder IO 출력 재정렬

Primer3 Boulder IO 출력 재정렬

primer3_core출력을 다시 정렬하려고 합니다 .

예를 들어:

SEQUENCE_ID=ID_1
PRIMER_LEFT_0_SEQUENCE=ACGTGTAGCGGTTCAGACG
PRIMER_RIGHT_0_SEQUENCE=ACCATGCATGATCCATCCAGG
PRIMER_LEFT_1_SEQUENCE=CACAGCCACAGCAGCACAC
PRIMER_RIGHT_1_SEQUENCE=ATGCAGGTGATCAAGTTACGCC
=
SEQUENCE_ID=ID_2
PRIMER_LEFT_0_SEQUENCE=CACAGCCACAGCAGCACAC
PRIMER_RIGHT_0_SEQUENCE=GCAGGTGATCAAGTTACGCCATT
=

따라서 각 ID는 0-20 범위의 서로 다른 수의 프라이머를 생성할 수 있습니다.

출력은 다음과 같습니다.

ID_1 ACGTGTAGCGGTTCAGACG
ID_1 ACCATGCATGATCCATCCAGG
ID_1 CACAGCCACAGCAGCACAC
ID_1 ATGCAGGTGATCAAGTTACGCC
ID_2 CACAGCCACAGCAGCACAC
ID_2 GCAGGTGATCAAGTTACGCCATT

답변1

awk -F= '$0 ~ "^SEQUENCE" {SEQ=$2} $0 !~ "^SEQUENCE" { print SEQ" "$2 }' filename

awk를 사용하고 =를 필드 구분자로 사용하세요. 그런 다음 줄은 SEQUENCE로 시작하여 SEQ 변수를 두 번째 구분된 조각과 동일하게 설정합니다. 다른 모든 경우에는 두 번째로 구분된 데이터와 함께 SEQ를 인쇄합니다.

답변2

방법:

awk -F'=' '/^SEQUENCE_ID/{ s = $2 }/^PRIMER/{ print s, $2 }' file

산출:

ID_1 ACGTGTAGCGGTTCAGACG
ID_1 ACCATGCATGATCCATCCAGG
ID_1 CACAGCCACAGCAGCACAC
ID_1 ATGCAGGTGATCAAGTTACGCC
ID_2 CACAGCCACAGCAGCACAC
ID_2 GCAGGTGATCAAGTTACGCCATT

답변3

sed스크립트 사용 :

# delete lines starting with '='
/^=/d

# handle sequence ID lines
/^SEQUENCE_ID=/{
    # remove everything up to and including the '='
    s///
    # put the sequence ID in the hold space
    h
    # delete the pattern space and continue with next line
    d
}

# handle primer lines
/^PRIMER.*=/{
    # remove everything up to and including the '='
    s///
    # append a newline and the sequence ID from the hold space to the pattern space
    G
    # swap the two bits of the pattern space around, deleting the newline
    s/^\(.*\)\n\(.*\)$/\2 \1/
}

테스트해보세요:

$ sed -f script.sed file
ID_1 ACGTGTAGCGGTTCAGACG
ID_1 ACCATGCATGATCCATCCAGG
ID_1 CACAGCCACAGCAGCACAC
ID_1 ATGCAGGTGATCAAGTTACGCC
ID_2 CACAGCCACAGCAGCACAC
ID_2 GCAGGTGATCAAGTTACGCCATT

별도의 스크립트 파일 없음:

$ sed -e '/^=/d' -e '/^SEQUENCE_ID=/{s///;h;d;}' -e '/^PRIMER.*=/{s///;G;s/^\(.*\)\n\(.*\)$/\2 \1/;}' file
ID_1 ACGTGTAGCGGTTCAGACG
ID_1 ACCATGCATGATCCATCCAGG
ID_1 CACAGCCACAGCAGCACAC
ID_1 ATGCAGGTGATCAAGTTACGCC
ID_2 CACAGCCACAGCAGCACAC
ID_2 GCAGGTGATCAAGTTACGCCATT

더 짧은 변형:

$ sed -n -e '/^SEQUENCE_ID=/{s///;h;}' -e '/^PRIMER.*=/{s///;G;s/^\(.*\)\n\(.*\)$/\2 \1/p;}' file

관련 정보