kira-spliceqc 0.2.0

Deterministic, explainable splicing QC for single-cell expression data.
Documentation
use std::path::{Path, PathBuf};

pub fn default_catalog_path() -> PathBuf {
    let relative = Path::new("resources")
        .join("genesets")
        .join("splicing_genesets.tsv");
    if relative.is_file() {
        return relative;
    }

    let manifest = Path::new(env!("CARGO_MANIFEST_DIR"))
        .join("resources")
        .join("genesets")
        .join("splicing_genesets.tsv");
    if manifest.is_file() {
        return manifest;
    }

    if let Ok(exe) = std::env::current_exe()
        && let Some(dir) = exe.parent()
    {
        let sibling = dir
            .join("resources")
            .join("genesets")
            .join("splicing_genesets.tsv");
        if sibling.is_file() {
            return sibling;
        }
        let parent = dir
            .join("..")
            .join("resources")
            .join("genesets")
            .join("splicing_genesets.tsv");
        if parent.is_file() {
            return parent;
        }
    }

    relative
}