updates to the python snp selector -- now sorts info fields and we stop printing unnecessary debugging info in vcf2table
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2265 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
0f89a38473
commit
0753315156
|
|
@ -23,7 +23,6 @@ if __name__ == "__main__":
|
||||||
counter = OPTIONS.skip
|
counter = OPTIONS.skip
|
||||||
|
|
||||||
fields = OPTIONS.fields.split(',')
|
fields = OPTIONS.fields.split(',')
|
||||||
print sys.stdin
|
|
||||||
for header, vcf, count in lines2VCF(sys.stdin, extendedOutput = True):
|
for header, vcf, count in lines2VCF(sys.stdin, extendedOutput = True):
|
||||||
#print vcf, count
|
#print vcf, count
|
||||||
if count == 1 and vcf.hasHeader():
|
if count == 1 and vcf.hasHeader():
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
VCF_KEYS = "CHROM POS ID REF ALT QUAL FILTER INFO".split()
|
VCF_KEYS = "CHROM POS ID REF ALT QUAL FILTER INFO".split()
|
||||||
|
VCF_KEYS_FORMAT = "CHROM POS ID REF ALT QUAL FILTER".split()
|
||||||
|
|
||||||
TRANSITIONS = dict()
|
TRANSITIONS = dict()
|
||||||
for p in ["AG", "CT"]:
|
for p in ["AG", "CT"]:
|
||||||
|
|
@ -82,7 +83,7 @@ class VCFRecord:
|
||||||
self.bindings[field] = value
|
self.bindings[field] = value
|
||||||
else:
|
else:
|
||||||
self.info[field] = value
|
self.info[field] = value
|
||||||
self.setField("INFO", self.getInfo())
|
#self.setField("INFO", self.getInfo())
|
||||||
#print 'getInfo', self.getInfo()
|
#print 'getInfo', self.getInfo()
|
||||||
|
|
||||||
def getField(self, field, default = None):
|
def getField(self, field, default = None):
|
||||||
|
|
@ -100,7 +101,9 @@ class VCFRecord:
|
||||||
return str(x)
|
return str(x)
|
||||||
else:
|
else:
|
||||||
return str(x) + '=' + str(y)
|
return str(x) + '=' + str(y)
|
||||||
return ';'.join(map(lambda x: info2str(*x), self.info.iteritems()))
|
v = ';'.join(map(lambda x: info2str(*x), sorted(self.info.iteritems(), key=lambda x: x[0])))
|
||||||
|
#print 'V = ', v
|
||||||
|
return v
|
||||||
|
|
||||||
def getInfoDict(self): return self.info
|
def getInfoDict(self): return self.info
|
||||||
|
|
||||||
|
|
@ -119,7 +122,7 @@ class VCFRecord:
|
||||||
return ' '.join(['%s=%s' % (x,y) for x,y in self.bindings.iteritems()])
|
return ' '.join(['%s=%s' % (x,y) for x,y in self.bindings.iteritems()])
|
||||||
|
|
||||||
def format(self):
|
def format(self):
|
||||||
return '\t'.join([str(self.getField(key)) for key in VCF_KEYS] + self.rest)
|
return '\t'.join([str(self.getField(key)) for key in VCF_KEYS_FORMAT] + [self.getInfo()] + self.rest)
|
||||||
|
|
||||||
def parseInfo(s):
|
def parseInfo(s):
|
||||||
d = dict()
|
d = dict()
|
||||||
|
|
@ -192,7 +195,6 @@ def lines2VCF(lines, extendedOutput = False, decodeAll = True, header=None, colu
|
||||||
yield vcf
|
yield vcf
|
||||||
raise StopIteration()
|
raise StopIteration()
|
||||||
|
|
||||||
|
|
||||||
def formatVCF(header, records):
|
def formatVCF(header, records):
|
||||||
#print records
|
#print records
|
||||||
#print records[0]
|
#print records[0]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue