radonpy / radonpy Goto Github PK
View Code? Open in Web Editor NEWRadonPy is a Python library to automate physical property calculations for polymer informatics.
License: BSD 3-Clause "New" or "Revised" License
RadonPy is a Python library to automate physical property calculations for polymer informatics.
License: BSD 3-Clause "New" or "Revised" License
@yhayashi1986
下記フォークにてRISを実装しています
https://github.com/ryuichi-sakashita/RadonPyRIS
Slackにも報告したとおり、
二面角のスキャンはできました
その後の二面角×3の全組み合わせを計算するときにPsi4がプロセスごと落ちてしまいます
別プロセスとすることでエラーをキャッチしようとしましたが、
今度はサブプロセスとしてPsi4を動かすときにPsi4に下記の原因不明のエラーが出るようです
RadonPy info: Psi4 optimization is running...
forrtl: severe (174): SIGSEGV, segmentation fault occurred
変更点:
RISメイン処理:sim/preset/ris.py
sim/psi4_wrapper.pyに localminima_dihedrals_scan(self, dihedral, step=15, **kwargs)を追加
実行スクリプト:sample_script/ris_test.py ←これを実行したら再現できると思います
お手すきのときに見ていただけたら幸いです
Radonpy is an easy tool for creating MD input. I could generate ff for molecules and polymers. I'm interested in generating a force field for a metal oxide cluster. Is it feasible to load force fields for this system and combine them with polymers/molecules?
Hi there!
I am trying to understand the code of sample_script repo.
However, I find it out that the data
dictionary has a piece of code os.environ.get('RadonPy_DBID')
.
Should I have a database preparation before I start the code?
Otherwise, it may report
smi_list = data['smiles_list'].split(',') AttributeError: 'NoneType' object has no attribute 'split'
Hope you may drop me a line.
I find a TypeError when using the poly.polymerize_rw function. The error occurs in the quick_rw function during the invocation of md.add_md():
TypeError: add_md() missing 1 required positional argument: 'step'
I think the issue lies in the quick_rw function, in this line:
md.add_md('nve', step, time_step=time_step, shake=shake, nve_limit=limit, **kwargs)
The step parameter should be passed as a keyword argument to avoid confusion, like so:
md.add_md('nve', step=step, time_step=time_step, shake=shake, nve_limit=limit, **kwargs)
Thank you very much
Hello,
Thank you for writing this package. It's a very exciting tool!
I have a question about forcefield assignment at the polymer level.
I'm running the following test on polystyrene now following the tutorial pdf:
from radonpy.core import poly, utils
from radonpy.sim import qm
from radonpy.ff.gaff2_mod import GAFF2_mod
from radonpy.sim.preset import eq
import os
cpus = utils.cpu_count()
ps_smiles = 'CC()c1ccccc1'
mol = utils.mol_from_smiles(ps_smiles)
work_dir = 'path/to/work/dir'
ff = GAFF2_mod()
mol, energy = qm.conformation_search(mol,
ff=ff,
work_dir = work_dir
)
qm.assign_charges(mol,
charge='RESP',
work_dir=work_dir
)
repeat_units = 10
atom_nubmer = monomer_atom_num*repeat_units
print(atom_nubmer)
atom_number = 1000
ter = utils.mol_from_smiles('*C')
n = poly.calc_n_from_num_atoms(mol,
atom_number ,
terminal1=ter
)
homopoly = poly.polymerize_rw(mol,
n,
tacticity='atactic'
)
homopoly = poly.terminate_rw(homopoly,
ter)
result = ff.ff_assign(homopoly)
It seems that the forcefield is assigned at the conformation search level. Is there a reason it needs to be reassigned after polymerization? Is there a way to pass the forcefield information from the qm calculations to the polymerize function? More importantly, the partial charges from the charge calculation are not transferred from the monomers to the polymer. This leads to the following key error when you try to run the md equilibration.
n_chains = 10
ac = poly.amorphous_cell(homopoly,
n_chains
)
temp = 300 # K
press = 1.0 # bar
eqmd = eq.EQ21step(ac,
work_dir = work_dir)
ac = eqmd.exec(temp = temp,
press = press,
omp = 1,
gpu = 2,
mpi = utils.cpu_count())
KeyError Traceback (most recent call last)
Cell In[16], line 5
2 press = 1.0 # bar
3 eqmd = eq.EQ21step(ac,
4 work_dir = work_dir)
----> 5 ac = eqmd.exec(temp = temp,
6 press = press,
7 omp = 1,
8 gpu = 2,
9 mpi = utils.cpu_count())
**File anaconda3/envs/radonpy_py311/lib/python3.11/site-packages/radonpy/sim/preset/eq.py:351, in EQ21step.exec(self, confId, f_density, max_temp, temp, press, max_press, step_list, press_ratio, time_step, eq_step, omp, mpi, gpu, intel, opt, **kwargs)
349 utils.MolToPDBFile(self.mol, os.path.join(self.work_dir, self.pdb_file))
350 lmp = lammps.LAMMPS(work_dir=self.work_dir, solver_path=self.solver_path)
--> 351 lmp.make_dat(self.mol, file_name=self.dat_file1, confId=confId)
353 dt1 = datetime.datetime.now()
354 utils.radon_print('Packing simulation (eq1) by LAMMPS is running...', level=1)
File anaconda3/envs/radonpy_py311/lib/python3.11/site-packages/radonpy/sim/lammps.py:333, in LAMMPS.make_dat(self, mol, confId, file_name, dir_name, velocity, temp, drude)
331 dir_name = dir_name if dir_name is not None else self.work_dir
332 dat_file = os.path.join(dir_name, file_name)
--> 333 MolToLAMMPSdata(mol, dat_file, confId=confId, velocity=velocity, temp=temp, drude=drude)
335 return dat_file
...
2755 coord[i][0], coord[i][1], coord[i][2]))
2757 if velocity:
2758 lines.append('')
KeyError: 'AtomicCharge'**
The work around to this is to recalculate the charge after polymerization by running result = ff.ff_assign(homopoly, charge='RESP'), but redoing the qm calculations of partial charges at the polymer level becomes prohibitively expensive as the number of monomers increases. Is there a way to pass the ff and partial charges from the monomer to the polymer mol structure so that these calculations do not have to be redone?
Thanks!
Mike Boyle
Hello
Thanks for your repo! it 's a really useful tool for us who don't understand simulation very much
But i came across a situation when trying the tutorial as
''RadonPy warning: OPENMP package is not available. Parallel number of OPENMP is changed to zero.''
I have tired command
'conda install -c conda-forge openmpi '
but it doesn't work, it seemd like i still fail to install some of the necessary packages, so how can i solve this problem?
Looking forward for your reply! Thanks!
In the present implementation, is it possible to calculate FF descriptor for small molecules (without connection atoms)? If not, will it be expanded to do so?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.