Mercurial > repos > chemteam > gmx_sim
annotate merge_top.py @ 3:83d787befb8b draft
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 43df863472247b5da304627b6b863c47ab7d02fa"
| author | chemteam | 
|---|---|
| date | Sun, 01 Dec 2019 14:05:14 +0000 | 
| parents | 3c80e68af375 | 
| children | 61ecdc006c05 | 
| rev | line source | 
|---|---|
| 0 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 1 import re | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 2 import sys | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 3 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 4 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 5 def combine_tops(top_text, itp_texts): | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 6 """ | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 7 Search through parent topology top_text and replace | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 8 #include lines with the relevant child topologies | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 9 from the dictionary itp_texts | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 10 """ | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 11 for itp in itp_texts: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 12 # split on include string, then rejoin around itp file | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 13 spl = re.split('#include ".*{}"\n'.format(itp), top_text) | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 14 top_text = itp_texts[itp].join(spl) | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 15 return top_text | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 16 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 17 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 18 top = sys.argv[1] # parent topology file | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 19 itps_file = sys.argv[2] # file with list of child topologies (.itp files) | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 20 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 21 with open(itps_file) as f: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 22 itps = f.read().split() | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 23 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 24 with open(top, 'r') as f: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 25 top_text = f.read() | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 26 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 27 itp_texts = {} # create dictionary of child topologies | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 28 for itp in itps: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 29 with open(itp, 'r') as f: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 30 itp_texts[itp] = f.read() | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 31 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 32 for itp in itp_texts: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 33 # child tops may also refer to each other; we need to check this | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 34 itp_texts[itp] = combine_tops(itp_texts[itp], itp_texts) | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 35 | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 36 with open('top_output.top', 'w') as f: | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 37 # now combine all children into the parent | 
| 
3c80e68af375
"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/tools/gromacs commit 3b99f08f22b9e0c16c0a0adc82f8c16c1a25cedf"
 chemteam parents: diff
changeset | 38 f.write(combine_tops(top_text, itp_texts)) | 
