# Progetto ASD 2023/2024
Creazione e analisi di un Pangenome Graph.
## Obbiettivi / Features
- [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
- [ ] (WIP) (Opzionale) Calcolare le frequenze di occorrenza di tutti i k-mer
presenti nel grafo
## CLI Options
- `-i, --input `: file to read
- `-c, --path_count `: number of paths to visit when searching for
the pattern (default: 1)
- `-p, --pattern `: k-mer pattern to search (default: "ACGT")
- `-k, --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)
## Stats
| Language | Files | Lines | Code | Comments | Blanks |
| --------- | ------ | -------- | -------- | -------- | ------- |
| Rust | 21 | 3606 | 2452 | 464 | 690 |
| Python | 2 | 249 | 164 | 40 | 45 |
| TOML | 8 | 110 | 99 | 2 | 9 |
| Markdown | 4 | 131 | 0 | 82 | 34 |
| **Total** | **35** | **4096** | **2715** | **588** | **778** |