示例#1
0
 def write_head(self):
     with open(self.__outvcf, 'w') as fi:
         ##header
         fi.write("{}".format(Read.Readvcf(self.__invcf).header))
         #samples行
         samples = Read.Readvcf(self.__invcf).samples.split('|')
         newsamples = []
         for group_name in self.__grp_dict:
             for i in self.__grp_dict[group_name]['index']:
                 newsamples.append(samples[i])
         fi.write(
             "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t{}\n".
             format("\t".join(newsamples)))
示例#2
0
    def main(self):
        if not self.__invcf:
            print('Use --help for command line help')
            return
        try:
            os.makedirs(args.work_dir)
        except:
            pass
            #print ('%s exists' %(args.work_dir))

        self.get_group()
        self.write_head()
        low_dp, high_dp = self.__depth.split(',')
        vcfinfo = Read.Readvcf(self.__invcf).extract
        #pool = mp.Pool(1) #启动多线程池
        for each in vcfinfo:
            self.run_filter(each, self.__grp_dict, low_dp, high_dp)
            #pool.apply_async(self.run_filter, args=(each, self.__grp_dict, low_dp, high_dp))#函数写入到多线程池
        """
		print('Waiting for all subprocesses done...')
		pool.close()
		pool.join()
		print('All subprocesses done.')
		pool.terminate()
		"""

        print("低/高深度标记次数: {}".format(self.__total_dp_num))
        print("Homogeneous标记次数: {}".format(self.__total_homogeneous_num))
示例#3
0
 def __init__(self, invcf, grp_dict, grp_name="", samples_lst=[]):
     self.invcf = invcf
     self.all_samples_lst = Read.Readvcf(self.invcf).samples.split('|')
     self.grp_dict = grp_dict
     if grp_name:
         self.grp_name = grp_name
     else:
         self.grp_name = 'All'
     if len(samples_lst) > 1:
         self.samples_lst = samples_lst
     else:
         self.samples_lst = self.all_samples_lst
     self.handle_grp()