python基因组学

python3 管道流操作

2020-04-12  本文已影响0人  caokai001

参考链接:

  1. 关于io.TextIOWrapper 学习
  2. 如何用 Python 执行单行命令 -生信菜鸟团
  3. python3-cookbook
  4. Biopython-cn

平时对于文本处理,可以选择sed,grep ,复杂一点awk ,再复杂一些哟Python. python 和linux 一样,也可以支持单行命令来操作!格式:

python -c <command>  
## -c cmd : program passed in as string (terminates option list)
## terminates option list 表示 -c 之后的其它选项不起作用,为终极选项

-c 之后,要用双引号将命令包起来,import;结尾,命令用[]括起来,多行命令用多个[]

$ echo "ck" |python -c "import sys;print(sys.stdin)"
<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>


$ echo "ck" |python -c "import sys;print(sys.stdin.read())"
ck
$ cat > test.fa

>chr_1
ATCGTCGaaAATGAANccNNttGTA
AGGTCTNAAccAAttGggG
>chr_2
ATCGAATGATCGANNNGccTA
AGGTCTNAAAAGG
>chr_3
ATCGTCGANNNGTAATggGA
AGGTCTNAAAAGG
>chr_4
ATCGTCaaaGANNAATGANGgggTA

python 单行命令,调用Biopython包

$ cat test.fa |python -c "import sys;from Bio import SeqIO;[print(seq_record.id,seq_record.seq.count('G')) for seq_record in SeqIO.parse(sys.stdin,'fasta')]"
chr_1 8
chr_2 8
chr_3 8
chr_4 4
$ cat test.fa | python -c "import sys,re;[sys.stdout.write(line) for line in sys.stdin if re.search('>', line)]"
>chr_1
>chr_2
>chr_3
>chr_4
$ cat test.fa | python -c "import sys,re;[sys.stdout.write(re.sub('>chr_', '', line)) for line in sys.stdin]"
1
ATCGTCGaaAATGAANccNNttGTA
AGGTCTNAAccAAttGggG
2
ATCGAATGATCGANNNGccTA
AGGTCTNAAAAGG
3
ATCGTCGANNNGTAATggGA
AGGTCTNAAAAGG
4
ATCGTCaaaGANNAATGANGgggTA
上一篇下一篇

猜你喜欢

热点阅读