파일 이름을 명령으로 사용하고 파일의 고유한 3개 기본 코돈과 내림차순으로 나타나는 횟수를 출력하는 작업에 대한 스크립트를 작성해야 합니다. 스크립트는 매개변수가 있는지 확인하고, 없으면 오류 메시지를 인쇄해야 합니다. 스크립트로 모든 고유 코돈을 검색하는 데 필요한 정규식 구문과 시작 방법이 혼란스럽습니다. 요점은 파일에 무작위 순서로 반복되는 "a" "c" "t" "g" 문자만 포함되어 있다는 것입니다. 목표는 파일 시작 부분에서 시작하여 각각의 고유한 3- 문자 코돈 및 그 수(예: aac 또는 acg)
예를 들어 dnafile이라는 파일에 aacacgaactttaacacg 패턴이 포함되어 있으면 스크립트는 다음 입력 및 출력을 사용합니다.
$script dnafile
aac 3
acg 2
ttt 1
오류 검사에서 오류가 표시되면 이어야 합니다 script cannot open file dnafile for reading
.
답변1
모두 얻으려고충분히단일 파일의 코돈:
{
for (pos = 1; pos < length - 1; ++pos) {
codon = substr($0, pos, 3)
print codon
}
}
이 짧은 awk
스크립트는 각 줄의 각 3문자 긴 하위 문자열을 출력합니다. 생물정보학 용어로 말하면, 각 프레임의 완전한 코돈을 순서대로 출력합니다.
주어진 데이터를 테스트합니다:
$ awk -f script.awk <file
aac
aca
cac
acg
cga
gaa
aac
act
ctt
ttt
tta
taa
aac
aca
cac
acg
그런 다음 각 코돈의 발생 횟수를 정렬하고 계산할 수 있습니다.
$ awk -f script.awk <file | sort | uniq -c
3 aac
2 aca
2 acg
1 act
2 cac
1 cga
1 ctt
1 gaa
1 taa
1 tta
1 ttt
파일에 개행 문자가 포함된 경우 개행 문자로 인해 코돈이 손상될 수 있도록 먼저 이를 제거하십시오.
$ cat file
aacacgaactttaacacg
aacacgaactttaacacg
$ tr -d '\n' <file | awk -f script.awk | sort | uniq -c
6 aac
4 aca
4 acg
2 act
4 cac
3 cga
2 ctt
3 gaa
2 taa
2 tta
2 ttt
(합의 개수가 2가 아닌 3으로 어떻게 cga
변경되는지 확인하세요.)gaa
귀하의 데이터가큰, 그러면 개행 문자에 대한 변환을 처리할 수 있는 다른 방법을 찾아야 합니다.
{
$0 = lastbit $0
for (pos = 1; pos < length - 1; ++pos) {
codon = substr($0, pos, 3)
print codon
}
lastbit = substr($0, length - 1)
}
이렇게 하면 각 줄의 마지막 두 염기가 저장되고 lastbit
시퀀스의 다음 줄 앞에 추가됩니다.
위와 동일한 두 줄의 입력을 실행합니다.
$ awk -f script.awk <file | sort | uniq -c
6 aac
4 aca
4 acg
2 act
4 cac
3 cga
2 ctt
3 gaa
2 taa
2 tta
2 ttt
첫 번째 프레임의 코돈만 원하는 경우:
{
$0 = lastbit $0
for (pos = 1; pos < length - 1; ++pos) {
if ((pos + length(lastbit)) % 3 == 1) {
codon = substr($0, pos, 3)
print codon
}
}
lastbit = substr($0, length - 1)
}
sort -nr
출력을 개수 내림차순으로 정렬하려면 위 파이프라인에 추가 단계를 추가하세요.
또한보십시오:
답변2
다음과 같이 외부 파일 없이 한 줄로 이 작업을 수행할 수 있습니다.
tr -d '\n' <dnafile |sed -e 's/\(...\)/\1\n/g' |sort |uniq -c |sed 's/^\s*\([0-9]*\) \([acgt]*\)$/\2 \1/'
aac 3
acg 2
ttt 1
지정된 순서의 열이 필요하지 않은 경우 뒷부분을 생략할 수 있습니다 uniq -c
. Mac에서 이 작업을 수행하는 gsed
경우 sed
.