huget 0.1.0

gProfiler for human genomics
use std::error::Error;
use std::fs::File;
use std::io::Write;
use std::io::{BufRead, BufReader};

/*
Gaurav Sablok
codeprog@icloud.com
*/

#[tokio::main]
pub async fn hgnc_fetch(pathname: &str, searchterm: &str) -> Result<String, Box<dyn Error>> {
    let file = File::open(pathname).expect("file not found");
    let fileread = BufReader::new(file);

    let mut hgncvec: Vec<(String, String, String)> = Vec::new();

    for i in fileread.lines() {
        let line = i.expect("line not present");
        let linevec = line.split("\t").collect::<Vec<_>>();
        hgncvec.push((
            linevec[0].to_string(),
            linevec[1].to_string(),
            linevec[2].to_string(),
        ));
    }

    let mut searchedvec: Vec<(String, String, String)> = Vec::new();

    for i in hgncvec.iter() {
        if i.0 == searchterm {
            searchedvec.push((i.0.clone(), i.1.clone(), i.2.clone()))
        }
    }

    let mut filewrite = File::create("hgnc.txt").expect("file not found");
    writeln!(filewrite, "The searched hgnc are:").expect("line not present");
    for i in searchedvec.iter() {
        writeln!(filewrite, "{}\t{}\t{}\n", i.0, i.1, i.2).expect("file not found");
    }
    Ok("The hgnc path has been written".to_string())
}