Newick Tree Visualizer
A tool for creating interactive visualizations of phylogenetic trees in Newick format.
⭐ Support the Project
If you find this project helpful, please consider giving it a star on GitHub! It helps make the project more visible and encourages further development.
✨ Features
- 🌳 Interactive visualization of phylogenetic trees
- 🎨 Configurable node and branch styling
- 🎯 Custom grouping and coloring of nodes
- 📐 Multiple layout directions (right, left, up, down)
- 🔄 Draggable nodes for manual layout adjustments
- 💾 Multiple export formats (HTML, PNG, JPG, PDF)
- ⚡️ Support for large-scale trees
- 🎯 Optional confidence values display
📦 Installation
System Dependencies
Google Chrome is required:
# macOS
brew install --cask google-chrome
# Ubuntu
sudo apt-get update
sudo apt-get install google-chrome-stable
# CentOS
sudo yum install google-chrome-stable
Python Package
pip install newick-visualizer
🚀 Quick Start
Basic Usage
newick-viz input.nwk groups.json -o output.html
Example with Options
newick-viz input.nwk groups.json \
-o output.jpg \
--padding 21 \
--points 8 \
--distance-threshold 1.5 \
--min-branch-length 35 \
--default-length 60 \
--max-branch-length 80 \
--opacity 0.6 \
--font-size 13 \
--font-weight bold \
--link-width 3.0 \
--link-color '#f7cc4f' \
--render-delay 2000
Export Formats
Supports multiple output formats:
# Interactive HTML
newick-viz input.nwk groups.json -o tree.html
# Static Images
newick-viz input.nwk groups.json -o tree.jpg
newick-viz input.nwk groups.json -o tree.png
# PDF Document
newick-viz input.nwk groups.json -o tree.pdf
🎮 Interactive Features
🖱️ Node Dragging
- Click and drag any node to manually adjust its position
- Connected lines and group backgrounds will update automatically
- Visual feedback during dragging (node highlight and size change)
- Changes persist in the visualization
↩️ Undo Function
- Undo button available in the top-left corner
- Reverts the last node movement
- Multiple levels of undo supported
- Visual feedback when undo is available/unavailable
- Keyboard shortcut support (⌃/⌘ + Z)
✨ Hover Effects
- Nodes enlarge slightly on hover
- Labels become more prominent
- Smooth transitions for all visual changes
🛠️ Configuration Options
Basic Options
-o, --output: Output file path [default: tree_visualization.html]--render-delay: Rendering delay in milliseconds [default: 2000]
Visual Style
--padding: Padding around nodes in pixels [default: 35]--opacity: Opacity of group backgrounds (0-1) [default: 0.3]--points: Number of points around each node [range: 6-24] [default: 12]--distance-threshold: Distance threshold for group backgrounds [default: 1.2]
Font Settings
--font-size: Font size in pixels [default: 12]--font-family: Font family [default: "Arial, sans-serif"]--font-weight: Font weight [default: "normal"]
Branch Settings
--min-branch-length: Minimum branch length [default: 30]--max-branch-length: Maximum branch length [default: 70]--default-length: Default length when no confidence value [default: 40]
Connection Line Style
--link-color: Color of connecting lines [default: "#999999"]--link-width: Width of connecting lines [default: 1.5]
Other Settings
--show-confidence: Show confidence values [flag]
📝 Input File Formats
Newick File
Uses standard Newick format, for example:
((A:0.1,B:0.2)0.95:0.3,C:0.4);
Groups Configuration File (JSON)
{
"layout": {
"direction": "right",
"groupOrder": ["Group1", "Group2"]
},
"groups": {
"Group1": {
"color": "#ffcdd2",
"members": ["A", "B"],
"order": ["B", "A"]
},
"Group2": {
"color": "#c8e6c9",
"members": ["C"],
"order": ["C"]
}
}
}
🔧 Development Installation
git clone https://github.com/Bengerthelorf/newick-visualizer.git
cd newick-visualizer
pip install -e .
Project Structure
.
├── _version.py
├── LICENSE
├── MANIFEST.in
├── newick_visualizer/
│ ├── __init__.py
│ ├── core/
│ │ ├── tree_generator.py
│ │ ├── template_manager.py
│ │ └── utils.py
│ └── templates/
│ ├── base.html
│ ├── scripts/
│ │ ├── tree.js
│ │ ├── layout.js
│ │ ├── groups.js
│ │ └── main.js
│ └── styles/
│ └── main.css
├── README.md
└── setup.py
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
If you have any suggestions or feedback, please submit them on our GitHub Issues page.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
Metadata
Release files for newick-visualizer 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| newick_visualizer-1.1.1.tar.gz | 28.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| newick_visualizer-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.5 kB
Release files / newick_visualizer-1.1.1.tar.gz
| Download URL | newick_visualizer-1.1.1.tar.gz |
|---|---|
| Size | 28.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
86ddae190c31f94d688c1ff8d946a48c7e3e84f39f94d31ade5034a5b1b067a1
|
|
BLAKE2b-256 checksum How to use checksums |
85d3e97d025eaf2bd4b140deade3b8c6e288ef5b5286169009cfab446f29980e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.8
|
Release files / newick_visualizer-1.1.1-py3-none-any.whl
| Download URL | newick_visualizer-1.1.1-py3-none-any.whl |
|---|---|
| Size | 34.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
999884a44ba8917c1ae5b817092d7ff0d841423bd72e4f88fc7ecdb023146fa6
|
|
BLAKE2b-256 checksum How to use checksums |
c2e09b3c4db73bc9a4fce7d3e61f2d87271edad54e6d50db51bafb59dcebe93b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.8
|