다른 열의 지침에 따라 한 열의 문자를 변경합니다.

다른 열의 지침에 따라 한 열의 문자를 변경합니다.

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

펄 솔루션:

perl -lane 'substr $n = $F[2], $F[3] - 1, 1, $F[5]; print join "\t", $_, $n' -- file
  • -n입력을 한 줄씩 읽습니다.
  • -l입력에서 줄 바꿈을 제거하고 추가하십시오.인쇄에스
  • -a공백의 각 줄을 @F 배열로 분할합니다.
  • 바라보다하위 문자열세부

답변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]"

관련 정보