use std::{
fs,
path::{Path, PathBuf},
str::FromStr,
};
mod file_io;
mod gui;
mod primer;
mod sequence;
mod feature_db_load;
use sequence::{FeatureType, Seq};
use crate::file_io::genbank;
const SOURCE_DIR: &str = "data";
fn collect_files_in_directory(dir: &Path) -> Vec<PathBuf> {
let mut files = Vec::new();
if dir.is_dir() {
for entry in fs::read_dir(dir).unwrap() {
let path = entry.unwrap().path();
if path.is_file() {
files.push(path);
}
}
}
files
}
fn consolidate(feature_map: &[FeatureMapItem]) -> Vec<FeatureMapItem> {
let mut result = Vec::new();
result
}
fn main() {
let files_genbank = collect_files_in_directory(&PathBuf::from_str(SOURCE_DIR).unwrap());
let files_snapgene = [];
let mut feature_maps = Vec::new();
for file in files_genbank {
let path = PathBuf::from_str(file).unwrap();
if let Ok(data) = genbank::import_genbank(&path) {
for feature in &data.features {
feature_maps.push({
FeatureMapItem {
name: feature.name.clone(),
feature_type: feature.feature_type,
seq: data.seq[feature.range.0 - 1..feature.range.1],
}
})
}
}
}
}