Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self,
filename,
vcf_file,
sample=None,
het=True,
hom=True,
call_filter=None,
**kwargs):
super(FastaVariant, self).__init__(filename, **kwargs)
try:
import pysam
except ImportError:
raise ImportError("pysam must be installed for FastaVariant.")
try:
import vcf
except ImportError:
raise ImportError("PyVCF must be installed for FastaVariant.")
if call_filter is not None:
try:
key, expr, value = call_filter.split() # 'GQ > 30'
except IndexError:
raise ValueError(
"call_filter must be a string in the format 'XX <>!= NN'")
assert all([x in self.expr for x in list(expr)])
assert all([x in string.ascii_uppercase for x in list(key)])
def variant_sites(self):
if isinstance(self._fa, FastaVariant):
pos = []
var = self._fa.vcf.fetch(self.name, 0, len(self))
for site in var:
if site.is_snp:
sample = site.genotype(self._fa.sample)
if sample.gt_type in self._fa.gt_type and eval(
self._fa.filter):
pos.append(site.POS)
return tuple(pos)
else:
raise NotImplementedError(
"variant_sites() only valid for FastaVariant.")