|
|
|
# Progetto ASD 2023/2024
|
|
|
|
|
|
|
|
Creazione e analisi di un Pangenome Graph
|
|
|
|
|
|
|
|
## Obbiettivi
|
|
|
|
|
|
|
|
- [x] Caricare un Pangenome Graph dal formato GFA
|
|
|
|
|
|
|
|
- [x] Classificare i nodi del grafo in base al tipo tree, back, forward, cross
|
|
|
|
|
|
|
|
- [x] Rimuovere tutti i nodi di tipo back per rendere il grafo un DAG
|
|
|
|
|
|
|
|
- [x] Restringere il grafo alla componente connessa più grande
|
|
|
|
|
|
|
|
- [x] Ricostruire le sequenze dei nodi del grafo in base ai cammini ed alla direzione di percorrenza dei nodi (forward o reverse)
|
|
|
|
|
|
|
|
- [x] Ricerca di un pattern k-mer in queste sequenze utilizzando il rolling hash
|
|
|
|
|
|
|
|
- [~] Calcolare le frequenze di occorrenza di tutti i k-mer presenti nel grafo
|
|
|
|
|
|
|
|
## CLI Options
|
|
|
|
|
|
|
|
- `-i, --input <input>`: file to read
|
|
|
|
|
|
|
|
- `-c, --path_count <path_count>`: number of paths to visit when searching for the pattern (default: 1)
|
|
|
|
|
|
|
|
- `-p, --pattern <pattern>`: k-mer pattern to search (default: "ACGT")
|
|
|
|
|
|
|
|
- `-k, --kmer_size <kmer_size>`: k-mer length (default: 4)
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
- To show help message:
|
|
|
|
|
|
|
|
```
|
|
|
|
cargo run -- --help`
|
|
|
|
```
|
|
|
|
|
|
|
|
- For example to try out the `chrX` dataset:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
GFA_URL='https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/pggb/chroms/chrX.hprc-v1.0-pggb.gfa.gz'
|
|
|
|
wget $GFA_URL -O dataset/chrX.hprc-v1.0-pggb.local.gfa.gz
|
|
|
|
gunzip dataset/chrX.hprc-v1.0-pggb.local.gfa.gz
|
|
|
|
cargo run --release -- -i dataset/chrX.hprc-v1.0-pggb.local.gfa -c 2 -p ACGT -k 3
|
|
|
|
```
|
|
|
|
|
|
|
|
altri dataset sono elencati in [Note](#Note)
|
|
|
|
|
|
|
|
## Example GFA
|
|
|
|
|
|
|
|
```
|
|
|
|
H VN:Z:1.0
|
|
|
|
S 11 G
|
|
|
|
S 12 A
|
|
|
|
S 13 T
|
|
|
|
S 14 T
|
|
|
|
S 15 A
|
|
|
|
S 16 C
|
|
|
|
S 17 A
|
|
|
|
S 21 G
|
|
|
|
S 22 A
|
|
|
|
S 23 T
|
|
|
|
S 24 T
|
|
|
|
S 25 A
|
|
|
|
L 11 + 12 + *
|
|
|
|
L 11 + 13 + *
|
|
|
|
L 12 + 14 + *
|
|
|
|
L 13 + 14 + *
|
|
|
|
L 14 + 15 + *
|
|
|
|
L 14 + 16 + *
|
|
|
|
L 15 + 17 + *
|
|
|
|
L 16 + 17 + *
|
|
|
|
L 21 + 22 + *
|
|
|
|
L 21 + 23 + *
|
|
|
|
L 22 + 24 + *
|
|
|
|
L 23 + 24 - *
|
|
|
|
L 24 + 25 + *
|
|
|
|
P A 11+,12+,14+,15+,17+ *,*,*,*
|
|
|
|
P B 21+,22+,24+,25+ *,*,*
|
|
|
|
W sample 1 A 0 5 >11>12>14>15>17
|
|
|
|
W sample 2 A 0 5 >11>13>14>16>17
|
|
|
|
W sample 1 B 0 5 >21>22>24<23<21
|
|
|
|
W sample 2 B 0 4 >21>22>24>25
|
|
|
|
```
|
|
|
|
|
|
|
|
## Note
|
|
|
|
|
|
|
|
- Documentazione del formato GFA: http://gfa-spec.github.io/GFA-spec/GFA1.html
|
|
|
|
|
|
|
|
- Data set:
|
|
|
|
|
|
|
|
- [example.gfa](https://github.com/jltsiren/gbwt-rs/blob/main/test-data/example.gfa)
|
|
|
|
|
|
|
|
- [drb1.gfa](https://github.com/pangenome/odgi/blob/master/test/DRB1-3123_unsorted.gfa)
|
|
|
|
|
|
|
|
- [chrY.gfa](https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/pggb/chroms/chrY.hprc-v1.0-pggb.gfa.gz)
|
|
|
|
|
|
|
|
- [chrX.gfa](https://s3-us-west-2.amazonaws.com/human-pangenomics/pangenomes/freeze/freeze1/pggb/chroms/chrX.hprc-v1.0-pggb.gfa.gz)
|