Exemple #1
0
def attach(partmono, attach1, monomer, number):  # needs more work, very specific right now
    monomernew = monomer
    num = int(number)
    for run in range(0, num):
        add = int(monomernew.atoms[-1].atom_id)
        newalist = []
        newblist = []
        # remove bonds in old attach and remove the hydrogen as well
        for i in range(len(attach1.atom_bonds)):
            if attach1.atom_bonds[i].atom_type == "H":  # this has to do in a specific manner, may have to change
                oldh = attach1.atom_bonds[i]
                attachid = attach1.atom_id
        abond = bond.get_bond(attach1, oldh, monomernew.bonds)
        monomernew.bonds.remove(abond)
        monomernew.atoms.remove(oldh)

        # take partmono and offset all of its atoms to create a good atomlist
        for i in range(len(partmono)):
            newalist.append(copy.deepcopy(partmono[i]))
            newalist[i].atom_id = int(partmono[i].atom_id) + add
            newalist[i].x_pos = float(newalist[i].x_pos) + (run + 1) * -4.000
            print (run + 1) * 5.000

        # generate new alist, put this kind of stuff into one big method or something
        for i in range(len(newalist)):
            for j in range(len(newalist[i].atom_bonds)):
                newalist[i].atom_bonds[j] = atom.get_atombyid(newalist, int(newalist[i].atom_bonds[j].atom_id) + add)

        # generate new blist
        newblist = getpartblist(partmono, monomer, newalist, add)
        for i in range(len(newblist)):
            if newblist[i].bond_slave == None:
                newblist.remove(newblist[i])
                break
        a5add = atom.get_atombyid(newalist, 5 + add)
        a37add = atom.get_atombyid(newalist, 37 + add)

        newblist.append(bond.Bond(1, a5add, a37add))

        # remove the nonetype from addloc so it doesnt f**k shit up
        # add this to newmonomer
        for i in range(len(newalist)):
            monomernew.atoms.append(newalist[i])
        for i in range(len(newblist)):
            monomernew.bonds.append(newblist[i])

        print newalist[0].atom_id
        print monomer.atoms[0].atom_id
        print newalist[0].atom_bonds[1].atom_id
        print newblist[0].bond_master.atom_id
        print newalist[0].x_pos
        print monomer.atoms[0].x_pos

        attach1 = atom.get_atombyid(newalist, int(attachid) + add)

    return monomernew
Exemple #2
0
def getpartblist(partmono, monomer, newatoms, add):
    partmonobonds = []
    for i in range(len(partmono)):
        for j in range(len(monomer.bonds)):
            if monomer.bonds[j].bond_master == partmono[i]:
                bondscopy = copy.deepcopy(monomer.bonds[j])
                newmast = atom.get_atombyid(newatoms, int(monomer.bonds[j].bond_master.atom_id) + add)
                newslave = atom.get_atombyid(newatoms, int(monomer.bonds[j].bond_slave.atom_id) + add)
                bondscopy.bond_master = newmast
                bondscopy.bond_slave = newslave
                partmonobonds.append(bondscopy)
    return partmonobonds