Source code for openvariant.plugins.get_AF.get_AF

import re

from openvariant.plugins.context import Context
from openvariant.plugins.plugin import Plugin


[docs]class Get_afContext(Context): """ Get_afContext class generated by OpenVariant Attributes ------- row : dict Main method to execute data transformation in each row. field_name : str Name of the corresponding column that was described on the annotation schema. file_path : str Path of the Input file that is being parsed. """ def __init__(self, row: dict, field_name: str, file_path: str) -> None: super().__init__(row, field_name, file_path)
[docs]class Get_afPlugin(Plugin): """ This plugin get alternate allele frequency of a sample in a .vcf. It will be in located in 'subAF' field and will get the float number with regexp. Methods ------- run(context: Get_afContext) Main method to execute data transformation in each row. """
[docs] def run(self, context: Get_afContext) -> str: """ Extract allele frequency from the input row. Parameters ------- context : Get_afContext Representation of the row to be parsed. Returns ------- float or int or str The value of the field transformed. """ res = re.findall(r";AF_raw=[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?;", context.row["subAF"]) try: context.row[context.field_name] = float(res[0][0] + res[0][2]) except Exception: context.row[context.field_name] = float('nan') return str(context.row[context.field_name])