-
Notifications
You must be signed in to change notification settings - Fork 30
/
calcAPL.py
60 lines (43 loc) · 1.61 KB
/
calcAPL.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import os
import sys
import numpy as np
import json
import matplotlib.pyplot as plt
import MDAnalysis
import urllib.request
import yaml
### Initializing the databank
### This is the NMRlipids databank repository path
databankPath = '../../'
sys.path.insert(1, databankPath + '/Scripts/BuildDatabank/')
from databankLibrary import *
systems = initialize_databank(databankPath)
### Loop over simulations in the databank
for system in systems:
## reading software and file path for simulations
software=system['SOFTWARE']
path = system['path']
## this is checking if area per lipid is already calculated for the systems
outfilename = databankPath + '/Data/Simulations/' + path + 'apl.json'
if os.path.isfile(outfilename):
continue
print('Analyzing: ', path)
## calculates the total number of lipids
Nlipid = GetNlipids(system)
## makes MDAnalysis universe from the system. This also downloads the data if not yet locally available
u = system2MDanalysisUniverse(system)
if u is None:
print('Generation of MDAnalysis universe failed in folder', path)
continue
## this calculates the area per lipid as a function of time and stores it in the databank
apl = {}
for ts in u.trajectory:
if u.trajectory.time >= system['TIMELEFTOUT']*1000:
dimensions = u.dimensions
#print(dimensions)
aplFrame = u.dimensions[0]*u.dimensions[1]*2/Nlipid
apl[u.trajectory.time] = aplFrame
#print(apl)
with open(outfilename, 'w') as f:
json.dump(apl,f)
#print(outfilename)