本文整理汇总了Python中cadnano.strand.Strand.highIdx方法的典型用法代码示例。如果您正苦于以下问题:Python Strand.highIdx方法的具体用法?Python Strand.highIdx怎么用?Python Strand.highIdx使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cadnano.strand.Strand
的用法示例。
在下文中一共展示了Strand.highIdx方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from cadnano.strand import Strand [as 别名]
# 或者: from cadnano.strand.Strand import highIdx [as 别名]
def __init__(self, strandset: StrandSetT, strand: Strand, solo: bool = True):
super(RemoveStrandCommand, self).__init__("remove strands")
self._strandset = strandset
self._strand = strand
self._solo = solo
self._old_strand5p = strand.connection5p()
self._old_strand3p = strand.connection3p()
self._oligo = olg = strand.oligo()
part = strand.part()
# idxs = strand.idxs()
self.mids = (part.getModID(strand, strand.lowIdx()),
part.getModID(strand, strand.highIdx()))
# only create a new 5p oligo if there is a 3' connection
self._new_oligo5p = olg.shallowCopy() if self._old_strand5p else None
if olg.isCircular() or self._old_strand3p is None:
self._new_oligo3p = olg3p = None
if self._new_oligo5p:
self._new_oligo5p._setLoop(False)
else:
self._new_oligo3p = olg3p = olg.shallowCopy()
olg3p.setStrand5p(self._old_strand3p)
# color_list = styles.STAP_COLORS if strandset.isStaple() else prefs.SCAF_COLORS
color_list = pathstyles.STAP_COLORS
color = random.choice(color_list)
olg3p._setColor(color)
olg3p.refreshLength(emit_signals=True)
示例2: __init__
# 需要导入模块: from cadnano.strand import Strand [as 别名]
# 或者: from cadnano.strand.Strand import highIdx [as 别名]
def __init__(self, strand_low: Strand,
strand_high: Strand,
priority_strand: Strand):
super(MergeCommand, self).__init__("merge strands")
# Store strands
self._strand_low = strand_low
self._strand_high = strand_high
self._s_set = s_set = priority_strand.strandSet()
# Store oligos
self._new_oligo = priority_strand.oligo().shallowCopy()
self._s_low_oligo = s_low_olg = strand_low.oligo()
self._s_high_oligo = s_high_olg = strand_high.oligo()
# self._s_set_idx = low_strandset_idx
# update the new oligo length if it's not a loop
if s_low_olg != s_high_olg:
self._new_oligo._setLength(s_low_olg.length() + s_high_olg.length(),
emit_signals=True)
# Create the new_strand by copying the priority strand to
# preserve its properties
new_idxs = strand_low.lowIdx(), strand_high.highIdx()
new_strand = strand_low.shallowCopy()
new_strand.setIdxs(new_idxs)
new_strand.setConnectionHigh(strand_high.connectionHigh())
self._new_strand = new_strand
# Update the oligo for things like its 5prime end and isCircular
self._new_oligo._strandMergeUpdate(strand_low, strand_high, new_strand)
# set the new sequence by concatenating the sequence properly
if strand_low._sequence or strand_high._sequence:
tL = strand_low.totalLength()
tH = strand_high.totalLength()
seqL = strand_low._sequence if strand_low._sequence else "".join([" " for i in range(tL)])
seqH = strand_high._sequence if strand_high._sequence else "".join([" " for i in range(tH)])
if new_strand.isForward():
new_strand._sequence = seqL + seqH
else:
new_strand._sequence = seqH + seqL
示例3: __init__
# 需要导入模块: from cadnano.strand import Strand [as 别名]
# 或者: from cadnano.strand.Strand import highIdx [as 别名]
def __init__(self, strand: Strand, base_idx: int, update_sequence: bool = True):
super(SplitCommand, self).__init__("split strand")
# Store inputs
self._old_strand = strand
# TODO possibly implement selection preserving
# doc = strand.document()
# self.was_selected = was_selected = doc.isModelStrandSelected(strand)
# if was_selected:
# self.select_values = doc.getSelectedStrandValue(strand)
# else:
# self.select_values = (None, None)
old_sequence = strand._sequence
is5to3 = strand.isForward()
self._s_set = strand.strandSet()
self._old_oligo = oligo = strand.oligo()
# Create copies
self.strand_low = strand_low = strand.shallowCopy()
self.strand_high = strand_high = strand.shallowCopy()
if oligo.isCircular():
self._l_oligo = self._h_oligo = l_oligo = h_oligo = oligo.shallowCopy()
else:
self._l_oligo = l_oligo = oligo.shallowCopy()
self._h_oligo = h_oligo = oligo.shallowCopy()
color_list = pathstyles.STAP_COLORS
# Determine oligo retention based on strand priority
if is5to3: # strand_low has priority
i_new_low = base_idx
color_low = oligo.getColor()
color_high = random.choice(color_list)
olg5p, olg3p = l_oligo, h_oligo
std5p, std3p = strand_low, strand_high
else: # strand_high has priority
i_new_low = base_idx - 1
color_low = random.choice(color_list)
color_high = oligo.getColor()
olg5p, olg3p = h_oligo, l_oligo
std5p, std3p = strand_high, strand_low
# this is for updating a connected xover view object
# there is only ever one xover a strand is in charge of
self._strand3p = std3p
self._strand5p = std5p
# Update strand connectivity
strand_low.setConnectionHigh(None)
strand_high.setConnectionLow(None)
# Resize strands and update decorators
strand_low.setIdxs((strand.lowIdx(), i_new_low))
strand_high.setIdxs((i_new_low + 1, strand.highIdx()))
# Update the oligo for things like its 5prime end and isCircular
olg5p._strandSplitUpdate(std5p, std3p, olg3p, strand)
if not oligo.isCircular():
# Update the oligo color if necessary
l_oligo._setColor(color_low)
h_oligo._setColor(color_high)
# settle the oligo length
length = 0
for strand in std3p.generator3pStrand():
length += strand.totalLength()
# end for
olg5p._setLength(olg5p.length() - length, emit_signals=True)
olg3p._setLength(length, emit_signals=True)
# end if
if update_sequence and old_sequence:
if is5to3: # strand_low has priority
tL = strand_low.totalLength()
strand_low._sequence = old_sequence[0:tL]
strand_high._sequence = old_sequence[tL:]
else:
tH = strand_high.totalLength()
strand_high._sequence = old_sequence[0:tH]
strand_low._sequence = old_sequence[tH:]