Writing /users/jbklauda/pub/wiki/data/cache/6/6193a558dc90ed4c190004bf67ecff70.captchaip failed
2d_rdfs
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 2d_rdfs [2026/07/04 23:02] – [1) Edit Necessary Files] edit | 2d_rdfs [2026/09/24 00:24] (current) – [1) Edit Necessary Files] edit | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | [[Analysis]] | + | {{: |
| =====Brief instructions to obtain 2D radial distribution function (RDF)===== | =====Brief instructions to obtain 2D radial distribution function (RDF)===== | ||
| - | Authors: Xiaohong Zhuang, Viviana Monje, Dr. Jeffery B. Klauda | + | Authors: Xiaohong Zhuang, Viviana Monje, Dr. Jeffery B. Klauda\\ |
| - | Revised | + | Refactored |
| - | These are the brief instructions to calculate the radial distribution function (RDF), also known as a pair correlation function. | + | These are the brief instructions to calculate the radial distribution function (RDF), also known as a pair correlation function. |
| - | + | ||
| - | Symmetric Scripts: {{ :2d-rdf.tar.gz |}}\\ | + | |
| - | Asymmetric Scripts: To be added | + | |
| + | Legacy Scripts: {{ : | ||
| **Note**: The example is made in DT2. It is provided for reference purpose. | **Note**: The example is made in DT2. It is provided for reference purpose. | ||
| - | The symmetric | + | The legacy |
| - | =====Symmetric | + | Modern Python Scripts: {{ : |
| + | =====Legacy | ||
| === Part I. === | === Part I. === | ||
| Line 116: | Line 115: | ||
| 8. The final averaged RDF data are in rdf.dat file, Plot the data with RDF vs. radial distance r. | 8. The final averaged RDF data are in rdf.dat file, Plot the data with RDF vs. radial distance r. | ||
| - | =====Asymmetric Bilayer | + | =====Modern Python |
| - | This workflow | + | This workflow |
| ====1) Edit Necessary Files==== | ====1) Edit Necessary Files==== | ||
| - | ===a) Edit '' | + | a) Open '' |
| - | Open '' | + | |
| < | < | ||
| - | marker_atoms | + | # Example config_dict: |
| - | 'pe': 'C1', 'pg': 'C1', 'pc': 'C1', 'pi': 'C1', 'pa': 'C1', 'ps': 'C1', | + | config_dict |
| - | 'lipa': 'OA6', | + | 'MEMB':['AIPE',' |
| + | 'NAAA':['LLL',], | ||
| } | } | ||
| - | </ | ||
| - | The keys of this dictionary correspond to the following table and define the atoms used to represent the lipids in the rdf calculations. | ||
| - | ^ Lipid Key ^ Marker Atom ^ Typical Lipid Structural Group ^ | ||
| - | | pe | C1 | Phosphatidylethanolamine | | ||
| - | | pg | C1 | Phosphatidylglycerol | | ||
| - | | pc | C1 | Phosphatidylcholine | | ||
| - | | pi | C1 | Phosphatidylinositol | | ||
| - | | pa | C1 | Phosphatidic acid | | ||
| - | | ps | C1 | Phosphatidylserine | | ||
| - | | lipa | OA6 | Lipid A | | ||
| - | | ol | C1 | Ornithine (custom lipid type) | | ||
| - | | chl | O3 | Cholesterol / Sterols | | ||
| - | | sm | C1S | Sphingomyelin | | ||
| - | | cer | C1S | Ceramide | | ||
| - | If you have lipids | + | # corresponding custom_grouping_dict which handles non-memb |
| + | custom_grouping_dict = { | ||
| + | | ||
| + | } | ||
| - | Next, scroll down to the config dictionary and populate the ntype, resnames, top_counts, and bot_counts sections.\\ | + | # Example |
| - | - ntype: Number | + | config_dict = { |
| - | - resnames: The exact resi definition of your lipids | + | ' |
| - | - top_counts: The exact number of lipids for each subtype located in the top leaflet.\\ | + | } |
| - | - bot_counts: The exact number of lipids for each subtype located in the bottom leaflet.\\ | + | |
| - | Example: Highly asymmetric membrane with a lipid A outer membrane and phospholipid inner membrane | + | # corresponding custom_grouping_dict which is empty since you only have normal memb lipids |
| - | < | + | custom_grouping_dict |
| - | config | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | }, | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | }, | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | } | + | |
| } | } | ||
| - | </ | ||
| - | Note that you still have to write 0 for lipids that don't appear in both leaflets. Ensure the order of the counts mirrors the order of the resnames. | ||
| - | |||
| - | ===b) Edit '' | ||
| - | Open '' | ||
| - | |||
| - | Example 1: A membrane that has the same components in both leaflets (uses " | ||
| - | < | ||
| - | set lipids = (pe pg ol pc cer sm) | ||
| - | set pair_mode = " | ||
| - | set manual_pairs = () | ||
| - | sbatch -A energybio-eng system_setup.csh " | ||
| - | </ | ||
| - | |||
| - | Example 2: A membrane where some components only exist in one leaflet (uses " | ||
| - | < | ||
| - | set lipids = (pe pg lipa) | ||
| - | set pair_mode = " | ||
| - | set manual_pairs = (pe-pg) | ||
| - | sbatch -A energybio-eng system_setup.csh " | ||
| - | |||
| - | # The logic behind the manual setting is that you can't compute the rdf of pe-lipa or pg-lip | ||
| - | # if the only outer membrane component is lipid A and the inner membrane is pe and pg for example | ||
| - | </ | ||
| - | |||
| - | ===c) Edit '' | ||
| - | Open '' | ||
| - | |||
| - | Example: | ||
| - | < | ||
| - | set MAN_CHARMM_DIR = " | ||
| - | set MAN_NAMD_DIR | ||
| - | |||
| - | # if you are running this for the first time, set this to yes to copy toppar folders to appropriate directories | ||
| - | # if you have already run this once already, set this to " | ||
| - | set toppar = " | ||
| - | |||
| - | # Leave this as " | ||
| - | # Only set to " | ||
| - | set recenter = " | ||
| - | |||
| - | # will compute rdfs for the 20 most recently finished dcds. | ||
| - | set dcdnum = 20 | ||
| </ | </ | ||
| ====2) Run Scripts==== | ====2) Run Scripts==== | ||
| - | All the hard work is done! Now run '' | + | a) Run '' |
| - | + | ||
| - | Here are the estimated times for each script. | + | |
| - | ^ Script/Jobs ^ Time ^ | + | |
| - | |'' | + | |
| - | |'' | + | |
| - | |'' | + | |
| - | |'' | + | |
| - | |'' | + | |
| - | |'' | + | |
| - | ===(Optional)=== | + | b) Run '' |
| - | For those interested in block rdfs, you can check the comments of '' | + | |
| - | Example of '' | + | c) Once the slurm job finishes, run '' |
| - | < | + | |
| - | # Say I have 20 dcds (37-56) and I want to split it into 5 blocks | + | |
| - | # Use this syntax: | + | |
| - | ./block.csh 37 40 1 | + | |
| - | ./block.csh 41 44 2 | + | |
| - | ./block.csh 45 48 3 | + | |
| - | ./block.csh 49 52 4 | + | |
| - | ./block.csh 53 56 5 | + | |
| - | </ | + | |
| - | + | ||
| - | Run '' | + | |
| - | + | ||
| - | Example | + | |
| - | < | + | |
| - | # ran this: python block_stats.py avg-rdf-p 5 avg-rdf-p-stats.dat | + | |
| - | # Sample Output: | + | |
| - | --- Tail diagnostic (r > 30 A) --- | + | |
| - | Top: mean deviation from 1 = -0.1609 avg SEM = 0.0632 | + | |
| - | Bot: mean deviation from 1 = -0.0520 | + | |
| - | If |mean deviation| is within ~1-2x the avg SEM, the tail drift | + | |
| - | is consistent with statistical noise. If it's much larger than | + | |
| - | the SEM, it's a reproducible effect (real depletion/ | + | |
| - | + | ||
| - | # This is mainly diagnostic, | + | |
| - | # The important features of the RDF are that it stays at 0 in the beginning and converges to 1 in the long run. | + | |
| - | </ | + | |
2d_rdfs.1783220557.txt.gz · Last modified: 2026/07/04 23:02 by edit