Ejemplo n.º 1
0
    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== --
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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'])
Ejemplo n.º 5
0
    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'])
Ejemplo n.º 6
0
    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== --
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
 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'])
Ejemplo n.º 12
0
 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'])