GithubHelp home page GithubHelp logo

tsjerk / insane Goto Github PK

View Code? Open in Web Editor NEW
41.0 41.0 24.0 4.42 MB

INSert membrANE - A simple, versatile tool for building coarse-grained simulation systems

License: GNU General Public License v2.0

Python 98.38% Shell 1.62%

insane's People

Contributors

amiralih avatar ingolfsson avatar jbarnoud avatar tsjerk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

insane's Issues

How to make a hole at the center of the membrane instead of the origin (0,0)?

Hi Tsjerk,

I'm using insane script recently to build transmembrane protein systems.
when I did this:
insane
-o CG_full_dimer_SOL_ions.gro -p topol.top
-hole 8 -ring
-d 0 -pbc rectangular -x 35 -y 35 -z 15
-sol W -salt 0.15
-f CG_full_dimer.pdb
-l DOPC:8 -l DOPE:1 -l DOPS:1
-dm 0.5

it just dig a hole across teh pbc, directly at the (0,0) of the XY plane. Is there anyway to dig a hole at the center of the membrane?
image

Error calculating the charge with -salt

$ insane -o prot.gro -f ../data/inputs/1a0s/CG1a0s.pdb -sol W -salt 0
Traceback (most recent call last):
  File "/home/jon/Envs/tsjerk/bin/insane", line 11, in <module>
    load_entry_point('insane', 'console_scripts', 'insane')()
  File "/home/jon/dev/Insane/insane/cli.py", line 161, in cli
    sys.exit(main(sys.argv))
  File "/home/jon/dev/Insane/insane/cli.py", line 142, in main
    box) = core.old_main(argv, options)
  File "/home/jon/dev/Insane/insane/core.py", line 1195, in old_main
    solvent, added = setup_solvent(pbc, protein, membrane, options)
  File "/home/jon/dev/Insane/insane/core.py", line 680, in setup_solvent
    charge = (options["charge"] != "auto") and int(options["charge"]) or charge
UnboundLocalError: local variable 'charge' referenced before assignment

Running Simulations with Generated .gro/.top Files

Good Morrow.

I have been able to build my simulation environment using Insane (BTW, love the software) including solvent and lipids, both custom and default. However, I have failed thus far in every attempt to run simulations as I continuously run into issues both in OpenMM and GROMACS with recognizing the particles.

Is there anyone who has managed to run successful simulations using custom lipid+coarse grained-proteins? If so, would you be willing to share what you did to get your simultions running effectively? Thanks!

I can provide my .top/.gro files if needed.

python3 version

Since, python 2 is not officially supported any more, it would be time to make this python3 compatible. Or is there already a python3 version

PDB writer does not truncate atom and residue names

Residue names are written on 4 characters while they should be truncated to 3. Atom names should be 4 if aligned to the first column of the atom name, or 3 if they are aligned on the 2d one.

Currently, long atom names break the alignment of the columns.

Command to reproduce the error:

insane -o test.pdb -l DPG1 -d 5

Issue building a membrane with the old lipid topologies

Hi,

