New GFA operator: `lace`
- Dominant language
- Rust
- Stars
- 45
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
Here is another pre-existing GFA operator that we could add to FlatGFA! It's `impg lace`, described in [the impg README][r]:
```
# Combine multiple GFA files (auto-detects format)
impg lace -f file1.gfa file2.gfa file3.gfa -o combined.gfa
```
The `impg lace` command can combine multiple GFA files into one. It can also do other things (including handling [VCF][] files), but let's ignore that. We would implement this as a transformation on FlatGFA data structures.
The to-do list for this subproject would be identical to every other "let's add a new operator" effort:
* [ ] Play with the existing tool to understand the specification. Write it out in natural language.
* [ ] Add a reference implementation to `slow-odgi`. Add differential tests to compare the behavior to the existing tool.
* [ ] Implement the core functionality in FlatGFA.
* [ ] Add an `fgfa` subcommand to expose the functionality on the command line. Extend the differential tests to now compare all three implementations.
* [ ] Compare the performance between the three implementations, and possibly find stuff to optimize in the FlatGFA implementation.
* [ ] Add the function to the Python bindings.
[r]: https://github.com/pangenome/impg#lace
[vcf]: https://en.wikipedia.org/wiki/Variant_Call_Format
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the linked impg README and experiment with `impg lace` to write down its behavior for combining GFA files. Then add a reference implementation in `slow-odgi`, implement the transformation in FlatGFA, expose it through an `fgfa` subcommand, and extend differential tests across the implementations. Done also requires performance comparison and Python bindings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- bioinformatics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100