本文整理汇总了Python中FUNC类的典型用法代码示例。如果您正苦于以下问题:Python FUNC类的具体用法?Python FUNC怎么用?Python FUNC使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了FUNC类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: bbGetAngle
def bbGetAngle(self, r, ca, ss):
import FUNC, IO
import math
# Elnedyn takes angles from structure, with fc=40
return (
math.acos(FUNC.cos_angle([i - j for i, j in zip(ca[0], ca[1])], [i - j for i, j in zip(ca[2], ca[1])]))
/ IO.d2r,
40,
)
示例2: conect
def conect(self):
# Return pairs of numbers that should be CONECTed
# First extract the backbone IDs
cg = self.cg()
bb = [i+1 for i, j in zip(range(len(cg)), cg) if j[0] == "BB"]
bb = zip(bb, bb[1:]+[len(bb)])
# Set the backbone CONECTs (check whether the distance is consistent with binding)
conect = [(i, j) for i, j in bb[:-1] if FUNC.distance2(cg[i-1][4:7], cg[j-1][4:7]) < 14]
# Now add CONECTs for sidechains
for i, j in bb:
nsc = j-i-1
示例3: bbGetAngle
def bbGetAngle(self,r,ca,ss):
# Check is it DNA residue
if r[0] in MAP.dnares3:
return ca in self.dnaBbAngleDictC.keys() and self.dnaBbAngleDictC[ca] or None
# RNA is not implemented properly yet
elif r[0] in MAP.rnares3:
return ca in self.rnaBbAngleDictC.keys() and self.rnaBbAngleDictC[ca] or None
# For protein
else:
import FUNC,IO
import math
# Elnedyn takes angles from structure, with fc=40
return (math.acos(FUNC.cos_angle([i-j for i,j in zip(ca[0],ca[1])],[i-j for i,j in zip(ca[2],ca[1])]))/IO.d2r, 40)
示例4: bbGetBond
def bbGetBond(self,r,ca,ss):
# Retrieve parameters for each residue from tables defined above
# Check is it DNA residue
if r[0] in MAP.dnares3:
return ca in self.dnaBbBondDictC.keys() and self.dnaBbBondDictC[ca] or None
# RNA is not implemented properly yet
elif r[0] in MAP.rnares3:
return ca in self.rnaBbBondDictC.keys() and self.rnaBbBondDictC[ca] or None
# If it's protein
else:
import FUNC
import math
# The 150000 forceconstant gave an error message, turning to constraints would be better.
return ( math.sqrt(FUNC.distance2(ca[0],ca[1]))/10., None )
示例5: pdbBoxString
def pdbBoxString(box):
# Box vectors
u, v, w = box[0:3], box[3:6], box[6:9]
# Box vector lengths
nu, nv, nw = [math.sqrt(FUNC.norm2(i)) for i in (u, v, w)]
# Box vector angles
alpha = nv*nw == 0 and 90 or math.acos(FUNC.cos_angle(v, w))/d2r
beta = nu*nw == 0 and 90 or math.acos(FUNC.cos_angle(u, w))/d2r
gamma = nu*nv == 0 and 90 or math.acos(FUNC.cos_angle(u, v))/d2r
return pdbBoxLine % (10*FUNC.norm(u), 10*FUNC.norm(v), 10*FUNC.norm(w), alpha, beta, gamma)
示例6: rubberBands
def rubberBands(atomList, lowerBound, upperBound, decayFactor, decayPower, forceConstant, minimumForce):
out = []
u2 = upperBound**2
while len(atomList) > 3:
bi, xi = atomList.pop(0)
for bj, xj in atomList[2:]:
# Mind the nm/A conversion -- This has to be standardized! Global use of nm?
d2 = FUNC.distance2(xi, xj)/100
if d2 < u2:
dij = math.sqrt(d2)
fscl = decayFunction(dij, lowerBound, decayFactor, decayPower)
if fscl*forceConstant > minimumForce:
out.append({"atoms": (bi, bj), "parameters": (dij, "RUBBER_FC*%f" % fscl)})
return out
示例7: add_dummy
def add_dummy(beads, dist=0.11, n=2):
# Generate a random vector in a sphere of -1 to +1, to add to the bead position
v = [random.random()*2.-1, random.random()*2.-1, random.random()*2.-1]
# Calculated the length of the vector and divide by the final distance of the dummy bead
norm_v = FUNC.norm(v)/dist
# Resize the vector
vn = [i/norm_v for i in v]
# m sets the direction of the added vector, currently only works when adding one or two beads.
m = 1
for j in range(n):
newName = 'SCD'
newBead = (newName, tuple([i+(m*j) for i, j in zip(beads[-1][1], vn)]), beads[-1][2])
beads.append(newBead)
m *= -2
return beads
示例8: __str__
def __str__(self):
if not self.atoms or not self.parameters:
return ""
s = ["%5d" % i for i in self.atoms]
# For exclusions, no type is defined, which equals -1
if self.type != -1: s.append(" %5d " % self.type)
# Print integers and floats in proper format and neglect None terms
s.extend([FUNC.formatString(i) for i in self.parameters if i is not None])
if self.comments:
s.append(';')
if type(self.comments) == str:
s.append(self.comments)
else:
s.extend([str(i) for i in self.comments])
return " ".join(s)
示例9: rubberBands
def rubberBands(atomList,lowerBound,upperBound,decayFactor,decayPower,forceConstant,minimumForce):
out = []
u2 = upperBound**2
while len(atomList) > 3:
bi,xi = atomList.pop(0)
# This is a bit weird (=wrong I think) way of doing the cutoff...
#for bj,xj in atomList[2:]:
for bj,xj in atomList:
# Mind the nm/A conversion -- This has to be standardized! Global use of nm?
d2 = FUNC.distance2(xi,xj)/100
#if bi==73 and bj==79:
# print xi, xj, d2
if d2 < u2:
dij = math.sqrt(d2)
fscl = decayFunction(dij,lowerBound,decayFactor,decayPower)
if fscl*forceConstant > minimumForce:
out.append({"atoms":(bi,bj),"parameters": (dij,"RUBBER_FC*%f"%fscl)})
return out
示例10: __init__
def __init__(self):
import SS,FUNC,IO
# parameters are defined here for the following (protein) forcefields:
self.name = 'elnedyn22'
# Charged types:
self.charges = {"Qd":1, "Qa":-1, "SQd":1, "SQa":-1, "RQd":1, "AQa":-1} #@#
#----+---------------------+
## A | BACKBONE PARAMETERS |
#----+---------------------+
#
# bbss lists the one letter secondary structure code
# bbdef lists the corresponding default backbone beads
# bbtyp lists the corresponding residue specific backbone beads
#
# bbd lists the structure specific backbone bond lengths
# bbkb lists the corresponding bond force constants
#
# bba lists the structure specific angles
# bbka lists the corresponding angle force constants
#
# bbd lists the structure specific dihedral angles
# bbkd lists the corresponding force constants
#
# -=NOTE=-
# if the secondary structure types differ between bonded atoms
# the bond is assigned the lowest corresponding force constant
#
# -=NOTE=-
# if proline is anywhere in the helix, the BBB angle changes for
# all residues
#
###############################################################################################
## BEADS ## #
# F E H 1 2 3 T S C # SS one letter
self.bbdef = FUNC.spl(" N0 Nda N0 Nd Na Nda Nda P5 P5") # Default beads #@#
self.bbtyp = { # #@#
"ALA": FUNC.spl(" C5 N0 C5 N0 N0 N0 N0 P4 P4"), # ALA specific #@#
"PRO": FUNC.spl(" C5 N0 C5 N0 Na N0 N0 P4 P4"), # PRO specific #@#
"HYP": FUNC.spl(" C5 N0 C5 N0 N0 N0 N0 P4 P4") # HYP specific #@#
} # #@#
## BONDS ## #
self.bbldef = (.365, .350, .350, .350, .350, .350, .350, .350, .350) # BB bond lengths #@#
self.bbkb = (1250, 1250, 1250, 1250, 1250, 1250, 500, 400, 400) # BB bond kB #@#
self.bbltyp = {} # #@#
self.bbkbtyp = {} # #@#
## ANGLES ## #
self.bbadef = (119.2, 134, 96, 96, 96, 96, 100, 130, 127) # BBB angles #@#
self.bbka = ( 150, 25, 700, 700, 700, 700, 25, 25, 25) # BBB angle kB #@#
self.bbatyp = { # #@#
"PRO": ( 119.2,134, 98, 98, 98, 98, 100, 130, 127), # PRO specific #@#
"HYP": ( 119.2,134, 98, 98, 98, 98, 100, 130, 127) # PRO specific #@#
} # #@#
self.bbkatyp = { # #@#
"PRO": ( 150, 25, 100, 100, 100, 100, 25, 25, 25), # PRO specific #@#
"HYP": ( 150, 25, 100, 100, 100, 100, 25, 25, 25) # PRO specific #@#
} # #@#
## DIHEDRALS ## #
self.bbddef = (90.7, 0, -120, -120, -120, -120) # BBBB dihedrals #@#
self.bbkd = ( 100, 10, 400, 400, 400, 400) # BBBB kB #@#
self.bbdmul = ( 1, 1, 1, 1, 1, 1) # BBBB mltplcty #@#
self.bbdtyp = {} # #@#
self.bbkdtyp = {} # #@#
#
###############################################################################################
# Some Forcefields use the Ca position to position the BB-bead (me like!)
self.ca2bb = True
# BBS angle, equal for all ss types
# Connects BB(i-1),BB(i),SC(i), except for first residue: BB(i+1),BB(i),SC(i)
# ANGLE Ka
self.bbsangle = [ 100, 25] #@#
# Bonds for extended structures (more stable than using dihedrals)
# LENGTH FORCE
self.ebonds = { #@#
'short': [ .640, 2500], #@#
'long' : [ .970, 2500] #@#
} #@#
#----+-----------------------+
## B | SIDE CHAIN PARAMETERS |
#----+-----------------------+
# Sidechain parameters for Elnedyn. (read from cg-2.1.dat).
# For HIS the order of bonds is changed and a bond with fc=0 is added.
# In the elnedyn2, TRP has an extra, cross-ring constraint
self.sidechains = {
#RES# BEADS BONDS ANGLES DIHEDRALS
'TRP': [FUNC.spl("SC4 SNd SC5 SC5"), [(0.255,73000), (0.220,None), (0.250,None), (0.280,None), (0.255,None), (0.35454,None)], [(142,30), (143,20), (104,50)], [(180,200)]],
'TYR': [FUNC.spl("SC4 SC4 SP1"), [(0.335, 6000), (0.335,6000), (0.240,None), (0.310,None), (0.310,None)], [(70,100), (130, 50)]],
'PHE': [FUNC.spl("SC5 SC5 SC5"), [(0.340, 7500), (0.340,7500), (0.240,None), (0.240,None), (0.240,None)], [(70,100), (125,100)]],
'HIS': [FUNC.spl("SC4 SP1 SP1"), [(0.195, None), (0.193,None), (0.295,None), (0.216,None)], [(135,100),(115, 50)]],
'HIH': [FUNC.spl("SC4 SP1 SP1"), [(0.195, None), (0.193,None), (0.295,None), (0.216,None)], [(135,100),(115, 50)]],
#.........这里部分代码省略.........
示例11: naming
##########################
## 4 # FG -> CG MAPPING ## -> @MAP <-
##########################
import FUNC
dnares3 = " DA DC DG DT"
dnares1 = " dA dC dG dT"
rnares3 = " A C G U"
rnares1 = " rA rC rG rU"
# Amino acid nucleic acid codes:
# The naming (AA and '3') is not strictly correct when adding DNA/RNA, but we keep it like this for consistincy.
AA3 = FUNC.spl("TRP TYR PHE HIS HIH ARG LYS CYS ASP GLU ILE LEU MET ASN PRO HYP GLN SER THR VAL ALA GLY"+dnares3+rnares3) #@#
AA1 = FUNC.spl(" W Y F H H R K C D E I L M N P O Q S T V A G"+dnares1+rnares1) #@#
# Dictionaries for conversion from one letter code to three letter code v.v.
AA123, AA321 = FUNC.hash(AA1, AA3), FUNC.hash(AA3, AA1)
# Residue classes:
protein = AA3[:-8] # remove eight to get rid of DNA/RNA here.
water = FUNC.spl("HOH SOL TIP")
lipids = FUNC.spl("DPP DHP DLP DMP DSP POP DOP DAP DUP DPP DHP DLP DMP DSP PPC DSM DSD DSS")
nucleic = FUNC.spl("DAD DCY DGU DTH ADE CYT GUA THY URA DA DC DG DT")
residueTypes = dict(
[(i, "Protein") for i in protein ] +
[(i, "Water") for i in water ] +
[(i, "Lipid") for i in lipids ] +
[(i, "Nucleic") for i in nucleic ]
)
示例12: structure
# dihedral definitions, which are not present for coil and termini
#
ss_names = {
"F": "Collagenous Fiber", #@#
"E": "Extended structure (beta sheet)", #@#
"H": "Helix structure", #@#
"1": "Helix start (H-bond donor)", #@#
"2": "Helix end (H-bond acceptor)", #@#
"3": "Ambivalent helix type (short helices)", #@#
"T": "Turn", #@#
"S": "Bend", #@#
"C": "Coil", #@#
}
bbss = ss_names.keys()
bbss = FUNC.spl(" F E H 1 2 3 T S C") # SS one letter
# The following dictionary contains secondary structure types as assigned by
# different programs. The corresponding Martini secondary structure types are
# listed in cgss
#
# NOTE:
# Each list of letters in the dictionary ss should exactly match the list
# in cgss.
#
ssdefs = {
"dssp": list(".HGIBETSC~"), # DSSP one letter secondary structure code #@#
"pymol": list(".H...S...L"), # Pymol one letter secondary structure code #@#
"gmx": list(".H...ETS.C"), # Gromacs secondary structure dump code #@#
"self": list("FHHHEETSCC") # Internal CG secondary structure codes #@#
示例13: check_merge
def check_merge(chains, m_list=[], l_list=[], ss_cutoff=0):
chainIndex = range(len(chains))
if 'all' in m_list:
logging.info("All chains will be merged in a single moleculetype.")
return chainIndex, [chainIndex]
chainID = [chain.id for chain in chains]
# Mark the combinations of chains that need to be merged
merges = []
if m_list:
# Build a dictionary of chain IDs versus index
# To give higher priority to top chains the lists are reversed
# before building the dictionary
chainIndex.reverse()
chainID.reverse()
dct = dict(zip(chainID, chainIndex))
chainIndex.reverse()
# Convert chains in the merge_list to numeric, if necessary
# NOTE The internal numbering is zero-based, while the
# command line chain indexing is one-based. We have to add
# one to the number in the dictionary to bring it on par with
# the numbering from the command line, but then from the
# result we need to subtract one again to make indexing
# zero-based
merges = [[(i.isdigit() and int(i) or dct[i]+1)-1 for i in j] for j in m_list]
for i in merges:
i.sort()
# Rearrange merge list to a list of pairs
pairs = [(i[j], i[k]) for i in merges for j in range(len(i)-1) for k in range(j+1, len(i))]
# Check each combination of chains for connections based on
# ss-bridges, links and distance restraints
for i in chainIndex[:-1]:
for j in chainIndex[i+1:]:
if (i, j) in pairs:
continue
# Check whether any link links these two groups
for a, b in l_list:
if ((a in chains[i] and b in chains[j]) or (a in chains[j] and b in chains[i])):
logging.info("Merging chains %d and %d to allow link %s" % (i+1, j+1, str((a, b))))
pairs.append(i < j and (i, j) or (j, i))
break
if (i, j) in pairs:
continue
# Check whether any cystine bond given links these two groups
#for a,b in s_list:
# if ((a in chains[i] and b in chains[j]) or
# (a in chains[j] and b in chains[i])):
# logging.info("Merging chains %d and %d to allow cystine bridge"%(i+1,j+1))
# pairs.append( i<j and (i,j) or (j,i) )
# break
#if (i,j) in pairs:
# continue
# Check for cystine bridges based on distance
if not ss_cutoff:
continue
# Get SG atoms from cysteines from either chain
# Check this pair of chains
for cysA in chains[i]["CYS"]:
for cysB in chains[j]["CYS"]:
d2 = FUNC.distance2(cysA["SG"][4:7], cysB["SG"][4:7])
if d2 <= ss_cutoff:
logging.info("Found SS contact linking chains %d and %d (%f nm)" % (i+1, j+1, math.sqrt(d2)/10))
pairs.append((i, j))
break
if (i, j) in pairs:
break
# Sort the combinations
pairs.sort(reverse=True)
merges = []
while pairs:
merges.append(set([pairs[-1][0]]))
for i in range(len(pairs)-1, -1, -1):
if pairs[i][0] in merges[-1]:
merges[-1].add(pairs.pop(i)[1])
elif pairs[i][1] in merges[-1]:
merges[-1].add(pairs.pop(i)[0])
merges = [list(i) for i in merges]
for i in merges:
i.sort()
order = [j for i in merges for j in i]
if merges:
logging.warning("Merging chains.")
logging.warning("This may change the order of atoms and will change the number of topology files.")
logging.info("Merges: " + ", ".join([str([j+1 for j in i]) for i in merges]))
if len(merges) == 1 and len(merges[0]) > 1 and set(merges[0]) == set(chainIndex):
logging.info("All chains will be merged in a single moleculetype")
# Determine the order for writing; merged chains go first
merges.extend([[j] for j in chainIndex if j not in order])
order.extend([j for j in chainIndex if j not in order])
#.........这里部分代码省略.........
示例14: contacts
def contacts(atoms, cutoff=5):
rla = range(len(atoms))
crd = [atom[4:] for atom in atoms]
return [(i, j) for i in rla[:-1] for j in rla[i+1:]
if FUNC.distance2(crd[i], crd[j]) < cutoff]
示例15:
conf = CONFIG.config
# settings ---------------------------------
# 0 flow control OFF
res = MDM.send('AT&K0\r', 0)
res = MDM.receive(10)
# Konfiguration laden ---------------------------------------------------
res = CONFIG.initConfig()
SER.set_speed(conf['COM'],'8N1')
a = SER.send('\r\n***************************************************************************')
a = SER.send('\r\n* Start Terminal Connection - Triptec Service *')
a = SER.send('\r\n***************************************************************************\r\n')
a = SER.send('\r\n- wait for connection to network ----------------\r\n')
r = FUNC.openGPRS(conf['PIN_SIM'],conf['APN'],conf['GPRS_USER'],conf['GPRS_PASS']) #openGPRS(P,A,GU,GP)
a = FUNC.setGPIO(CONFIG.statLED,1)
a = SER.send('\r\n\r\n- wait for data input ----------------\r\n')
# start Schleife --------------------------------------------------------
while 1:
a = FUNC.setGPIO(CONFIG.statLED,0)
MOD.sleep(10)
a = FUNC.setGPIO(CONFIG.statLED,1)
MOD.sleep(10)
b = SER.send('\r\nYou have 10 seconds to put something in.\r\n')
MOD.sleep(10)
res = SER.receive(100)
MOD.sleep(10)