Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
) < end - start0 and self.default_seq: # Pad missing positions with default_seq
pad_len = end - start0 - len(seq)
seq = ''.join([seq, pad_len * self.default_seq])
else: # Return less than requested range
end = start0 + len(seq)
if self.sequence_always_upper:
seq = seq.upper()
if not self.one_based_attributes:
start = start0
if self.as_raw:
return seq
else:
return Sequence(
name=rname, start=int(start), end=int(end), seq=seq)
If rc is set, reverse complement will be returned.
"""
# Get sequence for all intervals
chunks = [self.faidx.fetch(name, s, e) for s, e in intervals]
start = chunks[0].start
end = chunks[-1].end
# reverce complement
if rc:
seq = "".join([(-chunk).seq for chunk in chunks[::-1]])
else:
seq = "".join([chunk.seq for chunk in chunks])
# Sequence coordinate validation wont work since
# len(Sequence.seq) != end - start
return Sequence(name=name, seq=seq, start=None, end=None)
def unpadded_len(self):
""" Returns the length of the contig without 5' and 3' N padding.
Functions the same as contigNonNSize in Fasta.cpp at
https://github.com/Illumina/hap.py/blob/master/src/c%2B%2B/lib/tools/Fasta.cpp#L284
"""
length = len(self)
stop = False
for line in iter(self):
if stop:
break
if isinstance(line, Sequence):
line = line.seq
for base in line.upper():
if base == 'N':
length -= 1
else:
stop = True
break
stop = False
for line in reversed(self):
if stop:
break
if isinstance(line, Sequence):
line = line.seq
for base in line.upper():
if base == 'N':
length -= 1