コード例 #1
0
def make_purine(residue, height = 0.4, scale = 1.2):
    """Creates vertices and normals for purines: Adenine Guanine"""
    atoms = residue.atoms
    names = [name.split("@")[0] for name in atoms.name]    
    idx=names.index('N9'); N9 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C8'); C8 =  Numeric.array(atoms[idx].coords)
    idx=names.index('N7'); N7 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C5'); C5 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C4'); C4 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C6'); C6 =  Numeric.array(atoms[idx].coords)
    idx=names.index('N1'); N1 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C2'); C2 =  Numeric.array(atoms[idx].coords)
    idx=names.index('N3'); N3 =  Numeric.array(atoms[idx].coords)
    N9_C8 = C8-N9
    N9_C4 = C4-N9
    C8_C4 = height*norm(C4-C8)
    normal = height*Numeric.array(crossProduct(N9_C8, N9_C4, normal=True))
    #center1 = (N9+C8+N7+C4+C5)/5.0
    #center2 = (C4+C5+C6+N1+C2+N3)/6.0    
    center2 = (C4+C5+C6+N1+C2+N3+N9+C8+N7)/9.0    
    center1 = center2
    vertices = Numeric.zeros((20,3),Numeric.Float)

    vertices[0] = scale*(C8 - normal - center1) + center1
    vertices[1] = scale*(N7 - normal - center1) + center1
    vertices[2] = scale*(C5 - normal - center2) + center2
    vertices[3] = scale*(C4 - normal - center2) + center2
    vertices[4] = scale*(C6 - normal - center2) + center2
    vertices[5] = scale*(N1 - normal - center2) + center2      
    vertices[6] = scale*(C2 - normal - center2) + center2      
    vertices[7] = scale*(N3 - normal - center2) + center2    
    
    vertices[8] = scale*(C8 + normal - center1) + center1
    vertices[9] = scale*(N7 + normal - center1) + center1
    vertices[10] = scale*(C5 + normal - center2) + center2
    vertices[11] = scale*(C4 + normal - center2) + center2
    vertices[12] = scale*(C6 + normal - center2) + center2      
    vertices[13] = scale*(N1 + normal - center2) + center2      
    vertices[14] = scale*(C2 + normal - center2) + center2
    vertices[15] = scale*(N3 + normal - center2) + center2    
    
    vertices[16] = scale*(N9 - C8_C4 - normal - center1) + center1     
    vertices[17] = scale*(N9 - C8_C4 + normal - center1) + center1     
    vertices[18] = scale*(N9 + C8_C4 + normal - center1) + center1     
    vertices[19] = scale*(N9 + C8_C4 - normal - center1) + center1

    
    faces = Numeric.array([[19,3,2,1,0,16,16],
                       [17,8,9,10,11,18,18], 
                       [3,7,6,5,4,2,2],
                       [10,12,13,14,15,11,11],
                       [16,0,8,17,17,17,17], [0,1,9,8,8,8,8], [1,2,10,9,9,9,9], 
                           [2,4,12,10,10,10,10], 
                       [4,5,13,12,12,12,12], [5,6,14,13,13,13,13], 
                           [6,7,15,14,14,14,14],
                           [7,3,11,15,15,15,15],
                       [3,19,18,11,11,11,11] ])
    return vertices,faces
