circos pipeline
# /usr/bin/env python
# coding=utf-8
###################################
# Author : yunkeli
# Version : 1.0(2015/6/20)
# E-mail : 1316014512@qq.com
###################################
import os
import argparse
import re
import random
def vcf_SNPdensity(snpvcffile,pathway):
print "this step is vcf to SNPdensity "
cmdvcftorate = "/home/liyunke/vcftools_0.1.12b/bin/vcftools --vcf "+snpvcffile+" --out " + pathway+"/SNPdensity100K --SNPdensity 1000000"
result_analysis=os.popen(cmdvcftorate)
print result_analysis.read()
def density(SNPdensityfile,pathway):
print "##############################"
print "this step is vcf to densitysplit cat "
fileopen = open(SNPdensityfile).readlines()[1:]
savename = pathway+"/"+"SNPdensity50K.snpden.new.txt"
filesave = open(savename,"w+")
for i in fileopen:
listi = i.split()
filesave.write(listi[0].replace("chr","hs")+"\t"+listi[1]+"\t"+str(int(listi[1])+999999)+"\t"+str(float(listi[3])/10)+"\n")
filesave.close()
def densitysplit(SNPdensityfile,pathway):
print "##############################"
print "this step is vcf to densitysplit "
fileopen = open(SNPdensityfile).readlines()[1:]
namelist = []
for i in fileopen:
if i.split()[0] not in namelist:
namelist.append(i.split()[0])
for j in namelist:
savename = pathway+"/"+j.replace("chr","hs")+".snp.txt"
filesave = open(savename,"w+")
for x in fileopen:
listx = x.split()
if listx[0] == j:
filesave.write(listx[0].replace("chr","hs")+"\t"+listx[1]+"\t"+str(int(listx[1])+499999)+"\t"+listx[3]+"\n")
filesave.close()
print "densitysplit ok"
def sv_split(svdensityfile,pathway):
print "##############################"
print "this step is vcf to sv_file split "
fileopen = open(svdensityfile).readlines()[1:]
namelist = []
for i in fileopen:
if i.split()[0] not in namelist:
namelist.append(i.split()[0])
for j in namelist:
listrandom = []
savename = pathway+"/"+j.replace("chr","hs")+".sv.txt"
filesave = open(savename,"w+")
for x in fileopen:
listx = x.split()
if listx[0] == j:
if listx[0] != listx[5]:
listrandom.append(x)
if len(listrandom) > 10:
slicelist = random.sample(listrandom, 10)
for links in slicelist:
listlinks = links.split()
filesave.write("segdups"+str(listrandom.index(links))+"\t"+"\t".join(listlinks[0:3]).replace("chr","hs")+"\n")
filesave.write("segdups"+str(listrandom.index(links))+"\t"+"\t".join(listlinks[5:8]).replace("chr","hs")+"\n")
filesave.close()
else:
for links in listrandom:
listlinks = links.split()
filesave.write("segdups"+str(listrandom.index(links))+"\t"+"\t".join(listlinks[0:3])+"\n")
filesave.write("segdups"+str(listrandom.index(links))+"\t"+"\t".join(listlinks[5:8])+"\n")
filesave.close()
def circos_config(npath,prefix):
oldconfig = "/home/liyunke/circos/sof/circos-0.67-7/work/pipeline/etc/config"
configopen = open(oldconfig).read()
f1 = re.sub("pathway",npath,configopen)
newconfig = "/home/liyunke/circos/sof/circos-0.67-7/work/pipeline/etc/"+prefix+".conf"
newconfigsave = open(newconfig,"w+")
newconfigsave.write(f1)
newconfigsave.close()
def main():
p = argparse.ArgumentParser(usage='./circos.pipline.py [--vcf] [--sv] [--prefix] [--outdir] ', description='circos snp sv')
p.add_argument('-v','--vcf', type=str, help='vcf file')
p.add_argument('-s','--sv', type=str, help='sv file')
p.add_argument('-p','--prefix', default="circostest",help='prefix or usrname')
p.add_argument('-o','--outdir', default="./", help='document directory')
args = p.parse_args()
prefix = args.prefix
vcffile = args.vcf
outdir = args.outdir
vcf_SNPdensity(vcffile,outdir)
SNPdensityfile = outdir+"/SNPdensity100K.snpden"
density(SNPdensityfile,outdir)
densitysplit(SNPdensityfile,outdir)
svdensityfile = args.sv
sv_split(svdensityfile,outdir)
circos_config(outdir,prefix)
cmdstr = "/home/liyunke/circos/sof/circos-0.67-7/bin/circos -conf /home/liyunke/circos/sof/circos-0.67-7/work/pipeline/etc/"+prefix+".conf --outputdir "+ outdir+" -outputfile "+prefix
result_analysis_circos =os.popen(cmdstr)
print result_analysis_circos.read()
rmcmd = "rm "+ outdir +"/hs*"
result_analysis_rm =os.popen(rmcmd)
print result_analysis_rm.read()
if __name__ == '__main__':
main()
circos pipeline的更多相关文章
- redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作
前段时间在做用户画像的时候,遇到了这样的一个问题,记录某一个商品的用户购买群,刚好这种需求就可以用到Redis中的Set,key作为productID,value 就是具体的customerid集合, ...
- Building the Testing Pipeline
This essay is a part of my knowledge sharing session slides which are shared for development and qua ...
- Scrapy:为spider指定pipeline
当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...
- 图解Netty之Pipeline、channel、Context之间的数据流向。
声明:本文为原创博文,禁止转载. 以下所绘制图形均基于Netty4.0.28版本. 一.connect(outbound类型事件) 当用户调用channel的connect时,会发起一个 ...
- 初识pipeline
1.pipeline的产生 从一个现象说起,有一家咖啡吧生意特别好,每天来的客人络绎不绝,客人A来到柜台,客人B紧随其后,客人C排在客人B后面,客人D排在客人C后面,客人E排在客人D后面,一直排到店面 ...
- MongoDB 聚合管道(Aggregation Pipeline)
管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为"管道")方式,"数据元素"流串行地被一组线程按顺序执行.它的使用架构可参考 ...
- SSIS Data Flow 的 Execution Tree 和 Data Pipeline
一,Execution Tree 执行树是数据流组件(转换和适配器)基于同步关系所建立的逻辑分组,每一个分组都是一个执行树的开始和结束,也可以将执行树理解为一个缓冲区的开始和结束,即缓冲区的整个生命周 ...
- Kafka到Hdfs的数据Pipeline整理
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 找时间总结整理了下数据从Kafka到Hdfs的一些pipeline,如下 1> Kafka ...
- SQL Queries from Transactional Plugin Pipeline
Sometimes the LINQ, Query Expressions or Fetch just doesn't give you the ability to quickly query yo ...
随机推荐
- Redis持久化功能
Redis为了内部数据的安全考虑,会把本身的数据以文件的形式保存在硬盘中一份,在重启之后会自动把硬盘的数据恢复到内存(redis)里面. 一.snap shotting 快照持久化 该持久化默认开启, ...
- sublimeCLang配置报错以及sublime快捷键
subimeClang需要手动配置我真的真的很服 记录一下满是报错的高光时刻 -------- 不过这个问题刚刚解决了 只要把所有的shared_ptr改成std::shared_ptr 就行 说白了 ...
- springboot整合邮件发送(163邮箱发送为例)
先登录163邮箱获取授权 勾选后安装提示会叫你设置授权密码之类的:记住授权的密码 1.引入maven依赖 <dependency> <groupId>org.springfr ...
- JavaScript高级程序设计(第三版) 5/25
第三章 基本概念 1.任何语言的核心都必然会描述这门语言最基本的工作原理.而描述的内容通常都要涉及这门语言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念. 2.浮点数值,该数值中必 ...
- random随机数函数
- Hadoop学习之NCDC天气数据获取
期望目的 下载<Hadoop权威教程>里用到的NCDC天气数据,供后续在此数据基础上跑mapred程序. 操作过程 步骤一.编写简单的shell脚本,下载数据文件到本地文件系统 已知NCD ...
- ArrayList源码解析,老哥,来一起复习一哈?
前言 JDK源码解析系列文章,都是基于JDK8分析的,虽然JDK14已经出来,但是JDK8我还不会,我... 类图 实现了RandomAccess接口,可以随机访问 实现了Cloneable接口,可以 ...
- java.lang.NoSuchMethodError:javax.validation.BootstrapConfiguration.getClockProviderClassName
Spring Boot 2随附了hibernate-validator 6(org.hibernate.validator:hibernate-validator:6.0.16.Final依赖于val ...
- elasticsearch 高级搜索示例 es7.0
基础数据 创建索引 PUT mytest { "mappings": { "properties": { "title": { " ...
- 关于海思SDK在Ubuntu下安装错误问题
在Ubuntu下安装海思sdk时,直接运行安装脚本,会有如下提示: ./sdk.unpack ./sdk.unpack: 2: ./sdk.unpack: source: not found ./s ...