²é¿´: 1925  |  »Ø¸´: 6

glazio

Ìú³æ (СÓÐÃûÆø)

[ÇóÖú] ÓÃpythonÇó7¸öÔ­×ӵĻØ×ª°ë¾¶

д´úÂëÉÏÎÒÊÇÃÅÍ⺺£¬ÎÒ×Ô¼ºËã³öÀ´µÄ½á¹û»³Òɲ»¶Ô£¬ÔÚÕâÀïÇëpython´ïÈËÖ¸µãһϣ¬Äܸø³öÄãÃǵļÆËã½Å±¾ÈÃÎҰݶÁÊÇ×îºÃÁË£¬ºÇºÇ¡£


1.  »Ø×ª°ë¾¶ÍøÒ³Çë¼ûÕâÀï

2.  ´úÂëÒªÇó£ºÒòΪÕâ¸ö½Å±¾ÊÇÔÚÒ»¸öÄ£ÄâÈí¼þÖÐʹÓõ쬏ÃÈí¼þʹÓûù±¾µÄpython»·¾³¶øÃ»ÓÐscipy¡¢numpyµÈÄ£¿é£¬ËùÒÔÔڽű¾ÀïÖ»ÄÜÓÃpythonÄÚÖõÄһЩº¯ÊýºÍÃüÁî

3.  Æß¸öÔ­×ÓµÄÈýÎ¬×ø±êºÍÎÒ×öµÄ´úÂëÈçÏÂ

def f_Rg(list):
    n=len(list)
    sum_x=sum_y=sum_z=0
    for list_sub1 in list:
        sum_x+=list_sub1[0]
        sum_y+=list_sub1[1]
        sum_z+=list_sub1[2]
    rc=[1.0*sum_x/n,1.0*sum_y/n,1.0*sum_z/n]  #center of gravity, assuming all atoms have equal weight
   
    sum_Rg2=0
    for list_sub2 in list:
        sum_Rg2+=(list_sub2[0]-rc[0])**2+(list_sub2[1]-rc[1])**2+(list_sub2[2]-rc[2])**2

    result=[rc,(1.0*sum_Rg2/n)**0.5]
    return result


mol = [ [9.6397, 10.8355, 5.5044], \
            [7.6624, 11.6655, 5.5672], \
            [9.1239, 10.4822, 4.5657], \
            [8.1561, 10.4279, 4.4660], \
            [7.3390, 10.9163, 4.8606], \
            [7.4566, 12.0949, 4.5525], \
            [7.9986, 12.6564, 5.3909]]

Gy = f_Rg(mol)
print format( 'Center=(%.2f, %.2f, %.2f),  Rg=%.2f' %(Gy[0][0], Gy[0][1], Gy[0][2], Gy[1]) )

4.  ÒÔÉϽű¾µÄ¼ÆËã½á¹ûÈçÏÂ
Center=(8.20, 11.30, 4.99),  Rg=1.22
ÏÂͼÖÐÂÌÉ«Çò¾ÍÊÇ7¸öÔ­×Ó£¬ºìÉ«¼ýÍ·ÆðʼµãÊÇÖØÐÄrc£¬¼ýÍ·³¤¶È¾ÍÊÇRg£¬Ôõô¿´Ôõô¾õµÃ¼ÆËã½á¹ûÊÇ´íµÄ

7 atoms

