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 ...
随机推荐
- js原声代码 轮播图
js轮播图 html部分:建立div,内嵌img标签,可以设置大小, <!doctype html> <html> <head> <meta charset= ...
- [Abp vNext 源码分析] - 23. 二进制大对象系统(BLOB)
一.简介 ABP vNext 在 v 2.9.x 版本当中添加了 BLOB 系统,主要用于存储大型二进制文件.ABP 抽象了一套通用的 BLOB 体系,开发人员在存储或读取二进制文件时,可以忽略具体实 ...
- C++中string类型的find 函数
(去膜拜大佬的博客园,结果被自己菜到自闭) find string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos. 对其返回的下标position ...
- Seaborn实现单变量分析
import numpy as np import pandas as pd from scipy import stats,integrate import matplotlib.pyplot as ...
- PHP image2wbmp - 输出WBMP图片
image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件.高佣联盟 www.cgewang.com 语法 int image2wbmp ( resource $image [, strin ...
- yum自建离线仓库
1.步骤 centOS的安装包,完整版最好--everyhing版本 解压缩 将文件夹内Packages文件导入系统 执行命令如下: 1. mv ./Packages/ /mnt/ 2. create ...
- 03-Thread类中的常用方法
Thread类中的常用的方法: * 1. start():启动当前线程:调用当前线程的run() * 2. run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中 ...
- Eclipse Java EE IDE for Web Developers 4.5.1 安装hibername tools 插件
方式一:在线安装(太慢) 方式二:离线安装,下载hibernate tools 插件到本地,然后在eclipse菜单栏点击 help: ①添加插件,选择下载后的插件,内容框中可选择hibernate ...
- 一文搞懂Linux系统开发
先列一下Linux系统开发要掌握的知识,以后有时间再一一介绍. 欢迎关注我的微信公众号:fensnote 文章目录 Linux系统开发会用到什么? C语言基础 shell脚本 学会使用Makefile ...
- BiMPM:Bilateral Multi-Perspctive Matching for Natural Language Sentences
导言 本论文的工作主要是在 'matching-aggregation'的sentence matching的框架下,通过增加模型的特征(实现P与Q的双向匹配和多视角匹配),来增加NLSM(Natur ...