A suite of desktop applications for working with iNaturalist taxonomy data. This project includes two powerful tools:
- TaxonomyDict: Generate translation dictionaries from taxonomy data in TSV and StarDict formats
- TaxonomyTree: Visualize and compare taxonomic relationships with interactive family tree diagrams
This project was intentionally generated entirely by Claude AI with zero human code editing. This was created as a learning exercise to explore the capabilities of AI-assisted software development and to demonstrate how complex, fully-functional applications can be built through AI collaboration.
- 100% AI-Generated Code: Every line of code, from GUI layout to data processing algorithms
- Zero Human Editing: No manual code modifications were made by humans
- Learning Path: Developed as an exploration of Claude AI's software development capabilities
- Modern C++ & wxWidgets: Demonstrates AI's ability to work with complex frameworks and libraries
This project serves as a case study in AI-human collaboration for software development, showcasing what's possible when leveraging AI tools effectively.
- Download & Process: Automatically download and extract iNaturalist taxonomy data
- Multi-Language Support: Generate dictionaries between any supported languages
- Scientific Names: Include scientific nomenclature in translations
- Multiple Output Formats: Export as TSV (tab-separated) or StarDict dictionary files
- Language Information: Translations include source language tags in italics for clarity
- Advanced Filtering: Filter entries to include only terms with target language translations
- Progress Tracking: Real-time progress indicators for all operations
- User-Friendly Interface: Clean, intuitive GUI with search functionality
- Interactive Visualization: Display taxonomic relationships in fan, vertical, or horizontal tree layouts
- Species Comparison: Add multiple species to compare their evolutionary relationships
- Multi-Language Display: View taxa names in primary and secondary languages simultaneously
- Common Ancestor Analysis: Automatically find and display common ancestors of selected species
- Full Tree Mode: Option to show complete taxonomic tree up to kingdom level
- Export Capabilities: Save trees as SVG vector graphics or high-resolution PNG images
- Zoom & Pan: Smooth zoom controls and drag-to-pan navigation
- Search Functionality: Quick incremental search across all taxa in selected languages
The main application window showing the intuitive interface with language selection, filtering options, and progress tracking.
Example of a generated StarDict dictionary being used in GoldenDict, showing formatted translations with language tags and scientific names.
Interactive taxonomic family tree viewer showing species relationships with multi-language support and various layout options.
- Operating System:
- Linux (Ubuntu 20.04+ recommended) - Built and tested
- Windows - Cross-platform ready but untested by developer
- Dependencies:
- wxWidgets 3.0+
- libcurl4-openssl-dev (Linux) / libcurl (Windows)
- libzip-dev (Linux) / libzip (Windows)
- CMake 3.10+
- GCC with C++20 support (Linux) / MSVC 2019+ (Windows)
Note: This project has been built and tested exclusively on Linux. While the codebase uses cross-platform libraries (wxWidgets, libcurl, libzip) and should be compatible with Windows, it has not been tested on Windows by the developer.
sudo apt update
sudo apt install build-essential cmake
sudo apt install libwxgtk3.0-gtk3-dev libcurl4-openssl-dev libzip-devgit clone <repository-url>
cd TaxonomyTools
mkdir build && cd build
cmake ..
makeThis will build both applications.
# Launch the dictionary generator
./build/TaxonomyDict
# Launch the tree visualizer
./build/TaxonomyTreeYou can also build individual applications:
# Build only TaxonomyDict
cmake -DBUILD_TAXONOMY_TREE=OFF ..
make
# Build only TaxonomyTree
cmake -DBUILD_TAXONOMY_DICT=OFF ..
make- Enter Data URL: Paste the iNaturalist taxonomy data URL in the download field
- Default URL:
https://www.inaturalist.org/taxa/inaturalist-taxonomy.zip
- Default URL:
- Click "Download": Choose where to save the ZIP file
- Wait for Download: Progress bar shows download status
- Load Archive: Use "Load Existing Archive" to process the downloaded file
- Click "Load Existing Archive": Browse and select a previously downloaded taxonomy ZIP file
- Processing: The application extracts and indexes the taxonomy data
- Language Detection: Available languages are automatically detected and populated
- Choose Source Language: Select from the dropdown list of available languages
- Scientific Names: Use "Scientific Name" as source for scientific → vernacular dictionaries
- Search Functionality: Type to quickly find languages in the list
- Multiple Selection: Check one or more target languages from the list
- Search Support: Type to filter and find languages quickly
- Mix and Match: Combine multiple vernacular languages with scientific names
- Include Scientific Names: ☑️ Add scientific nomenclature to all entries
- Filter Only Targets: ☑️ Include only terms that have translations in selected target languages
- Unchecked: Include all source terms (some may only have scientific names)
- Checked: Include only terms with actual target language translations
- Set Output Directory: Click "Browse" to choose where dictionaries will be saved
- File Naming: Files are automatically named as
taxonomy_[source-language]_dictionary
- Click "Generate Dictionary": Starts the generation process
- Progress Tracking: Monitor progress through the status bar and progress indicator
- Output Files: Two formats are generated simultaneously:
- TSV File:
taxonomy_[source]_dictionary.tsv- Tab-separated format - StarDict Files:
.dict,.idx,.ifo- StarDict dictionary format
- TSV File:
- Structure:
Source Term[TAB]Translations - Translations: Multiple translations separated by
<br>tags - Language Tags: Each translation includes language in italics:
translation <i>(language)</i> - URLs: Reference URLs separated with double line breaks for visual clarity
- Compatible: Works with StarDict, GoldenDict, and other dictionary applications
- Metadata: Includes source/target language information in dictionary properties
- HTML Formatting: Supports rich text formatting with language tags
- Source: English
- Targets: Spanish, French, German
- Include Scientific: ☑️
- Result: English terms with translations in all selected languages plus scientific names
- Source: Scientific Name
- Targets: English, Spanish
- Filter Only Targets: ☑️
- Result: Only scientific names that have vernacular translations in English or Spanish
- Source: English
- Targets: All available languages
- Include Scientific: ☑️
- Filter Only Targets: ☐
- Result: Complete dictionary with all available translations
Translations are formatted with clear language indicators:
- Format:
translation <i>(language)</i> - Example:
Wolf <i>(English)</i>, Lobo <i>(Spanish)</i>, Loup <i>(French)</i> - Scientific Names: Clearly marked as
<i>(Scientific Name)</i> - URLs: Separated for easy identification of reference links
- Large Datasets: Processing complete taxonomy data may take several minutes
- Filtered Results: Use "Filter Only Targets" for faster processing and smaller files
- Language Selection: Limit target languages for faster generation if not all are needed
- Progress Monitoring: All operations show real-time progress and can be monitored
- TSV: Human-readable, spreadsheet-compatible format
- StarDict: Professional dictionary application format
- Metadata: Dictionary properties include language information and generation date
- Default Output: User-selected directory
- Naming Convention: Consistent naming based on source language
- File Sizes: Vary based on language coverage and filtering options
- Download Data: Use File → Download Taxonomy Data (Ctrl+D)
- Downloads the latest iNaturalist taxonomy archive
- Shows progress during download
- Load Archive: Use File → Load Archive (Ctrl+O)
- Browse and select a taxonomy ZIP file
- Wait for processing and language detection
- Choose Primary: Select the main display language from the dropdown
- Autocomplete: Type to quickly find languages
- Search Index: Changes rebuild the search index for the selected language
- Add Secondary: Select an additional language for bilingual display
- None Option: Select "(None)" to show only primary language
- Dual Display: Both languages appear on tree nodes when secondary is selected
- Type Search Term: Enter at least 3 characters in the search box
- View Results: Search results appear automatically with scientific names in parentheses
- Add to Compare List: Double-click any result to add it to the comparison list
- View Selected: All selected species appear in the compare list
- Remove Species: Double-click any item in the compare list to remove it
- Clear All: Click "Clear List" button to remove all species at once
- Fan Layout (Ctrl+1): Circular/radial tree spreading from center
- Vertical Layout (Ctrl+2): Traditional top-to-bottom tree
- Horizontal Layout (Ctrl+3): Left-to-right tree layout
- Show Boxes (Ctrl+B): Toggle rectangular boxes around node labels
- Show Full Tree (Ctrl+F): Display complete ancestry up to kingdom level
- Unchecked: Shows only common ancestor relationships
- Checked: Extends tree to include all taxonomic levels to kingdom
- Zoom In (Ctrl+= or Ctrl+Numpad+): Increase tree size
- Zoom Out (Ctrl+- or Ctrl+Numpad-): Decrease tree size
- Reset Zoom (Ctrl+0 or Ctrl+Numpad0): Return to 100% zoom
- Mouse Wheel: Hold Ctrl and scroll to zoom
- Drag to Pan: Click and drag to move the tree view
- Scroll Bars: Use scrollbars for precise navigation
- Select: File → Export to SVG (Ctrl+S) (NOTE: Fan layout cannot be exported to SVG, it reverts to 300 dpi PNG)
- Choose Location: Select save location and filename
- Vector Format: Produces scalable vector graphics perfect for publications
- Select: File → Export to PNG (Ctrl+P)
- Set DPI: Enter desired resolution (70-600 DPI)
- 150 DPI: Standard screen resolution
- 300 DPI: Print quality
- 600 DPI: High-quality publications
- Raster Format: Produces pixel-based images at specified resolution
- Primary Name: Displayed in the selected primary language
- Secondary Name: Shown below in secondary language (if selected)
- Scientific Names: Always available when hovering or in scientific name mode
- Taxonomic Rank: Indicated by node position and styling
- Common Ancestors: Automatically calculated and displayed
- Branch Lines: Connect related taxa showing evolutionary relationships
- Terminal Nodes: Selected species appear at the tree endpoints
- Internal Nodes: Common ancestors and intermediate taxonomic ranks
- Purpose: Understand how closely related different species are
- Example: Compare Wolf, Dog, Fox to see Canidae family relationships
- Result: Visual tree showing common ancestors and divergence points
- Purpose: Learn species names in multiple languages
- Example: Primary=English, Secondary=Spanish
- Result: See both English and Spanish names on all nodes
- Purpose: Understand complete classification hierarchy
- Example: Add any species, enable "Show Full Tree"
- Result: Complete tree from Kingdom to Species
- Purpose: Create high-quality figures for papers
- Example: Configure tree, export as SVG at high DPI
- Result: Publication-ready vector graphics with perfect scaling
- Language Indexing: Initial language selection may take a few seconds for large datasets
- Search Response: Search results appear with slight delay for smooth typing
- Tree Complexity: More species = more complex tree calculations
- Export Quality: Higher DPI = larger file sizes and longer export times
- Full Tree Mode: Enabling full tree significantly increases tree size and complexity
- Ctrl+D: Download taxonomy data
- Ctrl+O: Load archive
- Ctrl+S: Export to SVG
- Ctrl+P: Export to PNG
- Ctrl+Q: Exit application
- Ctrl+1: Fan layout
- Ctrl+2: Vertical layout
- Ctrl+3: Horizontal layout
- Ctrl+B: Toggle boxes
- Ctrl+F: Toggle full tree
- Ctrl+=: Zoom in
- Ctrl+-: Zoom out
- Ctrl+0: Reset zoom
- Ctrl+Wheel: Smooth zoom
- GUI Framework: wxWidgets for cross-platform desktop interface
- Threading: Multi-threaded design for responsive UI during operations
- Data Processing: CSV parsing with efficient memory management
- Network: libcurl for reliable data downloading
- Compression: libzip for archive handling
- Dictionary Formats: TSV and StarDict generation engines
- Text Processing: HTML markup and formatting for rich text display
- Multi-target Support: Efficient handling of multiple target languages
- Tree Algorithms: Efficient common ancestor finding and tree construction
- Search Indexing: Fast multi-language search with autocomplete
- Rendering Engine: Custom vector graphics rendering for tree layouts
- Export Formats: SVG vector and PNG raster image generation
- Zoom & Pan: Smooth interactive navigation with hardware acceleration
- Primary: iNaturalist taxonomy database
- Format: CSV files within ZIP archives
- Languages: 50+ supported vernacular languages
- Coverage: Comprehensive taxonomic data across biological kingdoms
- Source Accuracy: Data sourced from iNaturalist's curated taxonomy
- Language Tags: Clear identification of translation languages
- Reference Links: Direct links to iNaturalist species pages
- Formatting: HTML-compatible markup for rich text display
As this is an AI-generated project showcasing Claude AI capabilities, contributions should focus on:
- Testing and bug reports
- Documentation improvements
- Feature suggestions
- Use case examples
This project is licensed under the MIT License - see the LICENSE file for details.
This unique project demonstrates AI-generated software capabilities through AI-human collaboration:
- AI Prompting & Direction: Darau, Blė
- Icon Design: Darau, Blė
- Code Generation & Implementation: Claude AI (Anthropic)
- iNaturalist: For providing comprehensive taxonomy data
- Claude AI: For generating 90% of the codebase
- wxWidgets Community: For the excellent cross-platform GUI framework
- Open Source Community: For the foundational libraries used
This README and 90% of the project were generated by Claude AI as part of an exploration into AI-assisted software development capabilities.
Copyright to AI prompting: Darau, Blė.


