Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Parsing phylogenetic trees (newick format)

Abierto
#51 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
45/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
rust

Línea de trabajo

The issue asks for a new phylo.rs module that parses Newick strings into a struct and prints them back; the payload names no existing file to edit. Start by reading the Newick examples in the issue body and decide on the node representation. Done means the listed examples, from the unnamed tree through the rooted-on-a-leaf tree, parse and print back equivalently, with tests for each.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Is your feature request related to a problem? Please describe.

Would like to add parsing of newick format just to print the newick in the first place. Newick is described here:https://en.wikipedia.org/wiki/Newick_format. It is possible to get multiple newick trees inside a single file, they each finish with a semicolon. Some trees can have many nodes, the structure is a graph-type with nodes, edges and leaves. There is an XML format that some python programs parse newick into, phyloXML

Describe the solution you'd like

Looking to start a module phylo.rs with a parse of newick into some type of good struct or hashmap in the first place, with just ability to print it out.

Describe alternatives you've considered

There are some newick tree parsers in crates.io but they all seem to be a few years old, for example newick_0.11.0

Additional context

Various types of newick tree to parse: The one below marked as "popular" is the one I've seen much the most often, so we could concentrate on that structure and allow the others if possible. There are multiple nodes.
(,,(,)); no nodes are named
(A,B,(C,D)); leaf nodes are named
(A,B,(C,D)E)F; all nodes are named
(:0.1,:0.2,(:0.3,:0.4):0.5); all but root node have a distance to parent
(:0.1,:0.2,(:0.3,:0.4):0.5):0.0; all have a distance to parent
(A:0.1,B:0.2,(C:0.3,D:0.4):0.5); distances and leaf names (popular)
(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F; distances and all names
((B:0.2,(C:0.3,D:0.4)E:0.5)F:0.1)A; a tree rooted on a leaf node (rare)

Lenguaje dominante
Rust
Estrellas
38
Forks
15
Merge medio
21 h 33 min
PR fusionados (30 d)
2

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de LCrossman/microBioRust

Todos los issues de LCrossman/microBioRust

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.