python学习——通过命令行参数根据fasta文件中染色体id提取染色体序列

提取fasta文件genome_test.fa中第14号染色体的序列,其内容如下:

>chr1
ATATATATAT
>chr2
ATATATATATCGCGCGCGCG
>chr3
ATATATATATCGCGCGCGCGATATATATAT
>chr4
ATATATATATCGCGCGCGCGATATATATATCGCGCGCGCG
>chr5
ATATATATATCGCGCGCGCGATATATATATCGCGCGCGCGATATATATAT
>chr6
ATCGATGCAGCATG
>chr7
TATCGCGCGCGCGATATAT
>chr8
ATATCGCGCGCGCGATATATATATCGCG
>chr9
ATCGCGCGCGCGATATATATATCGCG
>chr10
GCGCGCGATATAT
>chr11
CGCGATATATATATC
>chr12
ATATATCGCGCGCGCGATATAT
>chr13
ATATATCGCGCGCGCGATATATGCGATATATATATC
>chr15
ATATATGCGAT
>chr14
GCGCGCGCGATATATGCGAT
>chr16
GCGATATATGCGATATATATATC
>chr17
GCGCGCGCGATATATATATCGCGCGCGCGATATATATAT
>chr18
GCGCGCGCGATATATATATCGCGCGCGCGATATATATATATATGCGATATATATATC
>chr19
ATATGCGATATATATATCGCGCGCGCGATATATATATCGCGCGCGCGATATATATATATATGCGA
>chr20
TATGCGATATATATATCGCGCGCGCGATATATATATCGCGCGCGCGATATATATATATATGCGA
>chr21
TATATCGCGCGCGCGATATATATATCGCGCGCGCGATATATATATATATGCGA
>chr22
ATATATATCGCGCGCGCGATATATATATATATGCGA
>chrX
CGCGCGCGATATATATATATATGCGA
>chrY
CGCGCGCGATATATATATATATGCGACGCGCGCGATATATATATATATGCGACGCGCGCGATATATATATATATGCGA

用python以及命令行参数实现

新建.py文件“”GetSeqFromChrID.py”,

python脚本如下:

 1 import argparse
 2
 3 def read_fasta(input):
 4
 5     with open(input, ‘r‘) as f:
 6         fasta = {}
 7         for line in f:
 8             line = line.strip()
 9             if line[0] == ‘>‘:
10                 header = line[1:]
11             else:
12                 sequence = line
13                 fasta[header] = fasta.get(header, ‘‘) + sequence
14
15     return fasta
16
17
18 if __name__ == ‘__main__‘:
19     # read arguments
20     parser = argparse.ArgumentParser(description="this program is used to extract a single "
21                                                  "sequence from genome")
22     parser.add_argument(‘--input‘, ‘-i‘,
23                         type=str,
24                         help=‘input file in fasta format‘)
25     parser.add_argument(‘--output‘, ‘-o‘,
26                         type=str,
27                         help=‘output file‘)
28     parser.add_argument(‘seq_id‘,
29                         type=str,
30                         help=‘sequence id‘)
31     args = parser.parse_args()
32
33     fasta = read_fasta(args.input)
34     with open(args.output, ‘w‘) as f:
35         f.write(‘>{:s}\n{:s}\n‘.format(args.seq_id,fasta.get(args.seq_id, ‘can not found this sequence‘)))

命令行参数输入如下:红色字体是输入部分

1 (base) e:\15_python\DEBUG>python GetSeqFromChrID.py -i genome_test.fa -o chr14.fa chr14

结果如下:

  

原文地址:https://www.cnblogs.com/caicai2019/p/10867405.html

时间: 2024-10-08 13:53:13

python学习——通过命令行参数根据fasta文件中染色体id提取染色体序列的相关文章

Linux 程序设计学习笔记----命令行参数处理

转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行参数及解析 在使用linux时,与windows最大的不同应该就是经常使用命令行来解决大多数问题.比如下面这样的: 而显然我们知道C语言程序的入口是mian函数,即是从main函数开始执行,而main函数的原型是: int main( int argc, char *argv[] ); int main( int argc, char **argv );

Linux命令行批量替换多文件中的字符串【转】

Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串.sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` 例如:我要把mahuinan替换为huinanma, 执行命令:sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www' 这是目

Python常用模块-命令行参数设置

optparse是一个比getopt更方便灵活强大的来设置命令行参数的一个模块. 示例 下面是一个使用 optparse 的简单示例: from optparse import OptionParser   [...]   parser = OptionParser()   parser.add_option("-f", "--file", dest="filename",                     help="write

[Python] sys.argv命令行参数传入

书上一道题需要实现功能"根据账号查询密码, 复制密码到剪贴板". 账号和密码储存在代码字典中. 问题描述: 作为Python新手从代码(如下)看只知道: 1. sys.argv初始包含一行文件路径. 2. 需要将待查询的账号传入sys.argv. 怎么操作呢? #! python3 #pw.py - An inssecure password locker program. #Run this program in CMD, parameter (account) load after

TensorFlow-谷歌深度学习库 命令行参数

程序的入口: tf.app.run tf.app.run( main=None, argv=None ) 运行程序,可以提供'main'函数以及函数参数列表.处理flag解析然后执行main函数. 什么是flag解析呢? 由于深度学习神经网络往往需要对各种Hyperparameter调优,比如学习率,卷积核参数设置等等, 这时使用命令行调参是非常方便的. 需要用到TensorFlow框架中的tf.app.flags组件 tf.app.flags组件中提供很多自带的设置不同类型命令行参数以及其默认

JAVA命令行参数输入 及 命令行参数输入数据到list中

命令行参数Java所有程序中都有一个main方法,而这个方法带有一个参数String args[]. 这个参数就是main方法接受的用户输入的参数列表,即命令行参数. 举例说明1——直接输出命令行参数的值 1 public class ArgsDemo { 2 public static void main(String[]args){ 3 4 int number= args.length; 5 System.out.println("共接受到"+number+"个参数&q

python 命令行参数,以及文件操作

1 #demo.py 2 #!/usr/bin/python 3 import sys 4 5 print sys.argv #python demo.py 11 22 33 44 55 ['demo.py', '11', '22', '33', '55'] 可见,sys.argv是一个list,并且sys.argv[0]是文件名: 文件操作: 1 [email protected]:~/cp# python demo.py 11 2 ['demo.py', 11] 3 #!/usr/bin/p

如何编写一个带命令行参数的Python文件

看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命令行参数. 首先你要知道python中的sys模块的一些功能: import sys print "the number of python program's argument:",len(sys.argv) print "the value of every argument

awk,perl,python的命令行参数处理

Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性化到家了,但是命令行上就很原始,但是很有分类感.还是会喜欢Perl一点(至少还可以动脑子,不至于生锈),感觉Perl是个杂合子,而python像胡彦斌,bash像韩红(最近看我是歌手第三季,嘻嘻).Bash就是家常菜了,虽然Perl可以大部分代替Bash的功能,像grep sort map等,但是某