Есть ли функция R, которая может найти (например, счетчик) и указать позицию строки? - PullRequest
0 голосов
/ 06 августа 2020

Я ищу код в Rstudio, который будет искать последовательности сигналов рекомбинации (RSS) в последовательности ДНК и давать мне позицию. Я использовал функцию подсчета, однако она не дает мне позиции, и я не могу вводить в нее несколько RSS одновременно, что делает ее очень утомительной. Например:

cd247<-read.fasta("sequence.fasta")
#store DNA sequence for cd247 into cd247seq
cd247seq<-cd247[[1]]
cd247seq[1:50]
#change cd247seq from vector of characters to string
c2s(cd247seq)
#create table of all the 7 character sequences in cd247 gene
count(cd247seq,7)
cd247table<-count(cd247seq,7)
cd247table[["tactgtg"]]

выводит

cd247table[["tactgtg"]]

[1] 1

но не позиция в cd247seq

Я разместил свои файлы на github https://github.com/opheelorraine/Map-RSS

1 Ответ

0 голосов
/ 06 августа 2020

Обратите внимание на пакет Biostrings, в частности на функцию matchPDict. См. https://kasperdanielhansen.github.io/genbioconductor/html/Biostrings_Matching.html

Пример:

suppressPackageStartupMessages(library(Biostrings))
dnaseq <- DNAString("ATAGCCATGATGATTTAACCAGGTCATTT") # the sequence
motif <- DNAStringSet(c("ATG", "TGA")) # the motifs
pos <- matchPDict(motif, dnaseq)
pos
#> MIndex object of length 2
#> [[1]]
#> IRanges object with 2 ranges and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]         7         9         3
#>   [2]        10        12         3
#> 
#> [[2]]
#> IRanges object with 2 ranges and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]         8        10         3
#>   [2]        11        13         3
start(pos) # ATG starts at pos 7 and 10; TGA at 8 and 11 
#> IntegerList of length 2
#> [[1]] 7 10
#> [[2]] 8 11
countPDict(motif, dnaseq)
#> [1] 2 2

# search reverse complement:
matchPDict(reverseComplement(motif), dnaseq)
#> MIndex object of length 2
#> [[1]]
#> IRanges object with 2 ranges and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]         6         8         3
#>   [2]        25        27         3
#> 
#> [[2]]
#> IRanges object with 1 range and 0 metadata columns:
#>           start       end     width
#>       <integer> <integer> <integer>
#>   [1]        24        26         3

Создано 05.08.2020 с помощью пакета (v0. 3,0)

...