Skip to content

Commit 5cc3a8d

Browse files
authored
Merge pull request #201 from pachterlab/minor-gget-virus-fixes
Minor gget virus fixes
2 parents 505bf21 + 176ecbc commit 5cc3a8d

File tree

9 files changed

+2118
-713
lines changed

9 files changed

+2118
-713
lines changed

docs/src/en/updates.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
## ✨ What's new
2+
**Version ≥ 0.30.2** (Jan 23, 2026):
3+
- [`gget virus`](virus.md): Metadata streaming optimization, improved protein filtering, and enhanced error handling
4+
- Metadata now streams to disk during fetch to prevent memory exhaustion on large datasets (100,000+ records)
5+
- Fixed metadata CSV mapping (camelCase → snake_case) for organism name, host, and collection date
6+
- Enhanced protein filtering for segmented viruses with improved FASTA header parsing
7+
- Added `annotated=False` option for filtering unannotated sequences
8+
- Added progress bars to batched sequence downloads
9+
210
**Version ≥ 0.30.1** (Jan 22, 2026):
311
- [`gget virus`](virus.md): Improved reliability with enhanced error handling and retry logic
412
- Fixed collection date naming bug

docs/src/en/virus.md

Lines changed: 5 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This module was written by [Ferdous Nasri](https://github.com/ferbsx).
1111

1212
**Positional argument**
1313
`virus`
14-
Virus taxon name (e.g. 'Zika virus'), taxon ID (e.g. 2697049), or accession number (e.g. 'NC\_045512.2').
14+
Virus taxon name (e.g. 'Zika virus'), taxon ID (e.g. 2697049), accession number (e.g. 'NC\_045512.2'), space-separated list of accessions (e.g. 'NC\_045512.2 MN908947.3 MT020781.1'), or path to a text file containing accession numbers (one per line, when combined with `--is_accession`).
1515

1616
**Optional arguments**
1717
`-o` `--out`
@@ -81,17 +81,17 @@ Filter by geographic location of sample collection (e.g. 'USA', 'Asia').
8181
`--submitter_country`
8282
Filter by the country of the sequence submitter.
8383

84-
`--source_database`
85-
Filter by source database. One of: 'genbank' or 'refseq'.
86-
8784
_SARS-CoV-2 specific filters_
8885

8986
`--lineage`
9087
Filter by SARS-CoV-2 lineage (e.g. 'B.1.1.7', 'P.1').
9188

9289
**Flags**
9390
`-a` `--is_accession`
94-
Flag to indicate that the `virus` positional argument is an accession number.
91+
Flag to indicate that the `virus` positional argument is an accession number, space-separated list of accessions, or path to a text file containing accession numbers (one per line). For SARS-CoV-2 and Alphainfluenza cached downloads, supports:
92+
- Single accession: `NC_045512.2`
93+
- Space-separated list: `NC_045512.2 MN908947.3 MT020781.1`
94+
- Text file path: `accessions.txt` (one accession per line)
9595

9696
`--refseq_only`
9797
Flag to limit search to RefSeq genomes only (higher quality, curated sequences).
@@ -666,66 +666,6 @@ virus()
666666
- **Failed GenBank metadata batches**: Accession lists with individual retry URLs
667667
- All failed operations include exact commands/URLs that can be run manually for retry
668668

669-
## Performance Characteristics
670-
671-
### Scalability
672-
- **Small datasets** (< 1,000 sequences): Near-instantaneous processing
673-
- **Medium datasets** (1,000 - 10,000 sequences): Minutes to complete
674-
- **Large datasets** (> 10,000 sequences): Optimized pagination and filtering
675-
676-
### Memory Usage
677-
- Streaming processing minimizes memory footprint
678-
- Metadata cached in memory for filtering operations
679-
- Large FASTA files processed in chunks
680-
681-
### Network Efficiency
682-
- Minimal API calls due to server-side filtering
683-
- Targeted downloads reduce bandwidth usage
684-
- Automatic retry with exponential backoff
685-
686-
## Error Handling
687-
688-
### API Failures
689-
- Smart retry strategy with exponential backoff and jitter
690-
- Server-side error detection with specific guidance:
691-
- Timeout handling for large datasets
692-
- Geographic filter optimization suggestions
693-
- Batch size adjustments for GenBank metadata
694-
- Connection pooling and session management
695-
- Detailed error logging with troubleshooting steps
696-
697-
### Data Validation
698-
- Comprehensive input parameter validation:
699-
- Type checking for all parameters
700-
- Range validation for numeric values
701-
- Date format and range validation
702-
- Boolean parameter normalization
703-
- Sequence integrity verification:
704-
- FASTA format validation
705-
- Ambiguous character detection
706-
- Protein/gene completeness checks
707-
- Metadata consistency validation:
708-
- Required field presence checks
709-
- Data type validation
710-
- Cross-reference validation
711-
- GenBank record validation
712-
713-
### Recovery Mechanisms
714-
- Automatic temporary file cleanup
715-
- Partial result preservation:
716-
- Intermediate metadata saving
717-
- Progressive filtering state saving
718-
- GenBank metadata caching
719-
- Hierarchical fallback strategies:
720-
- SARS-CoV-2 optimized packages
721-
- Cached data fallback
722-
- API-based retrieval fallback
723-
- Detailed error reporting:
724-
- Root cause analysis
725-
- Alternative command suggestions
726-
- Filter relaxation recommendations
727-
- Performance optimization tips
728-
729669
## Usage Examples
730670

731671
### Command Line Examples

docs/src/es/updates.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
## ✨ ¡Lo más reciente!
2+
**Versión ≥ 0.30.2** (23 de enero de 2026):
3+
- [`gget virus`](virus.md): Optimización de streaming de metadatos, filtrado mejorado de proteínas y manejo de errores mejorado
4+
- Los metadatos ahora se transmiten al disco durante la búsqueda para evitar el agotamiento de memoria en conjuntos de datos grandes (100.000+ registros)
5+
- Se corrigió el mapeo de CSV de metadatos (camelCase → snake_case) para nombre de organismo, host y fecha de recopilación
6+
- Filtrado mejorado de proteínas para virus segmentados con análisis mejorado de encabezados FASTA
7+
- Se agregó la opción `annotated=False` para filtrar secuencias sin anotar
8+
- Se agregaron barras de progreso a las descargas de secuencias en lotes
9+
210
**Versión ≥ 0.30.0** (19 de enero de 2026):
311
- NUEVOS MÓDULOS:
412
- [`gget 8cube`](8cube.md)

docs/src/es/virus.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Este módulo fue escrito por [Ferdous Nasri](https://github.com/ferbsx).
1111

1212
**Argumento posicional**
1313
`virus`
14-
Nombre del taxón del virus (p. ej. 'Zika virus'), ID taxonómico (p. ej. 2697049) o número de acceso (p. ej. 'NC\_045512.2').
14+
Nombre del taxón del virus (p. ej. 'Zika virus'), ID taxonómico (p. ej. 2697049), número de acceso (p. ej. 'NC\_045512.2'), lista de accesiones separadas por espacios (p. ej. 'NC\_045512.2 MN908947.3 MT020781.1'), o ruta a un archivo de texto que contiene números de acceso (uno por línea, cuando se combina con `--is_accession`).
1515

1616
**Argumentos opcionales**
1717
`-o` `--out`
@@ -81,17 +81,17 @@ Filtra por ubicación geográfica de la recolección de la muestra (p. ej. 'USA'
8181
`--submitter_country`
8282
Filtra por el país del remitente de la secuencia.
8383

84-
`--source_database`
85-
Filtra por base de datos de origen. Uno de: 'genbank' o 'refseq'.
86-
8784
_Filtros específicos de SARS-CoV-2_
8885

8986
`--lineage`
9087
Filtra por linaje de SARS-CoV-2 (p. ej. 'B.1.1.7', 'P.1').
9188

9289
**Banderas**
9390
`-a` `--is_accession`
94-
Bandera para indicar que el argumento posicional `virus` es un número de acceso.
91+
Bandera para indicar que el argumento posicional `virus` es un número de acceso, una lista de accesiones separadas por espacios, o una ruta a un archivo de texto que contiene números de acceso (uno por línea). Para descargas en caché de SARS-CoV-2 y Alphainfluenza, soporta:
92+
- Acceso único: `NC_045512.2`
93+
- Lista separada por espacios: `NC_045512.2 MN908947.3 MT020781.1`
94+
- Ruta de archivo de texto: `accessions.txt` (uno por línea)
9595

9696
`--refseq_only`
9797
Bandera para limitar la búsqueda solo a genomas RefSeq (secuencias de mayor calidad, curadas).

0 commit comments

Comments
 (0)