I've had problems building a membrane with the old lipid topologies (POPG.o, POPE.o, etc.). The command I used to demonstrate it was:
./insane. -x 50 -y 50 -z 15 -o DBol_memb.gro -p DBol.top -pbc rectangular -l POPG.o:200 -l CER.o:800
In this resulting system, the resnames are POPG. (without the o - these atoms are a box of red dots in VMD) and CER.o (with the o this time, this old lipid works even though the resname shouldn't be .o).
Most of the old topologies have the same problems.

That was using the version from cgmartini.nl - I couldn't use the latest version from github ("global name 'rn' is not defined").

Best regards,
Marlon

Helping out

Are you guys looking for any help with the project? If there is anything to be done, I'd be happy to help!

Histidine charge error

Hello everyone,

INSANE is not able to distinguish between the "HIS" and "HIH" histidine residues with a charge of 0 and +1 respectively. Both these residues are defined in Martinize though. This should be rectified soon as it becomes critical while adding the ions.

At the moment, both the residues are assumed to be "HIS" i.e. without charge.

Specifying lipid ratio in outer and inner leaflet

I am just wondering if it is possible to embed a protein in a membrane and to specify the lipid ratio in the outer and inner leaflets separately rather than just the ratio overall in order to design outer and inner leaflets with different lipid compositions. I couldn't find a clear example of this. Thank you for any guidance!

Missing lipids

Happy to see this repository come to life!

I've been wondering for quite some time: why are specific residues, e.g., POPA and DOPA missing from insane.py? Is there any specific reason? Adding them would seem to be a very trivial process.

Wrong number of lipid when using absolute numbers

The following command does not produce the expected number of lipids:

insane -l DOPC=72 -dz 15 -o plop.gro

While I expect 144 DOPC molecules, 72 molecules per leaflet, I only get 128 DOPC molecules in the resulting GRO file. The TOP file reports 72 DOPC per leaflet as expected, though.

Python 2 scripts not working in Python 3.X

Hi Developers,

Thanks for putting together this script for convenience. I would appreciate if you could make switches for some of the functions that have been deprecated in Python 3. The ones that I have noticed include xrange and zip. I managed to get it work but I would appreciate that if you could push the changes so that I don't have to make them manually. Thank you!

Respect original topology headers/preprocessing options

When dealing with the insane.py script I noticed that when solvating a CG protein with

insane -o system_solvated.gro -p system.top -f system.gro -sol W -salt 0.15 -center

The headers of the original system.top file are ignored and then just simply changed to #include "martini.itp". I think insane.py should respect the prevopis original header or preprocessing options, for example including different martini specifications files or specifying custom system itp files.

Insane and GoMartini - Charge determination

Hey i am working on a GoMartini structure of my protein and i recognized that if a use my coarse-grained protein structure, which i made with martinize2, insane.py counts the virtual CA beads into the charge determination of the protein. I know that i could work around this pretty easily, but i like the fact, that i can set up my system and change the salt concentration so easily with insane.py maybe this can be adjusted quite easily? Or i am doing something wrong?

Kind regards,

Denis

Python3

Have you created a new script which is compatible with python3?

python 3 compatibility

Is it possible to have python 3 compatibilities for insane? I think the current version is only for python 2 and python 2 has reached its end of life. Thank you.

cannot convert string to float

This is caused when there is no box description in the GRO as the last line. Not sure if this is a bug...

insane -o system.gro -p topol.top -f ../em_dry.gro -d 7 -sol W -salt 0.157

Traceback (most recent call last):
File "/home/bart/.virtualenvs/md/bin/insane", line 8, in
sys.exit(cli())
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/cli.py", line 164, in cli
sys.exit(main(sys.argv))
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/cli.py", line 145, in main
box) = core.old_main(argv, options)
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/core.py", line 1051, in old_main
tm = [ Structure(i) for i in options["solute"] ]
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/core.py", line 1051, in
tm = [ Structure(i) for i in options["solute"] ]
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/core.py", line 291, in init
self.box = groBoxRead(lines[-1])
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/core.py", line 98, in groBoxRead
b = [float(i) for i in a.split()] + 6*[0] # Padding for rectangular boxes
File "/home/bart/.virtualenvs/md/lib/python3.8/site-packages/insane/core.py", line 98, in
b = [float(i) for i in a.split()] + 6*[0] # Padding for rectangular boxes
ValueError: could not convert string to float: '23481POPC'

Failure when called without arguments

Calling insane without arguments leads to a failure with a traceback displayed to the user. Insane should fail more gracefully.

./insane.py
; NDX Solute 1 0
; Charge of protein: 0.000000
; NDX Membrane 1 0
; Charge of membrane: 0.000000
; Total charge: 0.000000
; NDX Solvent 1 0
; NDX System 1 0
; "I mean, the good stuff is just INSANE" --Julia Ormond
Traceback (most recent call last):
  File "./insane.py", line 1914, in <module>
    sys.exit(main())
  File "./insane.py", line 1813, in main
    if options["-o"].value.endswith(".gro"):
AttributeError: 'NoneType' object has no attribute 'endswith'

ModuleNotFoundError: No module named 'core' / Thylakoid system building w/ martini3

