Skip to content

Commit

Permalink
fix: Fix float .2f VCF representation
Browse files Browse the repository at this point in the history
  • Loading branch information
Rapsssito committed Aug 11, 2022
1 parent ae6cd8c commit ed34a40
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
5 changes: 3 additions & 2 deletions src/variant_extractor/VariantExtractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ def __handle_multiallelic_record(self, rec: pysam.VariantRecord) -> List[Variant
for i, alt in enumerate(alts):
# WARNING: This overrides the record
rec.alts = [alt]
new_id = f'{original_id}_{i}'
rec.id = new_id
if original_id:
new_id = f'{original_id}_{i}'
rec.id = new_id
record_list += self.__handle_record(rec)
return record_list
29 changes: 15 additions & 14 deletions src/variant_extractor/variants.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,31 +41,32 @@ class ShorthandSVRecord(NamedTuple):
extra: List[str]
"""Extra information of the SV. For example, for :code:`<DUP:TANDEM:AA>` the extra will be :code:`['TANDEM', 'AA']`"""

def _str_value(value):
if isinstance(value, str):
return value
elif isinstance(value, float):
return f'{value:.2f}'
elif hasattr(value, '__iter__'):
return ','.join([_str_value(v) for v in value])
elif value is None:
return '.'
else:
return str(value)

def _convert_info_key_value(key, value):
if value is None:
return key
elif isinstance(value, bool):
return key if value else None
elif isinstance(value, str):
return f'{key}={value}'
elif hasattr(value, '__len__'):
return key+'=' + ','.join([str(v) for v in value])
else:
return key+'='+str(value)
return key+'='+_str_value(value)


def _convert_sample_value(key, value):
if key == 'GT':
return '/'.join([str(v) if v is not None else '.' for v in value])
elif value is None:
return '.'
elif isinstance(value, str):
return value
elif hasattr(value, '__len__'):
return ','.join([str(v) if v is not None else '.' for v in value])
return '/'.join([_str_value(v) for v in value])
else:
return str(value)
return _str_value(value)


class VariantRecord(NamedTuple):
Expand Down Expand Up @@ -108,7 +109,7 @@ def __str__(self):
id_ = self.id if self.id else '.'
ref = self.ref
alt = self.alt
qual = self.qual if self.qual else '.'
qual = _str_value(self.qual)
filter_ = ";".join(self.filter) if self.filter else '.'
info_list = []
for key, value in self.info.items():
Expand Down

0 comments on commit ed34a40

Please sign in to comment.