- Create README.zh-TW.md with full Traditional Chinese translation - Keep professional terms (NSGC, PED, Phenotype, etc.) in English - Add language switching links at the top of both README files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
305 lines
6.7 KiB
Markdown
305 lines
6.7 KiB
Markdown
# Pedigree Draw
|
|
|
|
**English** | [繁體中文](README.zh-TW.md)
|
|
|
|
A professional pedigree (family tree) drawing tool for genetic counselors and bioinformatics professionals.
|
|
|
|
## Motivation & Background
|
|
|
|
This project is created by an author with Usher syndrome.
|
|
|
|
The motivation behind this work is to support research
|
|
in genetics, genealogy, and bioinformatics, and to explore
|
|
how visualization tools may assist in understanding
|
|
hereditary conditions.
|
|
|
|
The author explicitly supports research related to
|
|
Usher syndrome and other genetic disorders, and hopes
|
|
this project may contribute, even in a small way,
|
|
to the bioinformatics research community.
|
|
|
|
|
|
## Features
|
|
|
|
- Import/Export GATK PED files
|
|
- Interactive web-based editor
|
|
- Support for standard pedigree symbols (NSGC standards)
|
|
- Export to SVG, PNG, or PED format
|
|
- Full pedigree features: affected/unaffected/carrier status, twins, consanguinity, adoption markers, etc.
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
You need **Node.js** (version 18 or higher) installed on your computer.
|
|
|
|
#### Check if Node.js is installed:
|
|
|
|
```bash
|
|
node --version
|
|
npm --version
|
|
```
|
|
|
|
If both commands show version numbers (e.g., `v20.10.0` and `10.2.0`), you're ready to go!
|
|
|
|
#### If Node.js is NOT installed:
|
|
|
|
**Windows:**
|
|
1. Go to https://nodejs.org/
|
|
2. Download the **LTS** version (recommended)
|
|
3. Run the installer, click "Next" through all steps
|
|
4. Restart your terminal/command prompt after installation
|
|
|
|
**macOS:**
|
|
```bash
|
|
# Using Homebrew (recommended)
|
|
brew install node
|
|
|
|
# Or download from https://nodejs.org/
|
|
```
|
|
|
|
**Linux (Ubuntu/Debian):**
|
|
```bash
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
sudo apt-get install -y nodejs
|
|
```
|
|
|
|
---
|
|
|
|
### Step 1: Install Dependencies (First Time Only)
|
|
|
|
Open your terminal and navigate to the project folder:
|
|
|
|
```bash
|
|
cd /path/to/pedigree-draw
|
|
```
|
|
|
|
Install the required packages:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
This will download all necessary dependencies. You only need to do this once (or after updating the code).
|
|
|
|
---
|
|
|
|
### Step 2: Start the Server
|
|
|
|
Run the start script:
|
|
|
|
```bash
|
|
./start.sh
|
|
```
|
|
|
|
**On Windows**, use:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
You should see output like:
|
|
```
|
|
==========================================
|
|
Pedigree Draw Server Started!
|
|
==========================================
|
|
|
|
Local: http://localhost:5173/pedigree-draw/
|
|
Network: http://192.168.x.x:5173/pedigree-draw/
|
|
|
|
To stop the server, run: ./stop.sh
|
|
==========================================
|
|
```
|
|
|
|
---
|
|
|
|
### Step 3: Open in Browser
|
|
|
|
Open your web browser and go to:
|
|
|
|
- **On this computer:** http://localhost:5173/pedigree-draw/
|
|
- **From another device on the same network:** Use the Network URL shown above
|
|
|
|
---
|
|
|
|
### Step 4: Stop the Server
|
|
|
|
When you're done, stop the server:
|
|
|
|
```bash
|
|
./stop.sh
|
|
```
|
|
|
|
**On Windows**, press `Ctrl+C` in the terminal to stop the server.
|
|
|
|
---
|
|
|
|
## How to Use the Application
|
|
|
|
### Creating a New Pedigree
|
|
|
|
1. Click **"New Pedigree"** in the left panel
|
|
2. Enter a Family ID (e.g., "FAM001")
|
|
|
|
### Adding Persons
|
|
|
|
Use the toolbar at the top:
|
|
|
|
| Button | Description |
|
|
|--------|-------------|
|
|
| Square | Add Male |
|
|
| Circle | Add Female |
|
|
| Diamond | Add Unknown Sex |
|
|
|
|
### Selecting a Person
|
|
|
|
- **Click** on a person to select them
|
|
- A blue dashed border will appear around the selected person
|
|
- The right panel will show editable properties
|
|
|
|
### Adding Relationships
|
|
|
|
First **select a person**, then use these toolbar buttons:
|
|
|
|
| Button | Description |
|
|
|--------|-------------|
|
|
| Add Spouse | Creates a spouse next to selected person with connection line |
|
|
| Add Child | Creates a child below the selected person |
|
|
| Add Parents | Creates both parents above the selected person |
|
|
|
|
### Editing Properties
|
|
|
|
When a person is selected, use the right panel to edit:
|
|
|
|
- **Label**: Display name
|
|
- **Sex**: Male / Female / Unknown
|
|
- **Phenotype**: Unaffected / Affected / Carrier / Unknown
|
|
- **Status**: Deceased, Proband, Adopted, Miscarriage, Stillbirth
|
|
|
|
### Canvas Controls
|
|
|
|
| Button | Description |
|
|
|--------|-------------|
|
|
| + | Zoom in |
|
|
| - | Zoom out |
|
|
| Reset | Reset to 100% zoom, centered |
|
|
| Fit | Fit all content to screen |
|
|
|
|
You can also:
|
|
- **Drag** persons to reposition them
|
|
- **Pan** the canvas by dragging the background
|
|
- **Scroll** to zoom in/out
|
|
|
|
### Importing a PED File
|
|
|
|
1. Click **"Import PED"** in the left panel, OR
|
|
2. Drag and drop a `.ped` file onto the drop zone
|
|
|
|
### Exporting
|
|
|
|
| Button | Description |
|
|
|--------|-------------|
|
|
| Export SVG | Vector image (for editing in Illustrator, etc.) |
|
|
| Export PNG | Raster image (for documents, presentations) |
|
|
| Export PED | GATK PED format file |
|
|
|
|
### Keyboard Shortcuts
|
|
|
|
| Shortcut | Action |
|
|
|----------|--------|
|
|
| **Delete** or **Backspace** | Delete selected person or relationship |
|
|
| **Escape** | Clear selection |
|
|
| **Ctrl+Z** | Undo |
|
|
| **Ctrl+Y** or **Ctrl+Shift+Z** | Redo |
|
|
|
|
### Editing Relationships
|
|
|
|
1. Click on the **connection line** between two people to select the relationship
|
|
2. The right panel will show relationship options:
|
|
- **Add Child**: Add a Male/Female/Unknown child to this couple
|
|
- **Partnership Status**: Married, Unmarried, Separated, Divorced
|
|
- **Consanguinity**: Mark as consanguineous (blood relatives)
|
|
- **Children Status**: Infertility or No children by choice
|
|
|
|
### Auto Align
|
|
|
|
If elements get messy after dragging, click the **Auto Align** button in the toolbar to automatically reposition all family members according to their generation and relationships.
|
|
|
|
---
|
|
|
|
## PED File Format
|
|
|
|
The tool supports standard GATK PED format (6 columns, whitespace-separated):
|
|
|
|
```
|
|
FamilyID IndividualID PaternalID MaternalID Sex Phenotype
|
|
FAM001 father 0 0 1 1
|
|
FAM001 mother 0 0 2 1
|
|
FAM001 child1 father mother 1 2
|
|
```
|
|
|
|
- **Sex**: 1 = Male, 2 = Female, 0 = Unknown
|
|
- **Phenotype**: 1 = Unaffected, 2 = Affected, 0 = Unknown
|
|
- **PaternalID/MaternalID**: Use "0" for unknown/founder
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### "Permission denied" when running ./start.sh
|
|
|
|
Make sure the scripts are executable:
|
|
```bash
|
|
chmod +x start.sh stop.sh
|
|
```
|
|
|
|
### Server won't start
|
|
|
|
1. Check if port 5173 is already in use:
|
|
```bash
|
|
lsof -i :5173
|
|
```
|
|
|
|
2. Kill any existing process and try again:
|
|
```bash
|
|
./stop.sh
|
|
./start.sh
|
|
```
|
|
|
|
### Page won't load
|
|
|
|
- Make sure you're using the correct URL with `/pedigree-draw/` at the end
|
|
- Try clearing your browser cache and refreshing
|
|
|
|
### Can't access from another device
|
|
|
|
- Make sure both devices are on the same network
|
|
- Check your firewall settings allow port 5173
|
|
- Use the Network URL (not localhost)
|
|
|
|
---
|
|
|
|
## Development
|
|
|
|
### Build for Production
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Output will be in the `dist/` folder.
|
|
|
|
### Deploy to GitHub Pages
|
|
|
|
```bash
|
|
npm run build
|
|
# Then upload the dist/ folder contents to your GitHub Pages
|
|
```
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
MIT
|