コード例 #2
0
ファイル: NucleicBases.py プロジェクト: lisarosalina/App
def make_pyrimidine(residue, height=0.4, scale=1.2):
    """Creates vertices and normals for pyrimidines:Thymine  Uracil  Cytosine"""
    atoms = residue.atoms
    names = [name.split("@")[0] for name in atoms.name]
    idx = names.index('N1')
    N1 = Numeric.array(atoms[idx].coords)
    idx = names.index('C2')
    C2 = Numeric.array(atoms[idx].coords)
    idx = names.index('N3')
    N3 = Numeric.array(atoms[idx].coords)
    idx = names.index('C4')
    C4 = Numeric.array(atoms[idx].coords)
    idx = names.index('C5')
    C5 = Numeric.array(atoms[idx].coords)
    idx = names.index('C6')
    C6 = Numeric.array(atoms[idx].coords)
    N1_C2 = C2 - N1
    N1_C6 = C6 - N1
    C2_C6 = height * norm(C6 - C2)
    normal = height * Numeric.array(crossProduct(N1_C2, N1_C6, normal=True))
    center = (N1 + C2 + N3 + C4 + C5 + C6) / 6.0
    vertices = Numeric.zeros((14, 3), Numeric.Float)
    vertices[0] = scale * (C2 - normal - center) + center
    vertices[1] = scale * (N3 - normal - center) + center
    vertices[2] = scale * (C4 - normal - center) + center
    vertices[3] = scale * (C5 - normal - center) + center
    vertices[4] = scale * (C6 - normal - center) + center

    vertices[5] = scale * (C2 + normal - center) + center
    vertices[6] = scale * (N3 + normal - center) + center
    vertices[7] = scale * (C4 + normal - center) + center
    vertices[8] = scale * (C5 + normal - center) + center
    vertices[9] = scale * (C6 + normal - center) + center
    vertices[10] = scale * (N1 - C2_C6 - normal - center) + center
    vertices[11] = scale * (N1 - C2_C6 + normal - center) + center
    vertices[12] = scale * (N1 + C2_C6 + normal - center) + center
    vertices[13] = scale * (N1 + C2_C6 - normal - center) + center

    faces = Numeric.array([[13, 4, 3, 2, 1, 0, 10], [11, 5, 6, 7, 8, 9, 12],
                           [0, 5, 11, 10, 10, 10, 10], [
                               1,
                               6,
                               5,
                               0,
                               0,
                               0,
                               0,
                           ], [2, 7, 6, 1, 1, 1, 1], [3, 8, 7, 2, 2, 2, 2],
                           [4, 9, 8, 3, 3, 3, 3], [13, 12, 9, 4, 4, 4, 4]])
    return vertices, faces
コード例 #3
0
def make_pyrimidine(residue, height = 0.4, scale = 1.2):
    """Creates vertices and normals for pyrimidines:Thymine  Uracil  Cytosine"""
    atoms = residue.atoms
    names = [name.split("@")[0] for name in atoms.name]    
    idx=names.index('N1'); N1 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C2'); C2 =  Numeric.array(atoms[idx].coords)
    idx=names.index('N3'); N3 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C4'); C4 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C5'); C5 =  Numeric.array(atoms[idx].coords)
    idx=names.index('C6'); C6 =  Numeric.array(atoms[idx].coords)
    N1_C2 = C2-N1
    N1_C6 = C6-N1
    C2_C6 = height*norm(C6-C2)
    normal = height*Numeric.array(crossProduct(N1_C2, N1_C6, normal=True))
    center = (N1+C2+N3+C4+C5+C6)/6.0
    vertices = Numeric.zeros((14,3),Numeric.Float)
    vertices[0] = scale*(C2 - normal - center) + center
    vertices[1] = scale*(N3 - normal - center) + center
    vertices[2] = scale*(C4 - normal - center) + center
    vertices[3] = scale*(C5 - normal - center) + center
    vertices[4] = scale*(C6 - normal - center) + center
    
    vertices[5] = scale*(C2 + normal - center) + center
    vertices[6] = scale*(N3 + normal - center) + center
    vertices[7] = scale*(C4 + normal - center) + center
    vertices[8] = scale*(C5 + normal - center) + center
    vertices[9] = scale*(C6 + normal - center) + center
    vertices[10] = scale*(N1 - C2_C6 - normal - center) + center
    vertices[11] = scale*(N1 - C2_C6 + normal - center) + center
    vertices[12] = scale*(N1 + C2_C6 + normal - center) + center
    vertices[13] = scale*(N1 + C2_C6 - normal - center) + center
    
    faces = Numeric.array([[13,4,3,2,1,0,10],
                           [11,5,6,7,8,9,12],
                           [0,5,11,10,10,10,10], [1,6,5,0,0,0,0,], [2,7,6,1,1,1,1], 
                           [3,8,7,2,2,2,2], [4,9,8,3,3,3,3], [13,12,9,4,4,4,4]])
    return vertices, faces
