Skip to content

NBISweden/kvick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kvick

macOS Rust License

A quick, minimal, multiple sequence alignment editor

Kvick reads, writes, and edits multiple sequence alignments. You can currently open, edit and save FASTA, PHYLIP, NEXUS, CLUSTAL, MSF, and MASE.

The app is really small and lightweight, when I started building it the idea was to create a small and simple multiple alignment editor to quickly check and do minimal edits, plus the function to block select/copy+paste which I missed in the previous program I used to do this.

You can just drag & drop a file into the main window to open it. :)

interface

Features

File formats

Format Extensions
FASTA .fa .fasta .fna .faa
PHYLIP .phy .phylip (interleaved or sequential for reading)
NEXUS .nex .nexus .nxs
CLUSTAL .aln .clw .clustal
MSF .msf
MASE .mase

Format is auto-detected from extension first, file content second.

When saving, just add the extension you want and the program will save in that format. Careful if you need a bunch of additional blocks on Nexus files, this was designed for alignment only, not a lot of the extra stuff you can add to .nex files.

Editing

  • In-place editing — click on the sequence and just edit it. Insert and/or delete. You can include gaps by using the space bar.
  • Block selection — click and drag to select a block of cells. You can use your keyboard shortcut to copy or the drop-down menu. Paste in any text editor and it will paste formatted as FASTA.

You can undo any action.

Additional features

  • Rename a sequence — double-click the name, or press F2 on a selected row. A modal dialog with a clearly visible text field and a yellow row highlight prevents accidental renames.
  • Reorder rows — click and drag a sequence name in the left column to move it to a new position. A blue insertion line shows the drop target.
  • Consensus row — bottom row marked with * in columns where every sequence has the same residue (gaps and ambiguous sites count as non-conserved).
  • Find/⌘F opens a find dialog. Type a residue pattern and Enter to jump to the next match; the matching block is selected and centered in view.

Installing the released app (macOS)

  1. Download the latest kvick.zip from the Releases page.

  2. Unzip it. Drag kvick.app into your Applications folder.

  3. The first time you open it, macOS Gatekeeper will say:

    "kvick" cannot be opened because it is from an unidentified developer.

    This is normal for apps not distributed through the Mac App Store. To bypass it:

    • Right-click (or Ctrl-click) kvick.app in Finder → Open
    • Click Open in the confirmation dialog.

    After this once, kvick will launch normally on every subsequent double-click.

  4. If macOS instead says kvick is "damaged and can't be opened", the quarantine flag was set when the file was downloaded. Clear it once:

    xattr -dr com.apple.quarantine /Applications/kvick.app

Installing the released app (Windows)

  1. Download the latest kvick-*-windows-x64.zip from the Releases page.

  2. Unzip it. Move kvick.exe somewhere convenient (e.g. C:\Program Files\kvick\).

  3. On first launch, Windows SmartScreen may show:

    Windows protected your PC

    Click More infoRun anyway. Windows will remember the approval, and subsequent launches will be silent.


Building from source

Requirements

  • Rust 1.76 or newer — install from rustup.rs.
  • macOS 12 or newer for the precompiled bundle. Building on Linux or Windows should work with just cargo run, but I haven't tested yet. If you do, please let me know!

Run from source

git clone https://github.com/NBISweden/kvick.git
cd kvick
cargo run --release

The first build takes a couple of minutes. After that, cargo run incrementally rebuilds in seconds.

Build a macOS .app bundle

I'm including a simple icon I made using Apple's Icon Composer. It's not the prettiest icon, so maybe I'll be inspired to make a nicer one in the future. Who knows. But if you build your own .app bundle at least you'll get a proper icon that scales, etc.

cargo install cargo-bundle
cargo bundle --release

The resulting bundle is at:

target/release/bundle/osx/kvick.app

You can double-click it from Finder or drag it into /Applications.

Build a universal (Apple Silicon + Intel) binary

rustup target add aarch64-apple-darwin x86_64-apple-darwin
cargo build --release --target aarch64-apple-darwin
cargo build --release --target x86_64-apple-darwin

mkdir -p target/release-universal
lipo -create -output target/release-universal/kvick \
    target/aarch64-apple-darwin/release/kvick \
    target/x86_64-apple-darwin/release/kvick

Project layout

kvick/
├── Cargo.toml
├── assets/             # Icon (PNG and .icns), and the interface.gif I used in the `README.md`.
├── test_data/          # Just a small FASTA file you can open/drag & drop to test the app.
└── src/
    ├── main.rs         # Entry point
    ├── model.rs        # Alignment, Sequence, Selection, EditOp
    ├── io.rs           # All format readers and writers
    ├── view.rs         # Colors and small drawing helpers
    └── app.rs          # AlignApp, drawing, eframe::App impl

Technology stack / Acknowledgements

Built with egui, eframe, rfd, and arboard. The Rust code features code generated by Claude, an AI assistant developed by Anthropic.

About

A quick, minimal, multiple sequence alignment editor

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages