忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 2982 | 回复: 8

求一个切割序列的脚本 [复制链接]

论坛徽章:
0
发表于 2018-01-17 22:08 |显示全部楼层
序列:几万条,fasta格式,如下:
>gene=XLOC_000001
CTCCGTCCTGGATGCCGTCCTCCCTGGTGTCAGCCTCTTGGTCAAAAATTTTGGGGTCCTTTGTCTCCTTCGGTGGTGTCCATTGGTGCGGGTGCATGGATTCTGTGCGCGGGTGCATGGTGGCGGTCAAAACAGGTAGTATGGTGGCGGTCTCTGGATATGCGGGCTGCTCTTCCTGCGGTGATGGATCGTCGGCGGGGAATATAAGGCTCAAGAGGGGTTGATGTTTGCGGCTGGCTTTAATTGCATGTTTGGCGGCGGTTTTTTGTGGTAGGCTGTCTTGTATTGGCTTCGGTTCTTCTAATACTATTTTCGGTAAATCATTTCTAAAGGTGGTGTATGATGTTGAAAtatcttgattttctttgtttgtttcaTTGGAGCTTGTCGGTGTtatatcgggggtatcatatagtcctggtttattagttgtagttttctgtatatctggtggcgggtcgttgggtgctgggttccgggttttttgttgattcaatcc
>gene=XLOC_000002
TAGGGATTTGCTTGTGATCATGTTTCTATAAAGTCGtcattttatcaattcgaaGATCAGCCTTCAAAAATTTAGGTCAACTTATACATTTCAACTCACGTTGCTACACGTTTCAACTTAGCAAAAGGACAGAGggaattagtattattattctctagagcCCTGGAAATATCCCTGTTATTGTTCTTGGTACGGTACCTTATACAAAAGGGACtccataatacaaaaacaaatcagtCCTTGCCGGACAAagctagagaaagaagaagaagaagaagacgacgacaggaggagaagaagaacaagcgagaagaagaagataatagaaaaagg

求一个脚本可以把每条序列按顺序从头到尾切割成一些2000bp的短序列。
打赏鼓励一下!

论坛徽章:
29
申猴
日期:2014-04-10 09:43:532015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2018-01-18 11:25 |显示全部楼层
回复 1# skyxbxb

“切割成一些2000bp的短序列” 这个是什么意思,请给出上述文本想要的结果!

论坛徽章:
0
发表于 2018-01-18 13:31 |显示全部楼层
回复 2# zxy877298415
比如说一条长序列 CTCCGTCCTGGATGCCGTCCTCCCTGGTGTCAGCCTCTTGGTCAAAAATTTTGGGGTC我希望切割成
CTCCG

TCCTG
GATGC
CGTCC
TCCCT
GGTGT
CAGCC
.......
固定长度的短序列,例子中长度为5,我希望切割成长度为2000以内如1900的长度。

论坛徽章:
29
申猴
日期:2014-04-10 09:43:532015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2018-01-18 14:37 |显示全部楼层
本帖最后由 zxy877298415 于 2018-01-18 15:22 编辑

回复 3# skyxbxb


  1. with open ('file.txt') as f:
  2.     for i in f:
  3.         if '>' in i:
  4.             print (i,end='')
  5.         else:
  6.             for j in range(0,len(i),5):
  7.                 print (i[j:j+5])
复制代码

把5改成你需要切割的长度就可以了!

论坛徽章:
0
发表于 2018-01-18 22:00 |显示全部楼层
回复 4# zxy877298415

感谢大神!我试了一下,在服务器用这个脚本,提示错误:
-bash-4.1$ python try1.py
  File "try1.py", line 4
    print (i,end='')
                ^
SyntaxError: invalid syntax

请问这是怎么回事呢?

论坛徽章:
29
申猴
日期:2014-04-10 09:43:532015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2018-01-19 11:23 |显示全部楼层
回复 5# skyxbxb


我的是python3 你用的是python2!

论坛徽章:
0
发表于 2018-01-19 21:27 |显示全部楼层
回复 4# zxy877298415
大神,不好意思我之前说得不够明白,我是想:原文件:
>gene=XLOC_000001
CTCCGTCCTGGATGCCGTCCTCCCTGGTGTCAGCCTCTTGGTCAAAAATTTTGGGGTC
结果文件:
>gene=XLOC_000001.1
CTCCG
>gene=XLOC_000001.2
TCCTG
>gene=XLOC_000001.3
GATGC
>gene=XLOC_000001.4
CGTCC
.......
长序列切割成固定长度的短序列,并且编号(编号形式任意,包含原来的编号就好,比如>gene=XLOC_000001_1也行)。

多谢大神!

论坛徽章:
29
申猴
日期:2014-04-10 09:43:532015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:09
发表于 2018-01-19 21:58 |显示全部楼层
回复 7# skyxbxb


with open ('file.txt') as f:
    for i in f:
        if '>' in i:
            t=i.strip('\n')
        else:
            for n,j in enumerate(range(0,len(i),5),1):
                print (t+'.'+str(n)+'\n'+i[j:j+5])

论坛徽章:
0
发表于 2018-01-20 19:48 |显示全部楼层
回复 8# zxy877298415

厉害厉害
非常感谢大神!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP