Skip to content

Commit

Permalink
resturctured project
Browse files Browse the repository at this point in the history
  • Loading branch information
sriram98v committed Oct 12, 2023
1 parent 5d794b4 commit 4521494
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 37 deletions.
1 change: 0 additions & 1 deletion src/bin/bin.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
extern crate clap;
use std::collections::HashMap;

use clap::{arg, Command};
use bio::io::fasta;
Expand Down
21 changes: 3 additions & 18 deletions src/suffix_node.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,11 @@
pub mod node;

use std::collections::HashMap;
use std::fmt::{Display, Debug};
use std::hash::Hash;
use std::option::Option;
use serde::{Serialize, Deserialize};

pub trait SuffixNode<T> {
fn set_parent(&mut self, parent: usize);
fn get_parent(&self)->Option<&usize>;
fn get_child(&self, child:&T)->Option<&usize>;
fn get_child_mut(&mut self, child:&T)->Option<&mut usize>;
fn set_child(&mut self, edge:T, child:usize);
fn set_edge_length(&mut self, edge_length:usize);
fn get_end(&self)->usize;
fn get_edge_length(&self)-> usize;
fn get_string_id(&self)->Option<&usize>;
fn get_start(&self)->&usize;
fn set_string_id(&mut self, string_id:usize);
fn set_start(&mut self, new_start:usize);
fn has_children(&self)->bool;
fn get_children(&self)->&HashMap<T, usize>;
fn is_leaf(&self)->bool;
}
use crate::suffix_node::node::*;


#[derive(Debug, PartialEq, Serialize, Deserialize)]
Expand Down
22 changes: 22 additions & 0 deletions src/suffix_node/node.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use std::collections::HashMap;

pub type NodeID = usize;
pub type StringID = usize;

pub trait SuffixNode<T> {
fn set_parent(&mut self, parent: NodeID);
fn get_parent(&self)->Option<&NodeID>;
fn get_child(&self, child:&T)->Option<&NodeID>;
fn get_child_mut(&mut self, child:&T)->Option<&mut NodeID>;
fn set_child(&mut self, edge:T, child:NodeID);
fn set_edge_length(&mut self, edge_length:usize);
fn get_end(&self)->usize;
fn get_edge_length(&self)-> usize;
fn get_string_id(&self)->Option<&StringID>;
fn set_string_id(&mut self, string_id:StringID);
fn get_start(&self)->&usize;
fn set_start(&mut self, new_start:usize);
fn has_children(&self)->bool;
fn get_children(&self)->&HashMap<T, NodeID>;
fn is_leaf(&self)->bool;
}
23 changes: 5 additions & 18 deletions src/suffix_tree.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use crate::suffix_node::{Node, SuffixNode};
pub mod tree;

use crate::suffix_tree::tree::*;
use crate::suffix_node::node::*;
use crate::suffix_node::*;
use crate::tree_item::TreeItem;
use crate::utils::Enode;
use std::collections::{HashMap, HashSet, LinkedList};
Expand All @@ -8,23 +12,6 @@ use std::cmp;
use std::option::Option;
use serde::{Serialize, Deserialize};
use itertools::Itertools;

type NodeID = usize;
type StringID = usize;

pub trait SuffixTree<T>{
fn root(&self)->&NodeID;
fn is_leaf(&self, node_id: &NodeID)->bool;
fn get_node_child(&self, node_id: &NodeID, edge_label: &T)->Option<&NodeID>;
fn get_node_parent(&self, node_id: &NodeID)->Option<&NodeID>;
fn get_node_depth(&self, node_id: &NodeID)->usize;
fn get_suffix_link(&self, node_id: &NodeID) -> &usize;
fn get_node_label(&self, node_id: &NodeID)->&[T];
fn get_node_path_label(&self, node_id: &NodeID)->&[T];
fn get_node_path(&self, node_id: &NodeID)->LinkedList<NodeID>;
/// Checks if the input slice is a suffix of any of the strings present in the tree.
fn is_suffix(&self, s:&[T])->bool;
}


/// A Generalized Truncated Suffix Tree implemented with a variation of Ukkonen's Algorithm.
Expand Down
16 changes: 16 additions & 0 deletions src/suffix_tree/tree.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use crate::suffix_node::node::*;
use std::collections::LinkedList;

pub trait SuffixTree<T>{
fn root(&self)->&NodeID;
fn is_leaf(&self, node_id: &NodeID)->bool;
fn get_node_child(&self, node_id: &NodeID, edge_label: &T)->Option<&NodeID>;
fn get_node_parent(&self, node_id: &NodeID)->Option<&NodeID>;
fn get_node_depth(&self, node_id: &NodeID)->usize;
fn get_suffix_link(&self, node_id: &NodeID) -> &usize;
fn get_node_label(&self, node_id: &NodeID)->&[T];
fn get_node_path_label(&self, node_id: &NodeID)->&[T];
fn get_node_path(&self, node_id: &NodeID)->LinkedList<NodeID>;
/// Checks if the input slice is a suffix of any of the strings present in the tree.
fn is_suffix(&self, s:&[T])->bool;
}

0 comments on commit 4521494

Please sign in to comment.