코어 게놈이 너무 짧음
나는 M tuberculosis전송 네트워크를 시도하고 추론하기 위해 격리 에서 snp 거리 매트릭스를 만들려고합니다 . 내 계획은 snippy 를 사용하여 핵심 게놈 정렬을 만든 다음 snp-dists 를 사용하여 매트릭스를 만들었지 만 핵심 게놈 정렬을 만드는 데 어려움을 겪었 습니다. 내 모든 샘플 972 그것을하려고하면 실행하려고 할 때,가 정지를 날카로운 SNP-사이트를 말하고, Warning: No SNPs were detected so there is nothing to output.이 문제는 모든 샘플 포함하여, 핵심 게놈의 크기는 0 점이다.
snippy가 제공하는 정렬 통계를 살펴보면 일부 분리 균은 정렬 된 염기쌍 수가 매우 적은 것으로 보입니다 (낮은 범위 또는 오염으로 인해). 정렬 된 염기 쌍 수가 적은 샘플을 점진적으로 필터링 한 다음 snippy / snp-sites가 작동하도록 할 수 있습니다. 필터 엄격도를 높이면 결과 코어 게놈은 여전히 짧습니다. 예를 들어 정렬 된 염기쌍이 참조의 90 % 미만인 염기쌍을 필터링하면 내 샘플 중 88 개 (9 %)를 제외하고는 5747bp (참조 기준 440 만 bp)에 불과한 코어 게놈이있었습니다.
snippy의 작성자는 출력 파일 core.txt을 사용하여 어떤 샘플이 "나쁜"이상 값인지 알아낼 것을 권장합니다 . 이 파일은 1) 참조의 길이, 2) 정렬 된 염기쌍의 수, 3) 정렬되지 않은 염기쌍의 수, 3) 변이 부위의 수, 4) 이종 부위의 수, 5)의 수를 제공합니다. 마스킹 된 사이트 및 6) 낮은 커버리지 사이트의 수.
#> ID LENGTH ALIGNED UNALIGNED VARIANT HET MASKED LOWCOV
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 R15795_CATCAAGT_S34_L006 4411532 4192432 6818 755 428 209178 2676
#> 2 R15842_GTCTGTCA_S49_L006 4411532 4187344 10304 784 441 209178 4265
#> 3 R15876_CGCTGATC_S36_L006 4411532 4176662 18992 1292 660 209178 6040
#> 4 R15951_ATTGGCTC_S7_L002 4411532 4170649 14732 1281 980 209178 15993
#> 5 R16019_TGGAACAA_S78_L001 4411532 4190733 8132 712 715 209178 2774
#> 6 R16046_GACTAGTA_S6_L002 4411532 4186069 4309 1257 1084 209178 10892
제 질문은 핵심 게놈을 만들기 전에 샘플을 걸러 내기 위해 어떤 휴리스틱을 사용 하시겠습니까?
둘째, Mtb에 대한 합리적인 핵심 게놈 크기는 얼마입니까?
답변
70X 이상의 커버리지 깊이로 Illumina 읽기를 타겟팅하는 것이 좋은 시작점입니다. 강력한 데이터베이스가 구축되면 낮은 커버리지 격리도 효과적으로 사용할 수 있습니다. 개별 SNP에 더 구체적으로 ... VCF QUAL 값, 맵 품질 및 / 또는 AC 값에 대한 필터링이 유용한 것으로 나타났습니다.
코어 게놈은 약 1,000 개의 SNP가 될 가능성이 있지만 참조가 속한 계통과 정렬 된 샘플 계통에 따라 달라집니다. 둘 다 동일한 혈통에서 나온다면 700 SNP 미만일 가능성이 높습니다. 다른 계보에서 SNP 수는 보이는 정렬 오류 외에도 분명히 더 높아질 것입니다.
개별 SNP 필터링 관련 ...
vSNP 는 SNP 분석을 위해 개발 된 도구입니다. 그것은 다른 종 유형에 적용될 수 있지만 원래 결핵 복합 분리 물과 함께 사용하기 위해 개발되었습니다. 코드 세부 사항은 여기에 있습니다 .
vSNP는 2 단계 프로세스입니다. 먼저 VCF 파일을 생성합니다. 둘째, 이러한 VCF 파일을 사용하여 SNP 테이블과 트리를 출력합니다. 스크립트의 목표는 최소한의 노력으로 검증 할 수있는 고해상도 유전형 분석을 달성하는 것입니다. 이를 위해 참조 선택, 자동 그룹화 및 위치 필터링과 같은 몇 가지 단계가 포함되어 있습니다.
의사 코드 :
동일한 참조에서 생성 된 VCF 파일 세트의 경우 ...
def find_positions()
AC=2
QUAL > 300
발견 된 각 위치에 대해 ...
def get_snps()
AC=2 (solid call)
QUAL > 50
THEN --> SNP
AC=1 (mix call)
QUAL > 150
THEN --> AMBIGIOUS
AC=2
QUAL >= 50
THEN --> REF
QUAL < 50
THEN --> N
ALT == "None"
THEN --> -
먼저 모든 샘플 / VCF 파일에서 정보가 될 수있는 가능한 모든 위치를 find_positions()찾은 다음 정렬에 포함 할 각 위치를 정의합니다 get_snps().
그러면 PPE / PGRS와 같이 지속적으로 불량한 정렬 영역을 필터링하는 것이 편리 할 수 있습니다.