def __init__(self, n=3, cap_front=True, cap_end=True): """Initialize an Alkane Compound. Args: n: Number of carbon atoms. cap_front: Add methyl group to beginning of chain ('down' port). cap_end: Add methyl group to end of chain ('up' port). """ if n < 2: raise ValueError('n must be 1 or more') super(Alkane, self).__init__() # Adjust length of Polmyer for absence of methyl terminations. if not cap_front: n += 1 if not cap_end: n += 1 chain = mb.Polymer(CH2(), n=n-2, port_labels=('up', 'down')) self.add(chain, 'chain') if cap_front: self.add(CH3(), "methyl_front") mb.equivalence_transform(self['chain'], self['chain']['up'], self['methyl_front']['up']) else: # Hoist port label to Alkane level. self.add(chain['up'], 'up', containment=False) if cap_end: self.add(CH3(), 'methyl_end') mb.equivalence_transform(self['methyl_end'], self['methyl_end']['up'], self['chain']['down']) else: # Hoist port label to Alkane level. self.add(chain['down'], 'down', containment=False) # -- ==alkane== --
def __init__(self): super(Ethane, self).__init__() self.add(CH3(), 'methyl1') self.add(CH3(), 'methyl2') mb.equivalence_transform(self.methyl1, self.methyl1.up, self.methyl2.up)
def __init__(self, n=3, cap_front=True, cap_end=True): if n < 1: raise Exception('n must be 1 or more') super(PegPolymer, self).__init__() if not cap_front: n += 1 if not cap_end: n += 1 chain = mb.Polymer(PegMonomer(), n=n-1, port_labels=('down', 'up')) self.add(chain, 'chain') if cap_front: self.add(CH3(), 'methyl_front') mb.equivalence_transform( self.chain, self.chain.up, self.methyl_front.up) else: self.add(chain.up, 'up', containment=False) if cap_end: self.add(CH3(), 'methyl_end') mb.equivalence_transform( self.methyl_end, self.methyl_end.up, self.chain.down) else: self.add(chain.down, 'down', containment=False)
def __init__(self): super(Hexane, self).__init__() self.add(Propane(), 'propane1') self.add(Propane(), 'propane2') mb.equivalence_transform( self['propane1'], self['propane1']['down'], self['propane2']['down'])
def __init__(self): super(Hexane, self).__init__() self.add(Propane(), 'propane1') self.add(Propane(), 'propane2') mb.equivalence_transform(self['propane1'], self['propane1']['down'], self['propane2']['down'])
def __init__(self): """Connect two methyl groups to form an ethane. """ super(Ethane, self).__init__() self.add(CH3(), "methyl1") self.add(CH3(), "methyl2") mb.equivalence_transform(self['methyl1'], self['methyl1']['up'], self['methyl2']['up']) # -- ==ethane== --
def __init__(self, chain_length): super(AlkylSilane, self).__init__() alkane = Alkane(chain_length, cap_end=False) self.add(alkane, 'alkane') silane = Silane() self.add(silane, 'silane') mb.equivalence_transform(self['alkane'], self['alkane']['down'], self['silane']['up']) # Hoist silane port to AlkylSilane level. self.add(silane['down'], 'down', containment=False)
def __init__(self, chain_length): super(PegPolymerSilane, self).__init__() peg_polymer = PegPolymer(chain_length, cap_end=False) self.add(peg_polymer, 'peg_polymer') silane = Silane() self.add(silane, 'silane') mb.equivalence_transform( self.peg_polymer, self.peg_polymer.down, self.silane.up) self.add(silane.down, 'down', containment=False)
def __init__(self, chain_length): super(AlkylSilane, self).__init__() alkane = Alkane(chain_length, cap_end=False) self.add(alkane, 'alkane') silane = Silane() self.add(silane, 'silane') mb.equivalence_transform(self.alkane, self.alkane.down, self.silane.up) # Hoist silane port to AlkylSilane level. self.add(silane.down, 'down', containment=False)
def __init__(self, chain_length=4, alpha=pi/4): super(Brush, self).__init__() # Add parts self.add(Silane(), label='silane') self.add(Initiator(), label='initiator') self.add(mb.Polymer(MPC(alpha=alpha), n=chain_length, port_labels=('up', 'down')), label='pmpc') self.add(CH3(), label='methyl') mb.equivalence_transform(self['initiator'], self['initiator']['down'], self['silane']['up']) mb.equivalence_transform(self['pmpc'], self['pmpc']['down'], self['initiator']['up']) mb.equivalence_transform(self['methyl'], self['methyl']['up'], self['pmpc']['up']) # Make self.port point to silane.bottom_port self.add(self['silane']['down'], label='down', containment=False)
def test_equivalence_transform_deprectation_warning(self, ch2): ch22 = mb.clone(ch2) with pytest.warns(DeprecationWarning): mb.equivalence_transform(ch22, from_positions=ch22['up'], to_positions=ch2['down'])