NGS 데이터에서 찾은 변종을 기반으로 하나의 코돈 시퀀스를 다른 코돈 시퀀스로 변환하는 스크립트를 설정하려고 합니다.
현재 내 스크립트는 6개의 열이 있는 탭으로 구분된 출력 파일을 생성합니다. 각 열은 다음을 나타냅니다.
- 첫 번째: 게놈 위치
- 둘째: 뉴클레오티드 염기
- 세 번째 장소: 코돈
- 넷째: 코돈의 게놈 위치 서열
- 다섯번째: SNP 빈도
- 6위 : SNP 베이스
출력 데이터는 다음과 같습니다.
2289 G GTG 3 0.0346505 A
2478 G ATG 2 0.0054087 C
출력 파일의 7열을 설정하여 4열의 번호를 기준으로 코돈의 뉴클레오티드 서열을 SNP 뉴클레오티드(6열)로 변경하는 것이 가능한가요?
예를 들어,
- 게놈 위치 2289의 경우:
GTG 코돈은 GTA가 됩니다. SNP 뉴클레오티드 A는 4열에 명시된 코돈 서열의 세 번째 뉴클레오티드 서열을 대체합니다.
- 게놈 위치 2478의 경우
ATG 코돈은 ACG가 됩니다. SNP 뉴클레오티드 C는 코돈의 두 번째 뉴클레오티드 서열을 대체합니다.
이 작업을 사용 awk
하거나 수행 할 수 있습니까 ?sed
답변1
"가능한가..."라는 질문에 "예"라고 대답하는 것은 너무나 유혹적입니다.
그런 일이 일어나겠습니까?
awk '{l=substr($3,1,$4-1); r=substr($3,$4+1); print $0"\t"l $6 r}' genome > mutated
답변2
답변3
일부 perl
분할 및 결합을 사용하면 다음과 같습니다.
perl -alne '
@c = split //, $F[2];
splice @c, $F[3]-1, 1, $F[5];
print join "\t", @F, join "", @c;
' data
설명하다:
- split 3rd column into character array @c
- replace the value indexed by the 4th column with that of the 6th
- stitch it all back together, delimited by tabs
시험에 주어진
$ cat data
2289 G GTG 3 0.0346505 A
2478 G ATG 2 0.0054087 C
그 다음에
$ perl -alne '
@c = split //,$F[2]; splice @c,$F[3]-1,1,$F[5]; print join "\t",@F,join "",@c
' data
2289 G GTG 3 0.0346505 A GTA
2478 G ATG 2 0.0054087 C ACG
답변4
perl -plane 'substr($F[2],$F[3]-1,1)=$F[5]; $_.="\t$F[2]"' data
- 문제에 따라 F2를 변경하십시오.
substr($F[2],$F[3]-1,1)=$F[5]
- 입력라인에 연결하고
$_.="\t$F[2]"