मैं GROMOS54a7 में एक साधारण बेंजीन सिमुलेशन चला रहा हूं। मैं एमडीएनालिसिस 1.0.0 का उपयोग करके प्रत्येक बेंजीन अणु के द्रव्यमान के केंद्र के आरडीएफ की गणना करना चाहता हूं।

क्या यह संभव है? मैंने ज्यूपिटर नोटबुक में निम्नलिखित कोड का उपयोग करके सी अणुओं g_cc(r) के लिए rdf बनाया है:

import MDAnalysis
import numpy as np
%matplotlib inline
import MDAnalysis.analysis.rdf as mda
import matplotlib.pyplot as plt

u = MDAnalysis.Universe("739-c6h6-MolDynamics.tpr","739-c6h6-MolDynamics_good-pbc.xtc")
s1 = u.select_atoms("resid 0 and type CAro")
s2 = u.select_atoms("not (resid 0) and type CAro")
rdf = mda.InterRDF(s1, s2)
rdf.run()

मैं प्रत्येक बेंजीन अणु लेना चाहता हूं (प्रत्येक बेंजीन अणु मेरे अनुकरण में एक अवशेष है), इसके COM की गणना करें और उस पर ऊपर की तरह एक स्क्रिप्ट चलाएं। क्या ऐसा कुछ करना संभव है?

आरडीएफ के बारे में एक सामान्य प्रश्न: क्या मैंने ऊपर जिस विधि का उपयोग किया है, वह मेरे प्रक्षेपवक्र के प्रत्येक फ्रेम का उपयोग करके आरडीएफ का निर्माण करती है? मुझे नहीं पता कि यह दस्तावेज़ीकरण में स्पष्ट किया गया था, इसलिए यदि यह एक स्पष्ट प्रश्न है तो मैं क्षमा चाहता हूं।

आपके पास किसी भी सलाह के लिए धन्यवाद!

3
megamence 23 फरवरी 2021, 22:55

1 उत्तर

सबसे बढ़िया उत्तर

एमडीएनालिसिस में विश्लेषण उपकरणों का पुन: उपयोग करने के लिए सीजी समूहों को मूल परमाणुओं के रूप में उपयोग करना संभव बनाना उपयोगी होगा।

यहां एक त्वरित सुधार है जो एमडीएनालिसिस समूह की नकल करता है और एक नई positions संपत्ति प्रस्तुत करता है। नया positions वास्तविक स्थिति के बजाय ज्यामिति का केंद्र प्रदान करता है। मैं यह बताने के लिए len को भी अधिलेखित कर देता हूं कि CG तत्व के लिए केवल एक मनका का उपयोग किया जा रहा है।

import MDAnalysis as mda
import numpy as np
import MDAnalysis.analysis.rdf
import matplotlib.pyplot as plt

u = mda.Universe('sys_solv.pdb','prod.dcd')

class CG:
    def __init__(self, ag):
        self.ag = ag
        self.universe = self.ag.universe
        self.trajectory = self.ag.universe.trajectory

    @property
    def positions(self):
        return np.array([self.ag.center_of_geometry()])

    def __len__(self):
        return 1

cg_selection = u.select_atoms('resid 1')
cg_atom = CG(cg_selection.atoms)
waters = u.select_atoms('name O')

rdf = MDAnalysis.analysis.rdf.InterRDF(cg_atom, waters)
rdf.run() 
plt.plot(rdf.bins, rdf.rdf)

सत्यापन: मैंने सीजी मनका के लिए एक एकल परमाणु का चयन किया और यह मूल आरडीएफ को पुन: पेश करता है।

एमडीएनालिसिस पूरे प्रक्षेपवक्र का उपयोग करता है। आप प्रलेखन में .run() फ़ंक्शन के लिए प्रारंभ/रोक/चरण पैरामीटर हो सकते हैं जो आपको विशेष रूप से उपयोग करने के लिए कौन से फ़्रेम को सीमित करने की अनुमति देता है।

1
mateuszb 24 फरवरी 2021, 10:47