Skip to content

Function: dna_walk

def dna_walk(sequences, pad_type= "after", pad_length= 0, n_jobs= 1) -> list[np.ndarray] | np.ndarray:

Description

Each sequence is represented on a 2D grid, with its representation starting at coordinates (0,0). For each nucleotide in the sequence coordinates are updated to form a path as follows:

  • A: x_{n+1}= x_{n}-1;   y_{n+1}= y_{n}
  • C: x_{n+1}= x_{n};   y_{n+1}= y_{n}-1
  • G: x_{n+1}= x_{n};   y_{n+1}= y_{n}+1
  • T/U: x_{n+1}= x+1;   y_{n+1}= y_{n}
  • Other characters or gaps: x_{n+1}= x_{n};   y_{n+1}= y_{n}

See the About section for more details.

Parameters

Parameter Type Default Description
sequences any iterable containing str Required Sequences to encode, can also be dna-parser SequenceReader, pysam FastxFile or Biopython SeqIO.read objects.
pad_type str after Whether to trim/pad at the front or at the back of the sequences. Options are before and after. This paramater is ignored if there is no padding
pad_length int 0 Length for padding/trimming. -2 to pad to the longest sequence, -1 to trim to the shortest sequence, any positive integer for a fixed length.
n_jobs int 1 number of threads used to encode the sequences in parallel. 0 to use all CPUs available.

Returns

Type Description
list[numpy.ndarray] or numpy.ndarray The encoded sequences. Returns a list of 2D numpy arrays if there is no trimming/padding, otherwise returns a 3D numpy array with the outer dimension representing sequences.

Examples

import dna_parser as dps

sequences= ["agt","acc"]
encoding= dps.dna_walk(sequences)
print(encoding)

# Output:
#[array([[-1,  0],
#        [-1,  1],
#        [ 0,  1]], dtype=int32), 
# array([[-1,  0],
#        [-1, -1],
#        [-1, -2]], dtype=int32)]


reader= dps.SequenceReader("path/to/file") # file with sequences agt, acc, attagc
encoding= dps.dna_walk(reader, pad_type="after", pad_length=-2) #pad after the sequences to the longest one
print(encoding)
print(encoding.shape)

# Output:
#[[[-1  0]
#  [-1  1]
#  [ 0  1]
#  [ 0  1]
#  [ 0  1]
#  [ 0  1]]
#
# [[-1  0]
#  [-1 -1]
#  [-1 -2]
#  [-1 -2]
#  [-1 -2]
#  [-1 -2]]
#
# [[-1  0]
#  [ 0  0]
#  [ 1  0]
#  [ 0  0]
#  [ 0  1]
#  [ 0  0]]]
#(3, 6, 2)