コード例 #4
0
ファイル: NucleicBases.py プロジェクト: lisarosalina/App
def make_purine(residue, height=0.4, scale=1.2):
    """Creates vertices and normals for purines: Adenine Guanine"""
    atoms = residue.atoms
    names = [name.split("@")[0] for name in atoms.name]
    idx = names.index('N9')
    N9 = Numeric.array(atoms[idx].coords)
    idx = names.index('C8')
    C8 = Numeric.array(atoms[idx].coords)
    idx = names.index('N7')
    N7 = Numeric.array(atoms[idx].coords)
    idx = names.index('C5')
    C5 = Numeric.array(atoms[idx].coords)
    idx = names.index('C4')
    C4 = Numeric.array(atoms[idx].coords)
    idx = names.index('C6')
    C6 = Numeric.array(atoms[idx].coords)
    idx = names.index('N1')
    N1 = Numeric.array(atoms[idx].coords)
    idx = names.index('C2')
    C2 = Numeric.array(atoms[idx].coords)
    idx = names.index('N3')
    N3 = Numeric.array(atoms[idx].coords)
    N9_C8 = C8 - N9
    N9_C4 = C4 - N9
    C8_C4 = height * norm(C4 - C8)
    normal = height * Numeric.array(crossProduct(N9_C8, N9_C4, normal=True))
    #center1 = (N9+C8+N7+C4+C5)/5.0
    #center2 = (C4+C5+C6+N1+C2+N3)/6.0
    center2 = (C4 + C5 + C6 + N1 + C2 + N3 + N9 + C8 + N7) / 9.0
    center1 = center2
    vertices = Numeric.zeros((20, 3), Numeric.Float)

    vertices[0] = scale * (C8 - normal - center1) + center1
    vertices[1] = scale * (N7 - normal - center1) + center1
    vertices[2] = scale * (C5 - normal - center2) + center2
    vertices[3] = scale * (C4 - normal - center2) + center2
    vertices[4] = scale * (C6 - normal - center2) + center2
    vertices[5] = scale * (N1 - normal - center2) + center2
    vertices[6] = scale * (C2 - normal - center2) + center2
    vertices[7] = scale * (N3 - normal - center2) + center2

    vertices[8] = scale * (C8 + normal - center1) + center1
    vertices[9] = scale * (N7 + normal - center1) + center1
    vertices[10] = scale * (C5 + normal - center2) + center2
    vertices[11] = scale * (C4 + normal - center2) + center2
    vertices[12] = scale * (C6 + normal - center2) + center2
    vertices[13] = scale * (N1 + normal - center2) + center2
    vertices[14] = scale * (C2 + normal - center2) + center2
    vertices[15] = scale * (N3 + normal - center2) + center2

    vertices[16] = scale * (N9 - C8_C4 - normal - center1) + center1
    vertices[17] = scale * (N9 - C8_C4 + normal - center1) + center1
    vertices[18] = scale * (N9 + C8_C4 + normal - center1) + center1
    vertices[19] = scale * (N9 + C8_C4 - normal - center1) + center1

    faces = Numeric.array([[19, 3, 2, 1, 0, 16, 16],
                           [17, 8, 9, 10, 11, 18, 18], [3, 7, 6, 5, 4, 2, 2],
                           [10, 12, 13, 14, 15, 11, 11],
                           [16, 0, 8, 17, 17, 17, 17], [0, 1, 9, 8, 8, 8, 8],
                           [1, 2, 10, 9, 9, 9, 9], [2, 4, 12, 10, 10, 10, 10],
                           [4, 5, 13, 12, 12, 12, 12],
                           [5, 6, 14, 13, 13, 13, 13],
                           [6, 7, 15, 14, 14, 14, 14],
                           [7, 3, 11, 15, 15, 15, 15],
                           [3, 19, 18, 11, 11, 11, 11]])
    return vertices, faces