Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 지지저항선
- W패턴
- 쌍바닥패턴
- 분봉차트
- 세균
- 추천종목
- 비교유전체
- 우분투
- 상한가
- 생물정보학
- bioinformatics
- 매매기법
- 돌파매매
- 이동평균선
- 주식매매
- 주식투자
- mummer
- 기본적분석
- 증권사레포트
- 스캘핑
- 매매일지
- 유전체
- 기술적분석
- 생명정보학
- 차트분석
- 지지저항
- 목표주가
- 리눅스
- 초단타
- 관심종목
Archives
- Today
- Total
A Fine-Tuned Universe
[FastANI] 한 줄씩 출력되는 FastANI 결과를 matrix로 변환하기 본문
728x90
FastANI 결과를 보면 아래와 같이 나온다
즉
genome1 genome2 ANI값
이런 식으로 나온다
하지만 보통은 matrix 형태로 정리된 아래 형태에 익숙할 것이다. 아니면 아래와 같은 형식으로 바꿔서 결과를 정리해야 할 때가 있다
그런데 비교하려는 유전체가 많아질 수록 결과를 정리하기가 힘들다.
그래서 주말에 아래와 같이 쉘스크립트를 써서 결과를 정리하였다
먼저 유전체 목록을 아래와 같이 파일로 만들었다. 사실 둘 다 같은 내용인데 가로 세로를 구분해서 생각하려고 따로 만들었다
ls *.gz > query_list
ls *.gz > reference_list
그리고 아래와 같이 스크립트를 짜서 실행시켰다.
#!/bin/bash
while read query
do
awk -v genome=$query '$1 ~ genome {print}' fastANI_0623 > "$query.column"
while read reference
do
ref=$(awk -v genome2=$reference '$2 ~ genome2 {print}' "$query.column")
if [[ -n $ref ]]
then
awk -v genome2=$reference '$2 ~ genome2 {print $3}' "$query.column" >> "$query.value"
else
echo "NA" >> "$query.value"
fi
done < reference_list
done < query_list
paste *.value > animatrix
rm *.column *.value
query_list 파일에서 맨 처음 나오는 query 유전체 하나에 해당하는 모든 ANI값을 reference_list 파일 안에 있는 순서로 찾아서 행으로 나열하고 하나의 파일로 저장한다. query_list 파일의 다음 줄에 있는 query genome으로 넘어가서 같은 작업을 반복하고 또 다시 별도의 파일로 저장한다. 마지막엔 모든 값을 가로로 붙여 넣어서 최종적으로 animatrix.value라는 파일로 만들어준다. 행과 열의 수가 같은 표 형태의 자료이다. fastANI는 70이하 값은 계산하지 않기 때문에 그런 경우 NA로 표시된다. 가로 세로로 label을 붙이고 싶으면 paste 로 붙여주면 된다.
LIST
'Bioinformatics > Linux' 카테고리의 다른 글
ls 모든 옵션 (man ls) (0) | 2023.07.03 |
---|---|
디렉토리 내의 모든 fasta 파일로부터 header에 16S를 포함하는 시퀀스만 추출하기 (0) | 2023.06.29 |
gff 파일에서 locus tag과 product만 추출하기 (0) | 2023.01.27 |
[Linux] clear 화면지우기 (0) | 2023.01.05 |