def getLocusAndData(self, inputFname, VCFOutputType=2): """ 2011-9-21 """ contig_id_pattern = re.compile(r'Contig(\d+).*') contig2locus2frequency = {} fname = inputFname if fname[-6:]!='vcf.gz' and fname[-3:]!='vcf': return None sys.stderr.write("%s ..."%fname) contig_id_pattern_sr = contig_id_pattern.search(inputFname) if contig_id_pattern_sr: contig_id = contig_id_pattern_sr.group(1) else: contig_id = os.path.splitext(os.path.split(inputFname)[1])[0] vcfFile = VCFFile(inputFname=self.inputFname) counter = 0 real_counter = 0 locus_ls = [] xData_ls = [] yData_ls = [] for vcfRecord in vcfFile.parseIter(): locus_id = vcfRecord.locus_id chr = vcfRecord.chr pos = vcfRecord.pos pos = int(pos) AF1 = vcfRecord.info_tag2value.get("AF", vcfRecord.info_tag2value.get("AF1", None)) if AF1: AF1 = float(AF1) locus_ls.append(locus_id) xData_ls.append(pos) yData_ls.append(AF1) sys.stderr.write("%s loci. Done.\n"%(len(yData_ls))) return PassingData(contig_id=contig_id, locus_ls=locus_ls, yData_ls=yData_ls, xData_ls=xData_ls)