1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
//! FASTA record and definition.
pub mod definition;
pub mod sequence;
pub use self::{definition::Definition, sequence::Sequence};
/// A FASTA record.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Record {
definition: Definition,
sequence: Sequence,
}
impl Record {
/// Creates a FASTA record from a definition and sequence.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
/// ```
pub fn new(definition: Definition, sequence: Sequence) -> Self {
Self {
definition,
sequence,
}
}
/// Returns the record definition.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition.clone(), sequence);
///
/// assert_eq!(record.definition(), &definition);
/// ```
pub fn definition(&self) -> &Definition {
&self.definition
}
/// Returns the reference sequence name.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
///
/// assert_eq!(record.reference_sequence_name(), "sq0");
/// ```
#[deprecated(since = "0.2.0", note = "Use `name` instead.")]
pub fn reference_sequence_name(&self) -> &str {
self.definition.name()
}
/// Returns the record name.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
///
/// assert_eq!(record.name(), "sq0");
/// ```
pub fn name(&self) -> &str {
self.definition.name()
}
/// Returns the description.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", Some(String::from("LN:4")));
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
///
/// assert_eq!(record.description(), Some("LN:4"));
/// ```
pub fn description(&self) -> Option<&str> {
self.definition.description()
}
/// Returns the sequence.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence.clone());
///
/// assert_eq!(record.sequence(), &sequence);
/// ```
pub fn sequence(&self) -> &Sequence {
&self.sequence
}
}