use std::path::PathBuf;
const DEFAULT_DIR_NAME: &str = "gecco_data";
pub fn resolve(explicit: Option<&PathBuf>) -> PathBuf {
if let Some(dir) = explicit {
return dir.clone();
}
if let Ok(dir) = std::env::var("GECCO_DATA_DIR") {
return PathBuf::from(dir);
}
if let Ok(exe) = std::env::current_exe() {
if let Some(parent) = exe.parent() {
let candidate = parent.join(DEFAULT_DIR_NAME);
if candidate.is_dir() {
return candidate;
}
}
}
let candidate = PathBuf::from(DEFAULT_DIR_NAME);
if candidate.is_dir() {
return candidate;
}
PathBuf::from(DEFAULT_DIR_NAME)
}
pub fn hmm_path(data_dir: &std::path::Path) -> PathBuf {
data_dir.join("Pfam.h3m")
}
pub fn interpro_path(data_dir: &std::path::Path) -> PathBuf {
data_dir.join("interpro.json")
}
pub fn crf_model_path(data_dir: &std::path::Path) -> PathBuf {
data_dir.join("model.crfsuite")
}
pub fn type_classifier_path(data_dir: &std::path::Path) -> PathBuf {
data_dir.join("type_classifier.rf.json")
}