ChainMap

Struct ChainMap 

Source
pub struct ChainMap {
    pub map: FxHashMap<u32, Chain>,
}
Expand description

A map of chains

Fields§

§map: FxHashMap<u32, Chain>

Implementations§

Source§

impl ChainMap

Source

pub fn new() -> Self

Create a new ChainMap

§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;

let chains = ChainMap::new();
Source

pub fn get(&self, key: &u32) -> Option<&Chain>

Get a chain from the map

§Arguments
  • key - A chain id
§Returns
  • Option<&Chain>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let chain = chains.get(&123);
println!("{:?}", chain);

>>> Some(Chain { score: 0, refs: ChainHead { size: 0, start: 0, end: 0, strand: 0 },
query: ChainHead { size: 0, start: 0, end: 0, strand: 0 }, alinment: [], id: 123 })
Source

pub fn get_mut(&mut self, key: &u32) -> Option<&mut Chain>

Get a mutable chain from the map

§Arguments
  • key - A chain id
§Returns
  • Option<&mut Chain>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let chain = chains.get_mut(&123);
println!("{:?}", chain);

>>> Some(Chain { score: 0, refs: ChainHead { size: 0, start: 0, end: 0, strand: 0 },
query: ChainHead { size: 0, start: 0, end: 0, strand: 0 }, alinment: [], id: 123 })
Source

pub fn filter<F>(&self, fc: F) -> Self
where F: Fn(&Chain) -> bool,

Generalized filtering function

§Arguments
  • fc - A closure that takes a reference to a Chain and returns a boolean
§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::cmap::chain::Chain;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let filt_chains = chains.filter(|chain| chain.score > 100);
Source

pub fn insert(&mut self, key: u32, value: Chain) -> &mut ChainMap

Insert a chain into a ChainMap

§Arguments
  • key - A chain id
  • value - A Chain
§Returns
  • &mut ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
chains.insert(123, Chain{ score: 0, refs: ChainHead { size: 0, start: 0, end: 0, strand: 0 }, ..., id: 123});
Source

pub fn remove(&mut self, key: &u32) -> &mut ChainMap

Remove a chain from a ChainMap

§Arguments
  • key - A chain id
§Returns
  • &mut ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
chains.remove(&123);
Source

pub fn len(&self) -> usize

Sort the ChainMap by chain ids

§Returns
  • usize
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
println!("Number of chains: {:?}", chains.len());

>>> 100
Source

pub fn iter(&self) -> impl Iterator<Item = (&u32, &Chain)>

Iterate over the ChainMap

§Returns
  • Iterator<Item = (&u32, &Chain)>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
for (key, chain) in chains.iter() {
  println!("{:?} {:?}", key, chain);
  break;
}
Source

pub fn iter_mut(&mut self) -> impl Iterator<Item = (&u32, &mut Chain)>

Iterate over mut ChainMap

§Returns
  • Iterator<Item = (&u32, &mut Chain)>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
for (key, chain) in chains.iter_mut() {
 println!("{:?} {:?}", key, chain);
 break;
}
Source

pub fn keys(&self) -> impl Iterator<Item = &u32>

Iterate over the keys of the ChainMap

§Returns
  • Iterator<Item = &u32>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
for key in chains.keys() {
   println!("{:?}", key);
}
Source

pub fn values(&self) -> impl Iterator<Item = &Chain>

Iterate over the values of the ChainMap

§Returns
  • Iterator<Item = &Chain>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
for chain in chains.values() {
  println!("{:?}", chain);
}
Source

pub fn values_mut(&mut self) -> impl Iterator<Item = &mut Chain>

Iterate over mut values of the ChainMap

§Returns
  • Iterator<Item = &mut Chain>
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
for chain in chains.values_mut() {
    println!("{:?}", chain);
    chain.score = 100;
    println!("{:?}", chain);
    break;
 }
Source

pub fn filter_by_score(&self, score: i64) -> Self

Filter the ChainMap by score

§Arguments
  • score - An i64
§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let score = 1000;
let filt_chains = chains.filter_by_score(score);
Source

pub fn filter_ref_by_size(&self, size: u64) -> Self

Filter the ChainMap by reference size

§Arguments
  • size - A u64
§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let size = 1000;
let filt_chains = chains.filter_query_by_size(size);
Source

pub fn filter_query_by_size(&self, size: u64) -> Self

Filter the ChainMap by query size

§Arguments
  • size - A u64
§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let size = 1000;
let filt_chains = chains.filter_query_by_size(size);
Source

pub fn filter_id(&self, ids: Vec<u32>) -> Self

Filter the ChainMap by chain ids

§Arguments
  • ids - A vector of chain ids
§Returns
  • ChainMap
§Example
use chaintools::cmap::ChainMap;
use chaintools::io::reader::Reader;

let chains = Reader::from_file("file.chain").unwrap();
let ids = vec![123, 456];
let filt_chains = chains.filter(ids).len();
println!("{:?}", filt_chains);

>>> 2

Trait Implementations§

Source§

impl Clone for ChainMap

Source§

fn clone(&self) -> ChainMap

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ChainMap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ChainMap

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ChainMap

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,