Domanda:
Come creare un sottoinsieme di campioni da un file VCF?
KLuc
2018-02-07 06:39:45 UTC
view on stackexchange narkive permalink

Ho file VCF (SNPs & indels) per WGS su 100 campioni, ma voglio utilizzare solo un sottoinsieme specifico di 10 campioni. Esiste un modo relativamente semplice per estrarre solo i 10 campioni, mantenendo comunque tutti i dati per l'intero genoma?

Ho uno script che mi consente di estrarre regioni dell'intero genoma per tutti 100 campioni, quindi se potessi fare qualcosa di simile ma mettere solo regioni per i 10 campioni che voglio, sarebbe l'ideale.

Grazie per l'aiuto!

Benvenuto. Vuoi 10 campioni casuali o vuoi estrarre 10 campioni specifici? Inoltre, parli di file vcf contenenti SNP / indels? Qual è il motivo per cui vuoi sottocampionare il tuo file vcf? Ci piacciono i dettagli, i dettagli rendono le domande comprensibili e rispondenti. Puoi [modificare] la tua Q e aggiungere tutti i dettagli.
Tre risposte:
#1
+6
gringer
2018-02-07 08:11:01 UTC
view on stackexchange narkive permalink

Bcftools ha un filtro campione / individuale come opzione per la maggior parte dei comandi. Puoi creare un sottoinsieme di individui utilizzando l'opzione -s o -S :

-s , - samples [^] LIST

Elenco separato da virgole di campioni da includere o escludere se preceduto da "^". Notare che in generale i tag come INFO / AC, INFO / AN, ecc. Non vengono aggiornati per corrispondere ai campioni del sottoinsieme. bcftools view è l'eccezione in cui alcuni tag verranno aggiornati (a meno che non venga utilizzata l'opzione -I , --no-update ; vedere bcftools view documentazione). Per utilizzare tag aggiornati per il sottoinsieme in un altro comando, è possibile reindirizzare dalla vista a quel comando. Ad esempio:

-S , --samples-file FILE

File di nomi di esempio da includere o escludere se prefissati con "^". Un campione per riga. Vedi anche la nota sopra per l'opzione -s , --samples . Il comando bcftools call accetta una seconda colonna opzionale che indica ploidia (0, 1 o 2) o sesso (come definito da --ploidy , ad esempio "F" o "M ") e può analizzare anche i file PED. Se la seconda colonna non è presente, si assume il sesso "F". Con bcftools call -C trio , è previsto il file PED. Esempi di formati di file:

  sample1 1sample2 2sample3 2  

o

  sample1 Msample2 Fsample3 F  

o un file .ped (qui viene mostrato un esempio minimo di funzionamento, la prima colonna viene ignorata e l'ultima indica sesso: 1 = maschio, 2 = femmina):

  ignorato figliaA padreA madreA 2 figlio ignoratoB padreB madreB 1  

Esempio di utilizzo:

  bcftools view -s sample1, sample2 file.vcf > filtered.vcfbcftools visualizza -S sample_file.txt file.vcf > filtered.vcf  

Consulta la manpage bcftools per maggiori informazioni.

#2
+1
Gx1sptDTDa
2018-02-08 16:20:02 UTC
view on stackexchange narkive permalink

Puoi utilizzare lo strumento SelectVariants di GATK con il flag -sn .

Eg

gatk SelectVariants -V input.vcf -R reference.fasta -sn Sample_01 -out sample.vcf

Tu può usare più volte il flag -sn in modo da selezionare diversi campioni, o usarlo per puntare a un file contenente un nome di campione su ogni riga.

#3
+1
Michael Hall
2020-06-08 12:22:11 UTC
view on stackexchange narkive permalink

Oltre alla risposta di @gringer c'è un bcftools plugin chiamato split che può farlo, ma ti dà l'abilità aggiuntiva per produrre VCF a campione singolo specificando un nome file per ogni campione.

  $ bcftools + splitAbout: Dividi VCF per campione, creando VCF a campione singolo. Utilizzo: bcftools + split [Opzioni] Opzioni plugin : -e, --exclude EXPR esclude i siti per i quali l'espressione è vera (applicata agli output) -i, --include EXPR include solo i siti per i quali l'espressione è vera (applicata agli output) -k, --keep -tags LIST elenco di tag da conservare. Per impostazione predefinita vengono conservati tutti i tag -o, --output DIR scrive l'output nella directory DIR -O, --output-type b | u | z | vb: BCF compresso, u: BCF non compresso, z: VCF compresso, v: VCF non compresso [v] -r, --regions REGION limita a un elenco di regioni separato da virgole -R, --regions-file FILE limita alle regioni elencate in un file -S, --samples-file FILE elenco di campioni da conservare con la seconda colonna (facoltativa) per il nome di base del nuovo file -t, --targets REGION simile a -r ma flussi invece di index-jumps -T, --targets-file FILE simile a -R ma flussi piuttosto che index-jumpsEsempi : # Dividi un file VCF bcftools + split input.bcf -Ob -o dir # Esclude i siti con genotipi mancanti o hom-ref bcftools + split input.bcf -Ob -o dir -i'GT = "alt" '# Mantieni tutto Tag INFO ma solo GT e PL in FORMAT bcftools + split input.bcf -Ob -o dir -k INFO, FMT / GT, PL # Mantiene tutti i tag FORMAT ma rilascia tutti i tag INFO bcftools + split input.bcf -Ob -o dir -k FMT  

Quindi, se avessi il seguente file di esempio samples.tsv

  sample1 sample1sample2 sample2  

Puoi eseguirlo e ottenere quanto segue

  $ bcftools + split -S samples.tsv -o outdir in.vcf $ lsin. vcf sample1.vcf sample2.vcf  

Senza la seconda colonna, otterresti solo un singolo VCF con i due campioni al suo interno (come faresti con view )



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...