|
功能:使用正则表达式替换name以及sequence。
定义:name:描述行;sequence:序列行;seqid:name第一个空格前的ID号;descriptions:name第一个空格后的部分。
-p, --pattern string 正则表达式 | -r, --replacement string 替换 |
1. name前面或者后面添加。在seqid后面添加。
seqkit replace -p ^ -r prefix_ test1.fa >replace.fa |
seqkit replace -p $ -r _suffix test1.fa >replace.fa |
seqkit seq -i test1.fa | seqkit replace -p $ -r _suffix >replace.fa |
2. 剔除descriptions
seqkit replace -p "\s.+" test1.fa >replace.fa |
|
\s是匹配所有空白符,包括换行符 .匹配除换行符 \n 之外的任何单字符 +配前面的子表达式一次或多次 |
3. name字符替换
seqkit replace -p '-' -r '=' test1.fa >replace.fa |
4. sequence字符替换
seqkit replace -p " |-" -s test1.fa >replace.fa |
|
" |-"是空格或者- |
5. sequence中每个碱基后面增加一个空格
seqkit replace -p "(.)" -r '$1 ' -s test1.fa >replace.fa |
|
-p "(.)"匹配除换行符 \n 之外的任何单字符,一次 -r '$1 '正则表达式第一个(),后面加一个空格 |
6. 使用csvtk,sequence转置
seqkit replace -p "(.)" -r "\$1 " -s test2.fa | seqkit seq -s -u | csvtk space2tab | csvtk -t transpose >replace.fa |
seq -s -u 打印sequence,小写变大写 csvtk space2tab空格转变tab csvtk -t transpose转置 |
7. name计数重命名
seqkit replace -p .+ -r "seq_{nr}" test3.fa >replace.fa | seqkit replace -p .+ -r "seq_{nr}" --nr-width 5 test3.fa >replace.fa |
| |
.+ 一次或多次除换行符 \n 之外的任何单字符,即name {nr} 计数,从1开始 | --nr-width 5计数宽度为5字符 |
8. 使用key-value file<键值文件alias.txt>替换
alias.txt和alias_seqid.txt是替换前后对应内容,中间tab分割。 |
8.1 替换descriptions
seqkit replace -p ' (.+)$' -r ' {kv}' -k alias.txt test4.fa >replace.fa <图1> seqkit replace -p ' (.+)$' -r ' {kv}' -k alias.txt --keep-key test4.fa >replace.fa <图2> | |
' (.+)$' 空格加一次或多次除换行符 \n 之外的任何单字符,即descriptions。 '{kv}'使用key-value file文件替换 --keep-key如果key-value file中不存在替换的键值,继续使用原值;如果没有此参数,则替换为空。 |
8.2 替换seqid
seqkit replace -p '^(\S+)(.+?)$' -r '{kv}$2' -k alias_seqid.txt test4.fa >replace.fa |
|
# ^(\S+) # ID # (.+)$ # description(前面有一个空格) #^(.+) # name \S 匹配任何非空白字符,不包括换行。 $2 正则表达式第2个() {kv} 使用key-value file文件替换 |
9. 将fasta格式转换为genbank格式
seqkit replace -s -p '(\w{10})' -r '$1 ' -w 66 test5.fa \ | perl -ne 'if (/^>/) {print; $n=1} else {s/ \r?\n$/\n/; printf "%9d %s", $n, $_; $n+=60;}' >replace.fa |
|
genbank格式一行60个碱基,每10个碱基用一个空格分割 |
【参考】
Usage - SeqKit - Ultrafast FASTA/Q kit (shenwei.me)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-30 07:49
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社