BiNgoViewer 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bingoviewer-1.0.0/BiNgoViewer.egg-info/PKG-INFO +132 -0
- bingoviewer-1.0.0/BiNgoViewer.egg-info/SOURCES.txt +29 -0
- bingoviewer-1.0.0/BiNgoViewer.egg-info/dependency_links.txt +1 -0
- bingoviewer-1.0.0/BiNgoViewer.egg-info/entry_points.txt +2 -0
- bingoviewer-1.0.0/BiNgoViewer.egg-info/requires.txt +6 -0
- bingoviewer-1.0.0/BiNgoViewer.egg-info/top_level.txt +1 -0
- bingoviewer-1.0.0/MANIFEST.in +2 -0
- bingoviewer-1.0.0/PKG-INFO +132 -0
- bingoviewer-1.0.0/README.md +105 -0
- bingoviewer-1.0.0/bingoviewer/__init__.py +3 -0
- bingoviewer-1.0.0/bingoviewer/__main__.py +11 -0
- bingoviewer-1.0.0/bingoviewer/cli.py +64 -0
- bingoviewer-1.0.0/bingoviewer/frontend_dist/assets/index-wC3QoUws.js +81 -0
- bingoviewer-1.0.0/bingoviewer/frontend_dist/index.html +18 -0
- bingoviewer-1.0.0/bingoviewer/server/__init__.py +0 -0
- bingoviewer-1.0.0/bingoviewer/server/api/__init__.py +0 -0
- bingoviewer-1.0.0/bingoviewer/server/api/data.py +112 -0
- bingoviewer-1.0.0/bingoviewer/server/api/genome.py +85 -0
- bingoviewer-1.0.0/bingoviewer/server/api/tracks.py +70 -0
- bingoviewer-1.0.0/bingoviewer/server/main.py +48 -0
- bingoviewer-1.0.0/bingoviewer/server/models.py +104 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/__init__.py +0 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/annotation_reader.py +271 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/bam_reader.py +111 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/bigwig_reader.py +424 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/genbank_reader.py +88 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/genome_reader.py +50 -0
- bingoviewer-1.0.0/bingoviewer/server/readers/vcf_reader.py +110 -0
- bingoviewer-1.0.0/bingoviewer/server/state.py +87 -0
- bingoviewer-1.0.0/pyproject.toml +52 -0
- bingoviewer-1.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BiNgoViewer
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: BiNgo Genome Viewer — a lightweight browser-based genomics viewer
|
|
5
|
+
Author-email: Billy Ngo <billy.ngo0108@gmail.com>
|
|
6
|
+
License: All rights reserved
|
|
7
|
+
Project-URL: Homepage, https://github.com/billy-ngo/bingo-genome-viewer
|
|
8
|
+
Project-URL: Repository, https://github.com/billy-ngo/bingo-genome-viewer
|
|
9
|
+
Keywords: genomics,genome,viewer,browser,bioinformatics,igv
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: fastapi>=0.111.0
|
|
22
|
+
Requires-Dist: uvicorn[standard]>=0.29.0
|
|
23
|
+
Requires-Dist: biopython>=1.83
|
|
24
|
+
Requires-Dist: pyfaidx>=0.8.1
|
|
25
|
+
Requires-Dist: bamnostic>=1.3
|
|
26
|
+
Requires-Dist: python-multipart>=0.0.9
|
|
27
|
+
|
|
28
|
+
# BiNgo Genome Viewer
|
|
29
|
+
|
|
30
|
+
A lightweight, browser-based genomics viewer for visualizing genomes, coverage tracks, read alignments, variants, and annotations. Built as a modern alternative to IGV.
|
|
31
|
+
|
|
32
|
+
## Supported File Formats
|
|
33
|
+
|
|
34
|
+
| Type | Formats |
|
|
35
|
+
|------|---------|
|
|
36
|
+
| **Genome** | GenBank (`.gb`, `.gbk`), FASTA (`.fasta`, `.fa`) |
|
|
37
|
+
| **Coverage** | BigWig (`.bw`), WIG (`.wig`), BedGraph (`.bedgraph`, `.bdg`) |
|
|
38
|
+
| **Reads** | BAM (`.bam` + `.bai` index) |
|
|
39
|
+
| **Variants** | VCF (`.vcf`, `.vcf.gz`) |
|
|
40
|
+
| **Annotations** | BED (`.bed`), GFF (`.gff`, `.gff3`), GTF (`.gtf`), GenBank (`.gb`) |
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
### Install with pip (recommended)
|
|
45
|
+
|
|
46
|
+
No Node.js required — the frontend is pre-built and bundled.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install BiNgoViewer
|
|
50
|
+
bingo
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This installs the `bingo` command, starts the server, and opens the viewer in your browser. Options:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bingo --port 9000 # use a custom port
|
|
57
|
+
bingo --no-browser # start without opening the browser
|
|
58
|
+
python -m bingoviewer # alternative way to launch
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Windows (from source)
|
|
62
|
+
|
|
63
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
64
|
+
|
|
65
|
+
Double-click **`launch.bat`**. On first run it will install dependencies automatically, then open the viewer in your browser.
|
|
66
|
+
|
|
67
|
+
### macOS (from source)
|
|
68
|
+
|
|
69
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
70
|
+
|
|
71
|
+
Double-click **`BiNgo Genome Viewer.command`** (or run `./launch.sh` from a terminal). On first run it will create a virtual environment and install dependencies, then open the viewer in your browser.
|
|
72
|
+
|
|
73
|
+
> **Permission denied?** If macOS says the file can't be opened, run this once in Terminal from the project folder:
|
|
74
|
+
> ```bash
|
|
75
|
+
> chmod +x launch.sh "BiNgo Genome Viewer.command"
|
|
76
|
+
> ```
|
|
77
|
+
|
|
78
|
+
### Linux (from source)
|
|
79
|
+
|
|
80
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
chmod +x launch.sh
|
|
84
|
+
./launch.sh
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Docker
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cd app
|
|
91
|
+
docker-compose up --build
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Then open [http://localhost:8000](http://localhost:8000).
|
|
95
|
+
|
|
96
|
+
## Usage
|
|
97
|
+
|
|
98
|
+
1. **Load a genome** — Drag and drop a FASTA or GenBank file into the file loader at the top
|
|
99
|
+
2. **Add tracks** — Drag and drop any supported track files (BAM, BigWig, WIG, VCF, BED, GFF, etc.)
|
|
100
|
+
3. **Navigate** — Click and drag on tracks to pan; scroll wheel to zoom; use the coordinate bar to jump to a region
|
|
101
|
+
4. **Track settings** — Click the gear icon to adjust height, color, scale, and bar width for tracks
|
|
102
|
+
5. **Reorder tracks** — Drag the grip handle (`≡`) on any track label to reorder
|
|
103
|
+
6. **Export** — Click Export to save the current view as SVG or PNG
|
|
104
|
+
7. **Save session** — Click Save Session to store your current workspace; restore it later or export as a JSON file
|
|
105
|
+
|
|
106
|
+
## Project Structure
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
├── pyproject.toml # pip package definition
|
|
110
|
+
├── bingoviewer/ # Installable Python package
|
|
111
|
+
│ ├── cli.py # `bingo` CLI entry point
|
|
112
|
+
│ ├── server/ # FastAPI backend (bundled)
|
|
113
|
+
│ └── frontend_dist/ # Pre-built React frontend
|
|
114
|
+
├── launch.bat # Windows launcher (from source)
|
|
115
|
+
├── launch.sh # macOS / Linux launcher (from source)
|
|
116
|
+
├── BiNgo Genome Viewer.command # macOS double-click launcher
|
|
117
|
+
└── app/ # Application source code
|
|
118
|
+
├── backend/ # Python (FastAPI) REST API
|
|
119
|
+
├── frontend/ # React (Vite) user interface
|
|
120
|
+
├── Dockerfile # Docker build
|
|
121
|
+
└── docker-compose.yml # Docker Compose config
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Citation
|
|
125
|
+
|
|
126
|
+
If you use this software in your research, please cite:
|
|
127
|
+
|
|
128
|
+
> Ngo, B. (2026). BiNgo Genome Viewer (v1.0.0) [Software].
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
All rights reserved. Contact the author for licensing inquiries.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
MANIFEST.in
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
BiNgoViewer.egg-info/PKG-INFO
|
|
5
|
+
BiNgoViewer.egg-info/SOURCES.txt
|
|
6
|
+
BiNgoViewer.egg-info/dependency_links.txt
|
|
7
|
+
BiNgoViewer.egg-info/entry_points.txt
|
|
8
|
+
BiNgoViewer.egg-info/requires.txt
|
|
9
|
+
BiNgoViewer.egg-info/top_level.txt
|
|
10
|
+
bingoviewer/__init__.py
|
|
11
|
+
bingoviewer/__main__.py
|
|
12
|
+
bingoviewer/cli.py
|
|
13
|
+
bingoviewer/frontend_dist/index.html
|
|
14
|
+
bingoviewer/frontend_dist/assets/index-wC3QoUws.js
|
|
15
|
+
bingoviewer/server/__init__.py
|
|
16
|
+
bingoviewer/server/main.py
|
|
17
|
+
bingoviewer/server/models.py
|
|
18
|
+
bingoviewer/server/state.py
|
|
19
|
+
bingoviewer/server/api/__init__.py
|
|
20
|
+
bingoviewer/server/api/data.py
|
|
21
|
+
bingoviewer/server/api/genome.py
|
|
22
|
+
bingoviewer/server/api/tracks.py
|
|
23
|
+
bingoviewer/server/readers/__init__.py
|
|
24
|
+
bingoviewer/server/readers/annotation_reader.py
|
|
25
|
+
bingoviewer/server/readers/bam_reader.py
|
|
26
|
+
bingoviewer/server/readers/bigwig_reader.py
|
|
27
|
+
bingoviewer/server/readers/genbank_reader.py
|
|
28
|
+
bingoviewer/server/readers/genome_reader.py
|
|
29
|
+
bingoviewer/server/readers/vcf_reader.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
bingoviewer
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: BiNgoViewer
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: BiNgo Genome Viewer — a lightweight browser-based genomics viewer
|
|
5
|
+
Author-email: Billy Ngo <billy.ngo0108@gmail.com>
|
|
6
|
+
License: All rights reserved
|
|
7
|
+
Project-URL: Homepage, https://github.com/billy-ngo/bingo-genome-viewer
|
|
8
|
+
Project-URL: Repository, https://github.com/billy-ngo/bingo-genome-viewer
|
|
9
|
+
Keywords: genomics,genome,viewer,browser,bioinformatics,igv
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: fastapi>=0.111.0
|
|
22
|
+
Requires-Dist: uvicorn[standard]>=0.29.0
|
|
23
|
+
Requires-Dist: biopython>=1.83
|
|
24
|
+
Requires-Dist: pyfaidx>=0.8.1
|
|
25
|
+
Requires-Dist: bamnostic>=1.3
|
|
26
|
+
Requires-Dist: python-multipart>=0.0.9
|
|
27
|
+
|
|
28
|
+
# BiNgo Genome Viewer
|
|
29
|
+
|
|
30
|
+
A lightweight, browser-based genomics viewer for visualizing genomes, coverage tracks, read alignments, variants, and annotations. Built as a modern alternative to IGV.
|
|
31
|
+
|
|
32
|
+
## Supported File Formats
|
|
33
|
+
|
|
34
|
+
| Type | Formats |
|
|
35
|
+
|------|---------|
|
|
36
|
+
| **Genome** | GenBank (`.gb`, `.gbk`), FASTA (`.fasta`, `.fa`) |
|
|
37
|
+
| **Coverage** | BigWig (`.bw`), WIG (`.wig`), BedGraph (`.bedgraph`, `.bdg`) |
|
|
38
|
+
| **Reads** | BAM (`.bam` + `.bai` index) |
|
|
39
|
+
| **Variants** | VCF (`.vcf`, `.vcf.gz`) |
|
|
40
|
+
| **Annotations** | BED (`.bed`), GFF (`.gff`, `.gff3`), GTF (`.gtf`), GenBank (`.gb`) |
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
### Install with pip (recommended)
|
|
45
|
+
|
|
46
|
+
No Node.js required — the frontend is pre-built and bundled.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install BiNgoViewer
|
|
50
|
+
bingo
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This installs the `bingo` command, starts the server, and opens the viewer in your browser. Options:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bingo --port 9000 # use a custom port
|
|
57
|
+
bingo --no-browser # start without opening the browser
|
|
58
|
+
python -m bingoviewer # alternative way to launch
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Windows (from source)
|
|
62
|
+
|
|
63
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
64
|
+
|
|
65
|
+
Double-click **`launch.bat`**. On first run it will install dependencies automatically, then open the viewer in your browser.
|
|
66
|
+
|
|
67
|
+
### macOS (from source)
|
|
68
|
+
|
|
69
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
70
|
+
|
|
71
|
+
Double-click **`BiNgo Genome Viewer.command`** (or run `./launch.sh` from a terminal). On first run it will create a virtual environment and install dependencies, then open the viewer in your browser.
|
|
72
|
+
|
|
73
|
+
> **Permission denied?** If macOS says the file can't be opened, run this once in Terminal from the project folder:
|
|
74
|
+
> ```bash
|
|
75
|
+
> chmod +x launch.sh "BiNgo Genome Viewer.command"
|
|
76
|
+
> ```
|
|
77
|
+
|
|
78
|
+
### Linux (from source)
|
|
79
|
+
|
|
80
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
chmod +x launch.sh
|
|
84
|
+
./launch.sh
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Docker
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cd app
|
|
91
|
+
docker-compose up --build
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Then open [http://localhost:8000](http://localhost:8000).
|
|
95
|
+
|
|
96
|
+
## Usage
|
|
97
|
+
|
|
98
|
+
1. **Load a genome** — Drag and drop a FASTA or GenBank file into the file loader at the top
|
|
99
|
+
2. **Add tracks** — Drag and drop any supported track files (BAM, BigWig, WIG, VCF, BED, GFF, etc.)
|
|
100
|
+
3. **Navigate** — Click and drag on tracks to pan; scroll wheel to zoom; use the coordinate bar to jump to a region
|
|
101
|
+
4. **Track settings** — Click the gear icon to adjust height, color, scale, and bar width for tracks
|
|
102
|
+
5. **Reorder tracks** — Drag the grip handle (`≡`) on any track label to reorder
|
|
103
|
+
6. **Export** — Click Export to save the current view as SVG or PNG
|
|
104
|
+
7. **Save session** — Click Save Session to store your current workspace; restore it later or export as a JSON file
|
|
105
|
+
|
|
106
|
+
## Project Structure
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
├── pyproject.toml # pip package definition
|
|
110
|
+
├── bingoviewer/ # Installable Python package
|
|
111
|
+
│ ├── cli.py # `bingo` CLI entry point
|
|
112
|
+
│ ├── server/ # FastAPI backend (bundled)
|
|
113
|
+
│ └── frontend_dist/ # Pre-built React frontend
|
|
114
|
+
├── launch.bat # Windows launcher (from source)
|
|
115
|
+
├── launch.sh # macOS / Linux launcher (from source)
|
|
116
|
+
├── BiNgo Genome Viewer.command # macOS double-click launcher
|
|
117
|
+
└── app/ # Application source code
|
|
118
|
+
├── backend/ # Python (FastAPI) REST API
|
|
119
|
+
├── frontend/ # React (Vite) user interface
|
|
120
|
+
├── Dockerfile # Docker build
|
|
121
|
+
└── docker-compose.yml # Docker Compose config
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Citation
|
|
125
|
+
|
|
126
|
+
If you use this software in your research, please cite:
|
|
127
|
+
|
|
128
|
+
> Ngo, B. (2026). BiNgo Genome Viewer (v1.0.0) [Software].
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
All rights reserved. Contact the author for licensing inquiries.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# BiNgo Genome Viewer
|
|
2
|
+
|
|
3
|
+
A lightweight, browser-based genomics viewer for visualizing genomes, coverage tracks, read alignments, variants, and annotations. Built as a modern alternative to IGV.
|
|
4
|
+
|
|
5
|
+
## Supported File Formats
|
|
6
|
+
|
|
7
|
+
| Type | Formats |
|
|
8
|
+
|------|---------|
|
|
9
|
+
| **Genome** | GenBank (`.gb`, `.gbk`), FASTA (`.fasta`, `.fa`) |
|
|
10
|
+
| **Coverage** | BigWig (`.bw`), WIG (`.wig`), BedGraph (`.bedgraph`, `.bdg`) |
|
|
11
|
+
| **Reads** | BAM (`.bam` + `.bai` index) |
|
|
12
|
+
| **Variants** | VCF (`.vcf`, `.vcf.gz`) |
|
|
13
|
+
| **Annotations** | BED (`.bed`), GFF (`.gff`, `.gff3`), GTF (`.gtf`), GenBank (`.gb`) |
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
### Install with pip (recommended)
|
|
18
|
+
|
|
19
|
+
No Node.js required — the frontend is pre-built and bundled.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pip install BiNgoViewer
|
|
23
|
+
bingo
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This installs the `bingo` command, starts the server, and opens the viewer in your browser. Options:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
bingo --port 9000 # use a custom port
|
|
30
|
+
bingo --no-browser # start without opening the browser
|
|
31
|
+
python -m bingoviewer # alternative way to launch
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Windows (from source)
|
|
35
|
+
|
|
36
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
37
|
+
|
|
38
|
+
Double-click **`launch.bat`**. On first run it will install dependencies automatically, then open the viewer in your browser.
|
|
39
|
+
|
|
40
|
+
### macOS (from source)
|
|
41
|
+
|
|
42
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
43
|
+
|
|
44
|
+
Double-click **`BiNgo Genome Viewer.command`** (or run `./launch.sh` from a terminal). On first run it will create a virtual environment and install dependencies, then open the viewer in your browser.
|
|
45
|
+
|
|
46
|
+
> **Permission denied?** If macOS says the file can't be opened, run this once in Terminal from the project folder:
|
|
47
|
+
> ```bash
|
|
48
|
+
> chmod +x launch.sh "BiNgo Genome Viewer.command"
|
|
49
|
+
> ```
|
|
50
|
+
|
|
51
|
+
### Linux (from source)
|
|
52
|
+
|
|
53
|
+
Requires Python 3.10+ and Node.js 18+.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
chmod +x launch.sh
|
|
57
|
+
./launch.sh
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Docker
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cd app
|
|
64
|
+
docker-compose up --build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Then open [http://localhost:8000](http://localhost:8000).
|
|
68
|
+
|
|
69
|
+
## Usage
|
|
70
|
+
|
|
71
|
+
1. **Load a genome** — Drag and drop a FASTA or GenBank file into the file loader at the top
|
|
72
|
+
2. **Add tracks** — Drag and drop any supported track files (BAM, BigWig, WIG, VCF, BED, GFF, etc.)
|
|
73
|
+
3. **Navigate** — Click and drag on tracks to pan; scroll wheel to zoom; use the coordinate bar to jump to a region
|
|
74
|
+
4. **Track settings** — Click the gear icon to adjust height, color, scale, and bar width for tracks
|
|
75
|
+
5. **Reorder tracks** — Drag the grip handle (`≡`) on any track label to reorder
|
|
76
|
+
6. **Export** — Click Export to save the current view as SVG or PNG
|
|
77
|
+
7. **Save session** — Click Save Session to store your current workspace; restore it later or export as a JSON file
|
|
78
|
+
|
|
79
|
+
## Project Structure
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
├── pyproject.toml # pip package definition
|
|
83
|
+
├── bingoviewer/ # Installable Python package
|
|
84
|
+
│ ├── cli.py # `bingo` CLI entry point
|
|
85
|
+
│ ├── server/ # FastAPI backend (bundled)
|
|
86
|
+
│ └── frontend_dist/ # Pre-built React frontend
|
|
87
|
+
├── launch.bat # Windows launcher (from source)
|
|
88
|
+
├── launch.sh # macOS / Linux launcher (from source)
|
|
89
|
+
├── BiNgo Genome Viewer.command # macOS double-click launcher
|
|
90
|
+
└── app/ # Application source code
|
|
91
|
+
├── backend/ # Python (FastAPI) REST API
|
|
92
|
+
├── frontend/ # React (Vite) user interface
|
|
93
|
+
├── Dockerfile # Docker build
|
|
94
|
+
└── docker-compose.yml # Docker Compose config
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Citation
|
|
98
|
+
|
|
99
|
+
If you use this software in your research, please cite:
|
|
100
|
+
|
|
101
|
+
> Ngo, B. (2026). BiNgo Genome Viewer (v1.0.0) [Software].
|
|
102
|
+
|
|
103
|
+
## License
|
|
104
|
+
|
|
105
|
+
All rights reserved. Contact the author for licensing inquiries.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Entry point for `python -m bingoviewer` and the `bingo` CLI command.
|
|
3
|
+
|
|
4
|
+
Starts the FastAPI server, serves the bundled frontend, and opens the browser.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
from bingoviewer.cli import main
|
|
9
|
+
|
|
10
|
+
if __name__ == "__main__":
|
|
11
|
+
sys.exit(main())
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
BiNgo Genome Viewer CLI — launch the viewer from the command line.
|
|
3
|
+
|
|
4
|
+
Usage:
|
|
5
|
+
bingo # start on default port 8000
|
|
6
|
+
bingo --port 9000 # start on a custom port
|
|
7
|
+
bingo --no-browser # start without opening the browser
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import argparse
|
|
11
|
+
import os
|
|
12
|
+
import sys
|
|
13
|
+
import threading
|
|
14
|
+
import time
|
|
15
|
+
import webbrowser
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def main():
|
|
19
|
+
parser = argparse.ArgumentParser(
|
|
20
|
+
prog="bingo",
|
|
21
|
+
description="BiNgo Genome Viewer — a lightweight browser-based genomics viewer",
|
|
22
|
+
)
|
|
23
|
+
parser.add_argument(
|
|
24
|
+
"--port", type=int, default=8000,
|
|
25
|
+
help="Port to run the server on (default: 8000)",
|
|
26
|
+
)
|
|
27
|
+
parser.add_argument(
|
|
28
|
+
"--host", type=str, default="127.0.0.1",
|
|
29
|
+
help="Host to bind to (default: 127.0.0.1)",
|
|
30
|
+
)
|
|
31
|
+
parser.add_argument(
|
|
32
|
+
"--no-browser", action="store_true",
|
|
33
|
+
help="Don't automatically open the browser",
|
|
34
|
+
)
|
|
35
|
+
args = parser.parse_args()
|
|
36
|
+
|
|
37
|
+
# Add the backend source directory to sys.path so bare imports
|
|
38
|
+
# (e.g. `from state import app_state`, `from readers.bam_reader import ...`)
|
|
39
|
+
# resolve correctly.
|
|
40
|
+
backend_dir = os.path.join(os.path.dirname(__file__), "server")
|
|
41
|
+
sys.path.insert(0, backend_dir)
|
|
42
|
+
|
|
43
|
+
# Now import the FastAPI app (triggers backend module loading)
|
|
44
|
+
from bingoviewer.server.main import app # noqa: E402
|
|
45
|
+
|
|
46
|
+
# Open browser after a short delay
|
|
47
|
+
if not args.no_browser:
|
|
48
|
+
url = f"http://{args.host}:{args.port}"
|
|
49
|
+
if args.host in ("0.0.0.0",):
|
|
50
|
+
url = f"http://localhost:{args.port}"
|
|
51
|
+
|
|
52
|
+
def _open():
|
|
53
|
+
time.sleep(1.5)
|
|
54
|
+
webbrowser.open(url)
|
|
55
|
+
|
|
56
|
+
threading.Thread(target=_open, daemon=True).start()
|
|
57
|
+
|
|
58
|
+
# Run the server
|
|
59
|
+
import uvicorn
|
|
60
|
+
print(f"\n BiNgo Genome Viewer running at http://localhost:{args.port}")
|
|
61
|
+
print(" Press Ctrl+C to stop.\n")
|
|
62
|
+
uvicorn.run(app, host=args.host, port=args.port, log_level="warning")
|
|
63
|
+
|
|
64
|
+
return 0
|