linux - 在 dna 字符串中查找唯一序列
问题描述
我有一个包含一堆序列的文件。字符串的前缀为 AAGCTT,后缀为 GCGGCCGC。
这两种模式之间存在独特的序列。我想找到这些序列并计算它们的出现。
下面的例子
AAGCTT CTGCCCACACACCGAAACATGAATCGATCACATACTAGAATCAGGCAGTCAGAGATATCAAAGATGATGAGTTCG GCGGCCGC
字符串 CTGCCCACACACCGAAACATGAATCGATCACATACTAGAATCAGGCAGTCAGAGATATCAAAGATGATGAGTTCG 存在 1000 次。
解决方案
假设您有一些文件dna.txt
,您可以简单地:
- 将您的原始连续 DNA 字符串分成多行,使用您
PREFIX
作为行分隔符,然后简单地删除所有后缀和它们后面的所有不相关 DNA - 然后用于
sort -u
遍历新文件中的所有行,不重复(所有唯一模式)。 - 然后只需使用
grep -o
andwc -l
来计算出现次数!
PREFIX='AAGCTT'
SUFFIX='GCGGCCGC'
find_traits() {
# Step 1
sed "s/${PREFIX}/\n/g" dna.txt > /tmp/dna_lines.txt
sed -i "s/${SUFFIX}.*//" /tmp/dna_lines.txt
# Step 2
for pattern in $(sort -u /tmp/dna_lines.txt)
do
# Step 3
printf "
PATTERN [$(grep -o $pattern dna.txt | wc -l)] : |${PREFIX}|${pattern}|${SUFFIX}|
"
done
}
推荐阅读
- angular - 为垫子日历添加边框
- bash - 从各种 .tgz 文件中提取相同的模式文件
- google-apps-script - 如何复制已激活脚本的文件?
- java - 在java中添加对谷歌云语音的boost适配
- azure-language-understanding - 关于语言理解智能服务(LUIS)的2个问题
- cockpit - 通过 Apache 反向代理代理驾驶舱
- vue.js - 根据路由器 props 展开 Vuetify list-group
- c# - API 返回空白数组 (ASP.NET CORE)
- nginx - 可以在 Nginx conf 文件中清楚地写 IP 地址吗?
- c++ - 如何对仅删除连续重复项的字符串进行重复数据删除