[ Last edited by glazio on 2012-6-21 at 13:00 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü


Èç¹û°´ÕÕÕâ¸ö¹«Ê½À´¼ÆËã,µÄ³öÀ´µÄÊǸöºÜСµÄÊý
ÄãµÄ´ð°¸¸úÕâ¸öÖÐʼÖÕµÄr_meanÊÇÒ»ÖµÄ,Ò²¾ÍÊÇthe mean position of the monomers
²»¹ýÕæÐIJ»¶®²»Òª×öµÄ¶«Î÷,¹âÄܸù¾Ý¹«Ê½¿´¿´
CODE:
#! /usr/bin/env python
#
mol = [[9.6397, 10.8355, 5.5044], \
            [7.6624, 11.6655, 5.5672], \
            [9.1239, 10.4822, 4.5657], \
            [8.1561, 10.4279, 4.4660], \
            [7.3390, 10.9163, 4.8606], \
            [7.4566, 12.0949, 4.5525], \
            [7.9986, 12.6564, 5.3909]]

# r_mean
rmean = [x/len(mol) for x in reduce(lambda x,y:[x[i]+y[i] for i in range(len(x))],mol)]

# r_k - r_mean
subsum = [map(lambda x,y: x-y, mol_item,rmean) for mol_item in mol]

# sum(r_k - r_mean)^2
sumsqure = map(lambda x: [pow(y,2) for y in x], subsum)

# 1/N * sum(r_k - r_mean)^2
Rg_2 = [x/len(sumsqure) for x in reduce(lambda x,y:[x[i]+y[i] for i in range(len(x))],sumsqure)]

# sqrt(1/N * sum(r_k - r_mean)^2
Rg = [pow(x,0.5) for x in Rg_2]

# print result
print 'r_mean = ', rmean
print 'Rg^2 = ', Rg_2
print 'Rg = ', Rg

½á¹û
CODE:
>>> ================================ RESTART ================================
>>>
r_mean =  [8.196614285714286, 11.296957142857142, 4.986757142857144]
Rg^2 =  [0.650244935510204, 0.6282219424489798, 0.20302449959183683]
Rg =  [0.8063776630774219, 0.7926045309288736, 0.4505824004461746]
>>>  

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
2Â¥2012-06-21 16:41:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
glazio: ½ð±Ò+5, ¡ï¡ï¡ïºÜÓаïÖú 2012-06-21 18:31:45

Èç¹û°´ÕÕÕâ¸ö¹«Ê½À´¼ÆËã,µÄ³öÀ´µÄÊǸöºÜСµÄÊý
ÄãµÄ´ð°¸¸úÕâ¸öÖÐʼÖÕµÄr_meanÊÇÒ»ÖµÄ,Ò²¾ÍÊÇthe mean position of the monomers
²»¹ýÕæÐIJ»¶®²»Òª×öµÄ¶«Î÷,¹âÄܸù¾Ý¹«Ê½¿´¿´
CODE:
#! /usr/bin/env python
#
mol = [[9.6397, 10.8355, 5.5044], \
            [7.6624, 11.6655, 5.5672], \
            [9.1239, 10.4822, 4.5657], \
            [8.1561, 10.4279, 4.4660], \
            [7.3390, 10.9163, 4.8606], \
            [7.4566, 12.0949, 4.5525], \
            [7.9986, 12.6564, 5.3909]]

# r_mean
rmean = [x/len(mol) for x in reduce(lambda x,y:[x[i]+y[i] for i in range(len(x))],mol)]

# r_k - r_mean
subsum = [map(lambda x,y: x-y, mol_item,rmean) for mol_item in mol]

# sum(r_k - r_mean)^2
sumsqure = map(lambda x: [pow(y,2) for y in x], subsum)

# 1/N * sum(r_k - r_mean)^2
Rg_2 = [x/len(sumsqure) for x in reduce(lambda x,y:[x[i]+y[i] for i in range(len(x))],sumsqure)]

# sqrt(1/N * sum(r_k - r_mean)^2
Rg = [pow(x,0.5) for x in Rg_2]

# print result
print 'r_mean = ', rmean
print 'Rg^2 = ', Rg_2
print 'Rg = ', Rg

½á¹û
CODE:
>>> ================================ RESTART ================================
>>>
r_mean =  [8.196614285714286, 11.296957142857142, 4.986757142857144]
Rg^2 =  [0.650244935510204, 0.6282219424489798, 0.20302449959183683]
Rg =  [0.8063776630774219, 0.7926045309288736, 0.4505824004461746]
>>>  

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
3Â¥2012-06-21 16:42:31
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

glazio

Ìú³æ (СÓÐÃûÆø)

¸Ðлlibra»Ø¸´£¡´úÂëÕýÔڰݶÁ£¬ÆäÖÐmap¡¢lambdaµÄ·½·¨¶¼ÊÇÎÒ»¹Ã»Ñ§µ½µÄ¶«Î÷£¬ÐèҪȥ·­½Ì¿ÆÊéÀ´Àí½â¡£

ÒÉÎÊÔÚÓÚ£¬»Ø×ª°ë¾¶Ó¦¸ÃÊDZêÁ¿¡£
ÀýÈçʸÁ¿rµÄƽ·½£¬ÆäÖµµÈÓÚrµÄÄ£( |r| )µÄƽ·½£¬¼´ r^2 = |r|^2

ÇëlibraÓÐʱ¼äÔÙ½â´ðÒ»ÏÂÕâ¸öÒÉÎÊ£¬Ð»Ð»¡£
4Â¥2012-06-21 17:12:31
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

ÒýÓûØÌû:
4Â¥: Originally posted by glazio at 2012-06-21 17:12:31
¸Ðлlibra»Ø¸´£¡´úÂëÕýÔڰݶÁ£¬ÆäÖÐmap¡¢lambdaµÄ·½·¨¶¼ÊÇÎÒ»¹Ã»Ñ§µ½µÄ¶«Î÷£¬ÐèҪȥ·­½Ì¿ÆÊéÀ´Àí½â¡£

ÒÉÎÊÔÚÓÚ£¬»Ø×ª°ë¾¶Ó¦¸ÃÊDZêÁ¿¡£
ÀýÈçʸÁ¿rµÄƽ·½£¬ÆäÖµµÈÓÚrµÄÄ£( |r| )µÄƽ·½£¬¼´ r^2 = |r|^2

Çëlibr ...

ÄÇ¿ÉÄÜÊÇÎÒ¼ÆËã´íÎó,ÎÒ¼ÆËãµÄʱºò
r =[x,y,z],r_mean=[mean(x),mean(y),mean(z(],È»ºó(r-r_mean)µÄƽ·½ÎÒÖ±½ÓÊÇ[x^2,y^2,z^2]ÁË
matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
5Â¥2012-06-21 18:39:29
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

ÄÚÈÝÒÑɾ³ý
matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
6Â¥2012-06-21 18:46:22
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

glazio

Ìú³æ (СÓÐÃûÆø)

ÎåÌåͶµØÒÓ£¬°Ýл£¡
7Â¥2012-06-21 18:55:07
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ glazio µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +3 ÄÝÄÝninicgb 2026-03-15 3/150 2026-03-16 09:10 by ŶŶ123
[¿¼ÑÐ] 283Çóµ÷¼Á +7 С¥¡£ 2026-03-12 10/500 2026-03-16 09:07 by QJ_River
[¿¼ÑÐ] ÖпÆÔº²ÄÁÏ273Çóµ÷¼Á +3 yzydy 2026-03-15 3/150 2026-03-15 21:15 by ms629
[¿¼ÑÐ] 0703 ÎïÀí»¯Ñ§µ÷¼Á +3 ÎÒ¿ÉÒÔÉϰ¶µÄ¶Ô 2026-03-13 3/150 2026-03-15 17:32 by СÎïÀí»¯Ñ§
[¿¼ÑÐ] 288Çóµ÷¼Á +4 Ææµã0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[¿¼ÑÐ] ±¾¿ÆÄϾ©´óѧһ־Ը´¨´óҩѧ327 +3 ÂóÌï¸ûÕß 2026-03-14 3/150 2026-03-14 20:04 by ÍâÐÇÎÄÃ÷
[¿¼ÑÐ] Ò»Ö¾Ô¸Ìì´ó»¯¹¤£¨085600£©µ÷¼Á×Ü·Ö338 +6 ²Ì´óÃÀÅ® 2026-03-09 6/300 2026-03-14 02:46 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ²ÄÁÏÓ뻯¹¤296·ÖÇóµ÷¼Á +16 µ¾ÆÞС±à 2026-03-09 18/900 2026-03-14 02:00 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸Ö£´ó070303£¬338·Ö£¬Çóµ÷¼Á +4 dadawaf 2026-03-10 5/250 2026-03-14 01:20 by lsw010101
[¿¼ÑÐ] Çóµ÷¼Á +6 yfihxh 2026-03-09 6/300 2026-03-14 01:18 by JourneyLucky
[¿¼ÑÐ] ²ÄÁϹ¤³Ìר˶£¬Ò»Ö¾Ô¸Öйú¿óÒµ´óѧ£¬×Ü·Ö314£¬Çóµ÷¼Á +5 ÎÞи¿É»÷µÄ¾ÞÈË 2026-03-10 5/250 2026-03-14 00:37 by JourneyLucky
[¿¼ÑÐ] 304Çóµ÷¼Á +6 Mochaaaa 2026-03-12 7/350 2026-03-13 22:18 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 0856²ÄÁÏÓ뻯¹¤301Çóµ÷¼Á +5 ÞÈÊø¹â 2026-03-13 5/250 2026-03-13 22:00 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] £¨081700£©»¯Ñ§¹¤³ÌÓë¼¼Êõ-298·ÖÇóµ÷¼Á +12 11À²À²À² 2026-03-11 35/1750 2026-03-13 21:25 by JourneyLucky
[˶²©¼ÒÔ°] ÉîÛÚ´óѧ˶ʿÕÐÉú£¨2026Ç´«¸ÐÆ÷·½Ïò£¬½ö¼ȡµÚÒ»Ö¾Ô¸£© +4 xujiaoszu 2026-03-11 7/350 2026-03-13 17:28 by xujiaoszu
[¿¼ÑÐ] 081200-11408-276ѧ˶Çóµ÷¼Á +3 ´Þwj 2026-03-12 4/200 2026-03-12 19:33 by Çóµ÷¼Ázz
[¿¼ÑÐ] 420Çóµ÷¼Á +4 ĪÏòÍâÇó11 2026-03-10 6/300 2026-03-12 14:41 by ruiyingmiao
[¿¼ÑÐ] Ñо¿ÉúÕÐÉú +3 Ð캣ÌÎ11 2026-03-10 7/350 2026-03-12 14:26 by Ð캣ÌÎ11
[¿¼ÑÐ] 290Çóµ÷¼Á +3 ¿Â»´È» 2026-03-10 8/400 2026-03-11 13:48 by ¿Â»´È»
[¿¼ÑÐ] 294 Ó¢¶þÊý¶þÎﻯ Çóµ÷¼Á +6 Ã×·¹ÍŲ»ºÃ³Ô 2026-03-09 6/300 2026-03-09 23:55 by barlinike
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û