R 从背景(DNA序列)中排除特定字符串(DNA字符串)和洗牌(即从正DNA序列生成负数集)
我有一个包含DNA字符串的文件。我想从正数据生成负数据集。一种方法是从我的数据中排除一些特定的序列,然后洗牌数据。R 从背景(DNA序列)中排除特定字符串(DNA字符串)和洗牌(即从正DNA序列生成负数集),r,string,replace,dna-sequence,R,String,Replace,Dna Sequence,我有一个包含DNA字符串的文件。我想从正数据生成负数据集。一种方法是从我的数据中排除一些特定的序列,然后洗牌数据。 假设我的数据集是一个列表: 1) DNAlst: ACTATACGCTAATATCGATCTACGTACGATCG CAGCAGCAGCGAGACTATCCTACCGCA ATATCGATCGCAAAAATCG 我想排除这些序列: ATAT,CGCA 因此,结果将是: ACTATACGCTACGATCTACGTACGATCG CAGCAGCAGCGAGACTATCCTAC CG
假设我的数据集是一个列表:
1)
DNAlst:
ACTATACGCTAATATCGATCTACGTACGATCG
CAGCAGCAGCGAGACTATCCTACCGCA
ATATCGATCGCAAAAATCG
我想排除这些序列:
ATAT,CGCA
因此,结果将是:
ACTATACGCTACGATCTACGTACGATCG
CAGCAGCAGCGAGACTATCCTAC
CGATAAAAATCG
2)
然后我想按特定的长度(例如5)洗牌我的序列。这意味着将DNA串按长度为5的部分(5-mer)洗牌。例如:
ATATACGCGAAAAATCTC=>5次洗牌后的结果==>AAAAA CTCCGCAATATA
如果您能告诉我如何在R中执行此操作,我将不胜感激。使用
stringi
软件包:
dna <- c("ACTATACGCTAATATCGATCTACGTACGATCG","CAGCAGCAGCGAGACTATCCTACCGCA","ATATCGATCGCAAAAATCG")
# stri_replace function replaces strings ATAT and CGCA for empty string
stri_replace_all_regex(dna, "ATAT|CGCA","")
长度为5的seq
生成的索引中的stri_sub
字符串
y <- stri_sub(dna[1], seq(from=1,to=stri_length(dna[1]),by=5), length = 5)
y
## [1] "ACTAT" "ACGCT" "AATAT" "CGATC" "TACGT" "ACGAT" "CG"
一个简单的
gsub
可以完成第一部分,像gsub(“ATAT | CGCA”,“cagcagctctctacgca”)
虽然我不确定您的数据结构是什么dput(DNAlst)
可能有用
y <- stri_sub(dna[1], seq(from=1,to=stri_length(dna[1]),by=5), length = 5)
y
## [1] "ACTAT" "ACGCT" "AATAT" "CGATC" "TACGT" "ACGAT" "CG"
stri_flatten(y[sample(length(y))])
## [1] "TACGTACGATCGATCAATATACGCTACTATCG"