2

I'm struggling with the translate function:

I have a matrix of sequences and I can't manage to figure out why the translate function would not work.

Here is my script :

 head(myseq)
     [,1]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
[1,] "CAATTAAGATGCAGTTACTTCGCTGTTTTTCAATATTTTCTGTTATTGCTAGCGTTTTAGCAGCTGGAGAAGTCCAGTTGGTTGAATCCGGTGGCGGGTTGGTTCAACCTGGCCGTTCCCTGCGCCTTTCTTGTGCCGCTTCAGGCTTTACCTTCGACGATTATGCCATGCATTGGGTACGCCAAGCTCCGGGCAAAGGTCTGGAATGGGTGAGTGCCATTACCTGGAATAGCGGCCACATTGACTATGCGGATAGCGTCGAAGGGCGCTTTACCATTAGCCGTGATAACGCGAAGAACAGCCTCTATCTGGACATGAACAGCTTACGTGCGGAAGATACCGCAGTGTACTATTGCGCTAAGGTCAGCTATCTGAGTACTGCCAGTTCCCTGGATTATTGGGGTCAAGGAACCCTGGTGACCGTGTCAAGCGGCGGAGGCGGTTCTGGTGGTGGAGGCAGTBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
[2,] "CAATTAAGATGCAGTTACTTCGCTGTTTTTCAATATTTTCTGTTATTGCTAGCGTTTTAGCAGCTGGAGAAGTCCAGTTGGTTGAATCCGGTGGCGGGTTGGTTCAACCTGGCCGTTCCCTGCGCCTTTCTTGTGCCGCTTCAGGCTTTACCTTCGACGATTATGCCATGCATTGGGTACGCCAAGCTCCGGGCAAAGGTCTGGAATGGGTGTCTGCGGCTAGTTGGAGTGGTGGCCACATCGATTATGCCGATAGCGTCGAAGGGCGCTTTACCATTAGCCGTGATAACGCGAAGAACAGCCTCTATCTGGACATGAACAGCTTACGTGCGGAAGATACCGCAGTGTACTATTGCGCTAAGGTCAGCTATCTGAGTACTGCCAGTTCCCTGGATTATTGGGGTCAAGGAACCCTGGTGACCGTGTCAAGCGGCGGAGGCGGTTCTGGTGGTGGAGGCAGTBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

translate(myseq[1,],frame=2,sens=F)

Error in s2n(seq, levels = s2c("tcag")) :sequence is not a vector of chars

I checked my parameters :

class(myseq[1,])

[1] "character"

is.vector(myseq[1,])

[1] TRUE

So I assume that I missed something but I can't figure what.

pogibas
  • 27,303
  • 19
  • 84
  • 117

1 Answers1

2

Solution:

If you are using seqinr::translate then you can try wrapping your DNA string with s2c.

myString <- "AAACCCGGGTTT"
library(seqinr)

# Without s2c
translate(myString)
Error in s2n(seq, levels = s2c("tcag")) : 
  sequence is not a vector of chars

# With s2c
translate(s2c(myString))
[1] "K" "P" "G" "F"

Explanation:

Vector of characters that translate() requires is "A" "A" "A" "C" "C" "C" "G" "G" "G" "T" "T" "T" and not "AAACCCGGGTTT".
You can generate vector like this using strsplit():

strsplit(myString, "")
[[1]]
 [1] "A" "A" "A" "C" "C" "C" "G" "G" "G" "T" "T" "T"

all(strsplit(myString, "")[[1]] == s2c(myString))
[1] TRUE
pogibas
  • 27,303
  • 19
  • 84
  • 117