Skip to content

Latest commit

 

History

History
123 lines (83 loc) · 5.16 KB

File metadata and controls

123 lines (83 loc) · 5.16 KB

PS Analyzer Logo

PS Analyzer

PS Analyzer is a modern Sanger sequence analysis tool designed for clinical and research use. It provides a comprehensive suite of features for variant detection, visualization, and report generation, built with performance and security in mind using Angular and Tauri.

Features

  • High-Performance Visualization: Smooth, zoomed, and interactive Sanger trace dashboards.
  • Automated Variant Detection: Integration with bio-engine for precise SNV and Indel identification.
  • VEP Integration: Automatic annotation of variants using the Ensembl Variant Effect Predictor.
  • Clinical Reporting: Professional PDF and HTML report generation with customizable variant and read selection.
  • Self-Contained: tracy and bgzip are bundled with the application. FASTA indexing is handled internally by the bio-engine via pysam, eliminating the need for an external samtools binary.
  • Secure by Design: Local-first architecture powered by Tauri, ensuring sensitive genetic data stays on your machine.
  • Modern Tech Stack: Built with Angular 20, utilizing Signals and modern control flow for a reactive and efficient UI.

Repository Setup

This repository contains the frontend and desktop application logic. It expects a sibling directory bio-engine containing the backend analysis services.

Prerequisites

  • Node.js: v20+
  • Rust: For Tauri builds
  • Conda/Python: For the bio-engine backend (if building from source)
  • Angular CLI: npm install -g @angular/cli

Installation

  • Download the PS.Analyzer_X.Y.Z_amd64.deb package.
  • Install using: sudo apt install ./PS.Analyzer_X.Y.Z_amd64.deb

This version includes all necessary bioinformatics tools (bgzip, tracy) bundled as sidecars. FASTA indexing is handled internally by the bundled bio-engine. No additional system installation is required.

Ensuring bio-engine is present

The application expects a sibling directory bio-engine containing the backend analysis services if you are running from source. For packaged releases, the bio-engine is bundled automatically.

Running the Application

To run the application in development mode:

./debug/build_run.sh

This script will:

  1. Activate the necessary Conda environment.
  2. Build the bio-engine sidecar.
  3. Start the Tauri development server and Angular frontend.

Linting

To run the linter and check for code quality issues:

npm run lint

To automatically fix common linting issues:

npm run lint -- --fix

Docker Deployment (Intranet/Server)

For deployments on local servers or intranets where multiple users need to access the application via a web browser, we provide a server-optimized configuration.

Deployment via Docker Compose

A docker-compose.yml is provided in the project root to orchestrate both the frontend and the bio-engine backend.

  1. Clone the repositories (ensure ms-analyzer and bio-engine are siblings).
  2. Run with Docker Compose:
    docker-compose up --build -d
  3. Access the application: The app will be available at http://<server-ip>:8080.

Purpose of Dockerfiles

  • Dockerfile.server: Builds the Angular application and serves it using Nginx. It includes a reverse proxy configuration to route /api requests to the backend.
  • Dockerfile: (Standard) Used for development environments and Tauri build pipelines.

Configuration

The application communicates with a local FastAPI server (part of the bio-engine). The API URL is configurable in src/app/core/services/analysis.service.ts or via environment variables in future releases.

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for feature requests and bug reports.

Acknowledgments

This project relies on the following open-source tools and projects:

  • Tracy - Used for trace decomposition and assembly.
  • Ensembl VEP - Used for variant effect prediction.
  • Bio-Engine - The Python backend for sequence analysis.

Built With

Here are the major technologies and packages used to build this project:

  • Angular
  • Tauri
  • Rust
  • Python

License

This project is licensed under the MIT License - see the LICENSE file for details.