Source code for nucleotides_to_matrices.encodings

"""Path, data, and lookup dictionaries for IUPAC code vector encodings"""

import pandas as pd
from os.path import dirname, join, normpath

_encodings_filepath = normpath(join(
    dirname(__file__),
    'encodings.txt'
))

_encodings_df = pd.read_csv(_encodings_filepath, sep='\t')


[docs]def encodings_df(): """Data for encodings """ return _encodings_df
_nucleotide_to_vector = ( _encodings_df .set_index('Code') [list( 'ACGT' )] .apply( tuple, axis=1 ) .to_dict() )
[docs]def nucleotide_to_vector(): """Nucleotide code to vector encoding lookup """ return _nucleotide_to_vector
_dna_codes = set( _encodings_df[ _encodings_df['DNA'] ] .drop_duplicates( list('ACGT') ) ['Code'] )
[docs]def dna_codes(): """Set of codes for DNA """ return _dna_codes
_rna_codes = set( _encodings_df[ _encodings_df['RNA'] ] .drop_duplicates( list('ACGT') ) ['Code'] )
[docs]def rna_codes(): """Set of codes for RNA """ return _dna_codes
_strict_codes = set( _encodings_df[ (~_encodings_df['Degenerate']) & (~_encodings_df['Special']) ] ['Code'] )
[docs]def strict_codes(): """Set of strict codes """ return _strict_codes
_vector_to_dna = { vector: nucleotide for nucleotide, vector in _nucleotide_to_vector.items() if nucleotide in _dna_codes }
[docs]def vector_to_dna(): """Vector encoding to DNA code lookup """ return _vector_to_dna
_vector_to_rna = { vector: nucleotide for nucleotide, vector in _nucleotide_to_vector.items() if nucleotide in _rna_codes }
[docs]def vector_to_rna(): """Vector encoding to RNA code lookup """ return _vector_to_rna