本文整理匯總了Python中pybedtools.Interval方法的典型用法代碼示例。如果您正苦於以下問題:Python pybedtools.Interval方法的具體用法?Python pybedtools.Interval怎麽用?Python pybedtools.Interval使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類pybedtools
的用法示例。
在下文中一共展示了pybedtools.Interval方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __getitem__
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def __getitem__(self, idx):
"""Returns (pybedtools.Interval, labels)
"""
row = self.df.iloc[idx]
# TODO: use kipoiseq.dataclasses.interval instead of pybedtools
import pybedtools
interval = pybedtools.create_interval_from_list(
[to_scalar(x) for x in row.iloc[:self.bed_columns]])
if self.ignore_targets or self.n_tasks == 0:
labels = {}
else:
labels = row.iloc[self.bed_columns:].values.astype(
self.label_dtype)
return interval, labels
示例2: merged_interval_features
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def merged_interval_features(feature, bam_handle,find_svtype=False):
support_list = feature.name.split(",")
locations = sorted(map(int, support_list[0:-1:3]))
other_bp_ends = support_list[-1] if not find_svtype else ','.join(support_list[1::3])
num_unique_locations = len(set(locations))
count_str = ",".join(["%s,%s" % (i, c) for (i, c) in collections.Counter(locations).items()])
plus_support = len([i for i in support_list[2::3] if i == "+"])
minus_support = len(locations) - plus_support
locations_span = max(locations) - min(locations)
interval_readcount = bam_handle.count(reference=str(feature.chrom), start=feature.start, end=feature.end)
info = {"SC_PLUS_SUPPORT":plus_support, "SC_MINUS_SUPPORT":minus_support,
"SC_LOCATIONS_SPAN":locations_span, "SC_NUM_UNIQUE_LOCATIONS":num_unique_locations,
"SC_COUNT_STR": count_str, "SC_COVERAGE":interval_readcount, "SC_OTHER_BP_ENDS": other_bp_ends,
"SC_SC_BP_ENDS": "%s-%s"%(feature.start, feature.end)}
name = "%s,%s,0,SC" % (
base64.b64encode(json.dumps(info)), feature.fields[6].split(',')[0])
return pybedtools.Interval(feature.chrom, feature.start, feature.end, name=name, score=feature.score,
otherfields=[str(interval_readcount)]+feature.fields[6:])
示例3: get_full_interval
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def get_full_interval(feature, pad):
name_fields = feature.name.split(",")
info = json.loads(base64.b64decode(name_fields[0]))
other_bp_ends=info["SC_OTHER_BP_ENDS"]
start = feature.start
end = feature.end
sv_type = name_fields[1]
if "-" in other_bp_ends:
other_bp_start,other_bp_end=map(lambda x:int(x),other_bp_ends.split("-"))
if other_bp_start != 0 or other_bp_end != 0:
start = min((feature.start+feature.end)/2,(other_bp_start+other_bp_end)/2)
end = max((feature.start+feature.end)/2,(other_bp_start+other_bp_end)/2)
sv_len = 0 if sv_type == "INS" else max(end-start,0)
info["SOURCES"] = "%s-%d-%s-%d-%d-SoftClip" % (feature.chrom, start, feature.chrom, end, sv_len)
name = "%s,%s,%d,%s"%(base64.b64encode(json.dumps(info)),sv_type,sv_len,'SC')
return pybedtools.Interval(feature.chrom, start, end, name=name, score=feature.score,
otherfields=feature.fields[6:])
示例4: find_other_bp_interval
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def find_other_bp_interval(feature,pad):
name_fields = feature.name.split(",")
sv_type = name_fields[1]
sv_methods = name_fields[3]
sv_length = int(name_fields[2])
info = json.loads(base64.b64decode(name_fields[0]))
other_bps=map(lambda y: map(int,y['SC_OTHER_BP_ENDS'].split('-')),info["SC_SUBINTERVAL_INFOs"])
start_interval=min(map(lambda x:x[0],other_bps))
end_interval=max(map(lambda x:x[1],other_bps))
soft_clip_location = (start_interval+end_interval)/2
sc_bp=feature.start if abs(soft_clip_location-feature.start)>abs(soft_clip_location-feature.end) else feature.end
other_bp_field="%d-%d"%(max(sc_bp-pad,0),sc_bp+pad)
name="%d,%d,+,%s"%(soft_clip_location,sc_bp,other_bp_field)
return pybedtools.Interval(feature.chrom, start_interval, end_interval, name=name, score="1",
otherfields=[sv_type])
示例5: find_idp
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def find_idp(feature, wiggle):
n = len(feature.fields) / 2
if feature.chrom != feature.fields[n]:
return None
start_dup = feature.start
end_dup = feature.end
start_del = int(feature.fields[n + 1])
end_del = int(feature.fields[n + 2])
if abs(start_del - end_del) > (abs(start_dup - end_dup) - wiggle):
return None
dist_ends = [abs(start_del - start_dup), abs(end_del - end_dup)]
if min(dist_ends) > wiggle:
return None
del_pos = start_del if dist_ends[0] > dist_ends[1] else end_del
name = "%s,%s" % (feature.name, feature.fields[n + 3])
score = "%s,%s" % (feature.score, feature.fields[n + 4])
return pybedtools.Interval(feature.chrom, feature.start, feature.end,
name=name, score=score,
otherfields=["%d" % del_pos,
"%d-%d" % (start_del, end_del)])
示例6: filter_itxs
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def filter_itxs(feature):
n = len(feature.fields) / 2
del_interval_idp = map(int, feature.fields[7].split("-"))
del_interval_itx_1 = map(int,
feature.fields[n + 7].split(",")[0].split("-"))
del_interval_itx_2 = map(int,
feature.fields[n + 7].split(",")[1].split("-"))
if filter(lambda x: abs(x[0] - del_interval_idp[0]) + abs(
x[1] - del_interval_idp[1]) == 0,
[del_interval_itx_1, del_interval_itx_2]) and "LowQual" not in \
feature.fields[n + 4]:
return None
return pybedtools.Interval(feature.chrom, feature.start, feature.end,
name=feature.name,
score=feature.score,
otherfields=feature.fields[6:n])
示例7: to_bed_interval
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def to_bed_interval(self, sample_name):
if self.start <= 0:
return None
if self.sv_type not in ["DEL", "INS", "INV", "ITX", "CTX", "DUP"]: return None
# if not self.sub_intervals and list(self.sources)[0] == "HaplotypeCaller": return None
# if len(self.sources) == 1 and list(self.sources)[0] == "HaplotypeCaller": return None
if self.sv_type == "INS":
end = self.end + 1
elif self.sv_type in ["ITX","CTX"] :
end = self.start + 1
else:
end = self.end
info = self.get_info()
if self.sv_type in ["ITX", "CTX"]:
info["POS2"] = self.end
info["END"] = end
info["CHR2"] = self.chrom2
if not self.is_precise:
info.update({"IMPRECISE": True})
return pybedtools.Interval(self.chrom, self.start, end, name="%s,%s,%d,%s" % (
base64.b64encode(json.dumps(info)), self.sv_type, self.length,
";".join(self._get_svmethods())),
score=str(len(self.sources)))
示例8: add_weighted_score
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def add_weighted_score(in_bed, score_bed):
out_bed = in_bed.intersect(score_bed, wao=True).saveas(os.path.join(args.tmpdir, "score.bed"))
bed_array = []
last_interval = pybedtools.Interval("", 0, 0)
map_value = 0.0
for interval in out_bed:
if interval.chrom != last_interval.chrom or interval.start != last_interval.start or interval.end != last_interval.end:
if last_interval.chrom:
bed_array.append(tuple(last_interval.fields[:-5]) + (str(map_value),))
map_value = 0.0
last_interval = interval
if float(interval.fields[-1]) > 0:
map_value += float(interval.fields[-1]) * float(interval.fields[-2]) / float(interval.length)
if last_interval.chrom:
bed_array.append(tuple(last_interval.fields[:-5]) + (str(map_value),))
return pybedtools.BedTool(bed_array)
示例9: soft_clips_at_breakpoint
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def soft_clips_at_breakpoint(read, region):
"""
Returns True if the given pysam read maps up to the edge of the given
pybedtools.Interval, ``region`` and soft clips at that edge.
Two cases are possible:
1. The end of the read soft clips such that the read's reference end stops
at the breakpoint start and the end of the read is softclipped.
2. The beginning of the read soft clips such that the read's reference start
begins at the breakpoint end and the beginning of the read is softclipped.
In both cases, the read should be mapped in its best location in the
reference ("perfect mapping").
"""
return (
(read.reference_end == region.start and read.cigar[-1][0] == BAM_CSOFT_CLIP) or
(read.reference_start == region.end + 1 and read.cigar[0][0] == BAM_CSOFT_CLIP)
)
示例10: test_bed3
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def test_bed3(tmpdir):
bed_file = write_tmp('chr1\t1\t2\nchr1\t1\t3', tmpdir)
bt = BedDataset(bed_file)
assert bt.n_tasks == 0
assert len(bt) == 2
assert np.all(bt.df[0] == 'chr1')
assert bt[0] == (Interval("chr1", 1, 2), {})
assert bt[1] == (Interval("chr1", 1, 3), {})
示例11: test_bed3_labels
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def test_bed3_labels(tmpdir):
bed_file = write_tmp('chr1\t1\t2\t1\t0\nchr1\t1\t3\t0\t1', tmpdir)
bt = BedDataset(bed_file)
assert np.all(bt.get_targets() == np.array([[1, 0],
[0, 1]]))
assert len(bt) == 2
assert bt.n_tasks == 2
assert np.all(bt.df[0] == 'chr1')
assert bt[0][0] == Interval("chr1", 1, 2)
assert np.all(bt[0][1] == np.array([1, 0]))
assert bt[1][0] == Interval("chr1", 1, 3)
assert np.all(bt[1][1] == np.array([0, 1]))
assert len(bt) == 2
示例12: test_incl_excl_chromosomes
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def test_incl_excl_chromosomes(tmpdir):
bed_file = write_tmp(
'chr1\t1\t2\t1\t0\nchr2\t1\t3\t0\t1\nchr3\t1\t3\t0\t1', tmpdir)
bt = BedDataset(bed_file)
assert len(bt) == 3
bt = BedDataset(bed_file, incl_chromosomes=['chr1'])
assert len(bt) == 1
assert bt[0][0] == Interval("chr1", 1, 2)
bt = BedDataset(bed_file, excl_chromosomes=['chr1'])
assert len(bt) == 2
assert bt[0][0] == Interval("chr2", 1, 3)
示例13: test_tsvreader
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def test_tsvreader(tsv_file, num_chr, label_dtype):
ds = BedDataset(tsv_file, label_dtype=label_dtype, num_chr=num_chr)
interval, labels = ds[0]
assert isinstance(interval, Interval)
if not num_chr:
assert interval.chrom.startswith("chr")
assert isinstance(labels[0], label_dtype)
assert interval.start == 2
assert interval.end == 4
示例14: from_pybedtools
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def from_pybedtools(cls, interval):
"""Create the ranges object from `pybedtools.Interval`
# Arguments
interval: `pybedtools.Interval` instance
"""
return cls(chrom=interval.chrom,
start=interval.start,
end=interval.stop,
name=interval.name,
score=interval.score,
strand=interval.strand,
attrs=dict(interval.attrs or dict())
)
示例15: test_fasta_extractor_valid_intervals
# 需要導入模塊: import pybedtools [as 別名]
# 或者: from pybedtools import Interval [as 別名]
def test_fasta_extractor_valid_intervals():
extractor = FastaExtractor("tests/data/fasta_test.fa")
intervals = [Interval("chr1", 0, 10), Interval("chr2", 0, 10)]
expected_data = np.array(
[
[
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
],
[
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0.25, 0.25, 0.25, 0.25],
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0.25, 0.25, 0.25, 0.25],
],
],
dtype=np.float32,
)
data = extractor(intervals)
assert (data == expected_data).all()