Hi,

i have been trying to use the script on both a WSL2 (Linux subsystem) and installed through anaconda (both via pip). I get the following error in both cases. I sourced the folder to the path, but also get the same error when running the script directly from the folder.

Traceback (most recent call last):
File "c:\users\pasca\anaconda3\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "c:\users\pasca\anaconda3\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Users\pasca\AppData\Roaming\Python\Python37\Scripts\insane.exe_main
.py", line 4, in
File "C:\Users\pasca\AppData\Roaming\Python\Python37\site-packages\insane_init
.py", line 37, in
from core import *
ModuleNotFoundError: No module named 'core'

What I am trying to build is a system for the plant thylakoid membrane, it is already available in Martini2 ff (http://cgmartini.nl/index.php/all-files-needed-for-the-simulation-of-a-thylakoid-membrane). I do have the protein model produced with martinize3. The name of the lipids however changed (I cannot fine corresponding definitions in the "_lipid_data.py".

I ran the following command, guessing the lipid types with the new names:
insane -f m13_cg.pdb -o system.gro -p system.top -x 200 -y 300 -z 200 -l OPPG:5 -l JPPG:10 -l FPMG:5 -l DFMG:25 -l FPSG:5 -l FPGG:35 -l DFGG:15 -center -sol W -salt 0.01

In this zip folder the AA and the CG models.
mode13_Hok.zip

Thanks,
Pascal

No access to the version number

Insane is missing the very standard --version, or any way of accessing the version of the program. This makes it more difficult to ask people what version they are using when they ask a question (e.g. on the martini forum). @Pitje06 just encountered this scenario.

The --version option is an option that user often expect to be there in any program. Not having it made me sad 😢

Set absolute number of lipids

So far, insane allows to specify a relative number of lipids. The actual number of lipid is set from that relative number and the size of the box. It would be convenient to be able to, instead, set the absolute number of lipids, and have the size of the box adjusted accordingly.

POP2 bead name inconsistencies

Dear developers,

There is a difference in the POP2 naming (or maybe mapping too) scheme between the INSANE and the Martini database:

Whereas it is C2A D3A in the INSANE.

POP2.2 C1 C2 C3 - PO4 P1 P2 - GL1 GL2 C1A C2A D3A C4A - - C1B C2B C3B C4B - -

"POP2": (moltype, " C1 C2 C3 PO4 P1 P2 - GL1 GL2 C1A C2A D3A C4A - - C1B C2B C3B C4B - - "),

The bead names are D2A C3A in the Martini database:

http://cgmartini.nl/images/parameters/lipids/Phosphatidylinositols/POP2/martini_v2.0_POP2_01.itp

Thank you for reading.

Rescaling for absolute number of lipids

Rescaling XY PBC for absolute numbers of lipids takes the hole and protein area into account, but does not consider the grid that is used for placement. This may cause a too small number of cells available for lipid placement. Solution: adjust grid spacing, but this may need to be done iteratively.

NameError: name 'xrange' is not defined

Seems like the insane installation is dependent on Python version. As NameError: name 'xrange' is not defined is a Python 2 vs Python3 problem. Does insane require Python 2.7?

Current build fails

Currently the install of insane fails with:
Traceback (most recent call last): File "bin/insane", line 5, in <module> from insane.cli import cli File "python3.6/site-packages/insane/__init__.py", line 37, in <module> from .core import * File "/python3.6/site-packages/insane/core.py", line 35, in <module> from simopt import opt_func ImportError: cannot import name 'opt_func'

Addition of lipids with available .itp files

Hi Developers,

Is there a way to include additional .itp files in insane in order to re-create a complex realistic plasma membrane with insane? For instance, is there a method to include the following .itp in insane as so the allow for the recognition of lipids currently not included in insane:

  • POPX_Martini_v2.0_lipid.itp
  • PIPX_Martini_v2.0_lipid.itp
  • PLASMA-v01-PA2.itp

.itp files are from Ingólfsson, Helgi I., et al. "Lipid organization of the plasma membrane." Journal of the american chemical society 136.41 (2014): 14554-14559.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.