"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ASP01A0052_002 0.006 0.020\n",
"ASP01A0052_003 0.006 0.017\n",
"ASP01A0052_004 0.002 0.006\n",
"ASP01A0052_006 0.008 0.052\n",
"ASP01A0052_009 0.002 0.004\n",
"ASP01A0052_010 0.003 0.009\n",
"ASP02A0052_011 0.022 0.079\n",
"ASP02A0052_012 0.020 0.073\n",
"ASP02A0052_013 0.003 0.024\n",
"ASP02A0052_014 0.014 0.088\n",
"ASP02A0052_016 0.002 0.010\n",
"ASP02A0052_017 0.005 0.018\n",
"ASP02A0052_018 0.010 0.027\n",
"ASP02A0052_019 0.001 0.002\n",
"ASP-1A0052_020 0.565 0.385\n",
"ASP-1A0052_021 0.029 0.011\n",
"ASP-1A0052_022 0.159 0.090\n",
"ASP-1A0052_023 0.020 0.016\n",
"ASP-1A0052_024 0.123 0.071\n",
"\n"
]
}
],
"source": [
"# Example 2: When GLU35 is ionized, what residues change conformation?\n",
"glu_charged_confs = [\"GLU-1A0035_011\", \"GLU-1A0035_012\", \"GLU-1A0035_013\", \"GLU-1A0035_014\"]\n",
"glu_charged_ms, glu_neutral_ms = mc.select_by_conformer(mc.microstates, conformer_in=glu_charged_confs)\n",
"conf_occ_glu_charged = mc.get_occ(glu_charged_ms)\n",
"conf_occ_glu_neutral = mc.get_occ(glu_neutral_ms)\n",
"for res in mc.free_residues:\n",
" resid = mc.conformers[res[0]].resid\n",
" prob1 = [conf_occ_glu_neutral[ic] for ic in res]\n",
" prob2 = [conf_occ_glu_charged[ic] for ic in res]\n",
" d = bhata_distance(prob1, prob2)\n",
" if d > 0.01:\n",
" print(\"%s, d= %.3f\" % (resid, d))\n",
" plot_prob(prob1, prob2, d)\n",
" for ic in res:\n",
" print(\"%s %6.3f %6.3f\" % (mc.conformers[ic].confid, conf_occ_glu_neutral[ic], conf_occ_glu_charged[ic]))\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example 3. Microstates selection - Thermaldynamic box\n",
"\n",
"GLU35 and ASP52 ionization\n",
"\n",
"\n",
"Group A: GLU35-H | ASP52-H \n",
"Group B: GLU35-H | ASP52-\n",
"Group C: GLU35- | ASP52-H \n",
"Group D: GLU35- | ASP52-\n",
"
\n",
"\n",
"The reaction is A to D, there are two paths A to B to D, and A to C to D.\n",
"\n",
"This example will calculate the energy change of the two paths. In the example, we will see microstates selection can be on selected microstates."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['GLU-1A0035_011', 'GLU-1A0035_012', 'GLU-1A0035_013', 'GLU-1A0035_014']\n",
"['ASP-1A0052_020', 'ASP-1A0052_021', 'ASP-1A0052_022', 'ASP-1A0052_023', 'ASP-1A0052_024']\n"
]
}
],
"source": [
"# find charged GLU35 and ASP52 conformers:\n",
"GLU35_ionized = [x.confid for x in mc.conformers if x.confid.find(\"GLU-1A0035\") ==0]\n",
"print(GLU35_ionized)\n",
"\n",
"ASP52_ionized = [x.confid for x in mc.conformers if x.confid.find(\"ASP-1A0052\") ==0]\n",
"print(ASP52_ionized)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"GLU35_ionized_ms, GLU35_neutral_ms = mc.select_by_conformer(mc.microstates, conformer_in=GLU35_ionized)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"GLU35_ionized_ASP52_ionized_ms, GLU35_ionized_ASP52_neutral_ms = mc.select_by_conformer(GLU35_ionized_ms, conformer_in=ASP52_ionized) "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"GLU35_neutral_ASP52_ionized_ms, GLU35_neutral_ASP52_neutral_ms = mc.select_by_conformer(GLU35_neutral_ms, conformer_in=ASP52_ionized) "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"Group_A_ms = GLU35_neutral_ASP52_neutral_ms\n",
"Group_B_ms = GLU35_neutral_ASP52_ionized_ms\n",
"Group_C_ms = GLU35_ionized_ASP52_neutral_ms\n",
"Group_D_ms = GLU35_ionized_ASP52_ionized_ms"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"Group_A_E = average_e(Group_A_ms)\n",
"Group_B_E = average_e(Group_B_ms)\n",
"Group_C_E = average_e(Group_C_ms)\n",
"Group_D_E = average_e(Group_D_ms)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Box with E:\n",
"\n",
"dE from A -> B -2.646 Kcal/mol\n",
"dE from B -> D 0.889 Kcal/mol\n",
"\n",
"dE from A -> C -0.412 Kcal/mol\n",
"dE from C -> D -1.345 Kcal/mol\n",
"\n",
"dE from A -> D -1.758 Kcal/mol\n"
]
}
],
"source": [
"print(\"Box with E:\\n\")\n",
"print(\"dE from A -> B %8.3f Kcal/mol\" % (Group_B_E - Group_A_E))\n",
"print(\"dE from B -> D %8.3f Kcal/mol\" % (Group_D_E - Group_B_E))\n",
"print()\n",
"print(\"dE from A -> C %8.3f Kcal/mol\" % (Group_C_E - Group_A_E))\n",
"print(\"dE from C -> D %8.3f Kcal/mol\" % (Group_D_E - Group_C_E))\n",
"print()\n",
"print(\"dE from A -> D %8.3f Kcal/mol\" % (Group_D_E - Group_A_E))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The energies of the 4 corners calculated here are internal energy, or enthalpy H if PV (pressure, Volume) remains constant.\n",
"\n",
"If one wants to know the free energy change of the thermal dynamic box, use the population at each state."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"G_AB = -math.log(get_count(Group_B_ms)/get_count(Group_A_ms))/Kcal2kT\n",
"G_BD = -math.log(get_count(Group_D_ms)/get_count(Group_B_ms))/Kcal2kT\n",
"G_AC = -math.log(get_count(Group_C_ms)/get_count(Group_A_ms))/Kcal2kT\n",
"G_CD = -math.log(get_count(Group_D_ms)/get_count(Group_C_ms))/Kcal2kT"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Box with dG:\n",
"\n",
"dG from A -> B -1.274 Kcal/mol\n",
"dG from B -> D 1.055 Kcal/mol\n",
"dG from A -> B -> D -0.219 Kcal/mol\n",
"\n",
"dG from A -> C -0.046 Kcal/mol\n",
"dG from C -> D -0.173 Kcal/mol\n",
"dG from A -> C -> D -0.219 Kcal/mol\n"
]
}
],
"source": [
"print(\"Box with dG:\\n\")\n",
"print(\"dG from A -> B %8.3f Kcal/mol\" % (G_AB))\n",
"print(\"dG from B -> D %8.3f Kcal/mol\" % (G_BD))\n",
"print(\"dG from A -> B -> D %8.3f Kcal/mol\" % (G_AB + G_BD))\n",
"print()\n",
"print(\"dG from A -> C %8.3f Kcal/mol\" % (G_AC))\n",
"print(\"dG from C -> D %8.3f Kcal/mol\" % (G_CD))\n",
"print(\"dG from A -> C -> D %8.3f Kcal/mol\" % (G_AC + G_CD))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is not accurate to calculate entropy from microstate counts as the counts are generally too small on high energy microstates."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Microstates in reduced expression\n",
"\n",
"The original microstate is composed by one conformer from each free residue. There are times we only need \"reduced\" microstates. For example, we may only care about ionizable residue and the ionization state of these residues. At other times, we only want to know the conformational changes of certain residues instead of all free residues.\n",
"\n",
"In either case, we can reduce the microstate expression and make the number of microstates significantly smaller.\n",
"\n",
"\n",
"### Example 1. Charge microstates\n",
"\n",
"Charge microstates have the similar structure as native microstate. It has elements:\n",
"* crg_stateid instead of stateid\n",
"* average_E instead of E\n",
"* count the same as count\n",
"\n",
"It has a function of state() the same as native microstate.\n",
"\n",
"To convert the from native microstates to charge states, use function in MC class MC.convert_to_chargems(). The charge microstate id has the same array length as native microstate so that they both match the number of free residues."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total number of charge microstates = 427\n"
]
}
],
"source": [
"# Convert to charge microstates\n",
"charge_microstates = mc.convert_to_charge_ms()\n",
"\n",
"print(\"Total number of charge microstates = %d\" % len(charge_microstates))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b'x\\x9c3T0T0\\x00b]\\x10\\x05b\\x18\\x82\\x05\\xe0\\\\\\x03\\x14\\x1a\\x01!\"\\xba(\\x14\\x16YC\\x1c\\xda\\x91t\\x18*`5\\xc4\\x10.\\x85\\xa6V\\xd7\\x10\\x00\\x0e\\x93\\x1cr'\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1]\n",
"344917\n",
"-204.51025260997434\n"
]
}
],
"source": [
"crg_ms0 = charge_microstates[0] # pick a microstate from charge microstates list\n",
"print(crg_ms0.crg_stateid) # microstate ID \n",
"print(crg_ms0.state()) # microstate ID human readable form \n",
"print(crg_ms0.count) # counts, how mane times this microstate has been chosen\n",
"print(crg_ms0.average_E) # microstate energy"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 50978 -203.57749330689668\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 58882 -202.47910099254497\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, -1] 61471 -201.8789185458995\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 67983 -200.71804274226\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, 0] 72865 -201.47805382378422\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 74470 -201.10773355333745\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 86232 -201.60794728353827\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 99015 -202.43797522412828\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 344917 -204.51025260997434\n",
"[1, 1, 0, 1, -1, 0, 0, 1, 1, 1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, -1, 0, 0, 0, 0, 1, 1, -1] 529489 -203.6102097518604\n",
"427 charge microstates\n",
"2200000 total microstates\n"
]
}
],
"source": [
"# Which charge microstate is the most dominant?\n",
"\n",
"charge_microstates.sort(key=lambda x: x.count)\n",
"total_crgms = 0\n",
"\n",
"for crg_ms in charge_microstates:\n",
" total_crgms += crg_ms.count\n",
"\n",
"for crg_ms in charge_microstates[-10:]:\n",
" print(crg_ms.state(), crg_ms.count, crg_ms.average_E)\n",
"print(\"%d charge microstates\" % len(charge_microstates))\n",
"print(\"%d total microstates\" % total_crgms)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### How do top charge microstates dominate the ms population"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"## Counts % Accum % Energy\n",
" 1 529489 0.241 0.241 -203.61\n",
" 2 344917 0.157 0.397 -204.51\n",
" 3 99015 0.045 0.442 -202.44\n",
" 4 86232 0.039 0.482 -201.61\n",
" 5 74470 0.034 0.516 -201.11\n",
" 6 72865 0.033 0.549 -201.48\n",
" 7 67983 0.031 0.580 -200.72\n",
" 8 61471 0.028 0.607 -201.88\n",
" 9 58882 0.027 0.634 -202.48\n",
"10 50978 0.023 0.657 -203.58\n",
"11 46268 0.021 0.678 -202.57\n",
"12 46071 0.021 0.699 -203.08\n",
"13 44289 0.020 0.720 -201.83\n",
"14 42522 0.019 0.739 -202.27\n",
"15 41954 0.019 0.758 -202.27\n",
"16 39670 0.018 0.776 -202.52\n",
"17 22483 0.010 0.786 -201.92\n",
"18 19815 0.009 0.795 -202.80\n",
"19 14581 0.007 0.802 -201.65\n",
"20 14460 0.007 0.808 -201.01\n",
"21 13377 0.006 0.814 -201.37\n",
"22 12633 0.006 0.820 -199.28\n",
"23 12361 0.006 0.826 -200.67\n",
"24 12030 0.005 0.831 -200.39\n",
"25 10144 0.005 0.836 -200.09\n",
"26 9988 0.005 0.840 -202.82\n",
"27 9934 0.005 0.845 -202.21\n",
"28 9839 0.004 0.849 -201.16\n",
"29 9431 0.004 0.854 -199.97\n",
"30 9423 0.004 0.858 -199.94\n",
"31 8989 0.004 0.862 -199.11\n",
"32 8035 0.004 0.866 -200.29\n",
"33 7076 0.003 0.869 -199.33\n",
"34 6765 0.003 0.872 -200.88\n",
"35 6699 0.003 0.875 -200.40\n",
"36 6604 0.003 0.878 -198.78\n",
"37 6530 0.003 0.881 -199.30\n",
"38 6423 0.003 0.884 -199.91\n",
"39 6338 0.003 0.887 -201.50\n",
"40 6236 0.003 0.890 -199.12\n",
"41 5966 0.003 0.892 -200.07\n",
"42 5861 0.003 0.895 -201.12\n",
"43 5743 0.003 0.898 -201.18\n",
"44 5505 0.003 0.900 -200.19\n",
"45 5480 0.002 0.903 -199.82\n",
"46 5414 0.002 0.905 -199.62\n",
"47 5347 0.002 0.908 -199.03\n",
"48 5155 0.002 0.910 -201.15\n",
"49 5134 0.002 0.912 -201.19\n",
"50 5029 0.002 0.915 -200.69\n"
]
}
],
"source": [
"top_picks = 50\n",
"top_crgms = charge_microstates[-top_picks:]\n",
"top_crgms.sort(key=lambda x: x.count, reverse=True)\n",
"top_counts = [x.count for x in top_crgms]\n",
"top_averageE = [x.average_E for x in top_crgms]\n",
"top_percentage = [x.count/total_crgms for x in top_crgms]\n",
"\n",
"print(\"## %8s %8s %8s %8s\" % (\"Counts\", \"%\", \"Accum %\", \"Energy\"))\n",
"accum_pct = 0.0\n",
"top_accum = []\n",
"for i in range(top_picks):\n",
" accum_pct += top_percentage[i]\n",
" top_accum.append(accum_pct)\n",
" print(\"%2d %8d %8.3f %8.3f %8.2f\" % (i+1, top_counts[i], top_percentage[i], accum_pct, top_averageE[i]))"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(10,6))\n",
"ax1 = fig.add_subplot(111)\n",
"ax1.set_ylim([0, 1])\n",
"ax1.scatter(range(top_picks), top_percentage, s=10, c='b', marker = \".\")\n",
"ax1.scatter(range(top_picks), top_accum, s=10, c='r', marker=\"x\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NTRA0001_ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1\n",
"GLUA0007_ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 0 -1 -1 -1\n",
"HISA0015_ 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0\n",
"GLUA0035_ 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 -1 -1 -1 0 0 -1 0 -1 -1 0\n",
"ASPA0052_ -1 -1 -1 -1 0 -1 0 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 0 -1\n",
"ASPA0066_ -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 0 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1\n",
"ASPA0101_ 0 -1 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0\n",
"ASPA0119_ -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 -1 0\n",
"CTRA0129_ -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1\n"
]
}
],
"source": [
"# Top 30 charge microstates charge comparison\n",
"# print(len(mc.free_residue_names))\n",
"# print(len(top_crgms[0].state()))\n",
"for i_res in range(len(mc.free_residue_names)):\n",
" resname = mc.free_residue_names[i_res]\n",
" charges = []\n",
" for i in range(30):\n",
" charges.append(top_crgms[i].state()[i_res])\n",
" charges_str = \" \".join([\"%2d\" % x for x in charges])\n",
" if len(set(charges))>1: # only print the residues that have changed ionization\n",
" print(resname, charges_str)\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example 2: Reduce to selected residues\n",
"\n",
"Let's say we are only interested in residues:\n",
"* ASNA0046_\n",
"* GLUA0035_\n",
"* ASPA0052_\n",
"\n",
"The microstates will use the iconf selection of these residues only. The actual microstates will be grouped based on the conformer selection of these three residues.\n",
"\n",
"Compare with the native microstate\n",
"* sub_stateid instead of stateid\n",
"* average_E instead of E\n",
"* count the same as count\n",
"\n",
"It has a function of state() the same as native microstate.\n",
"\n",
"To convert the from native microstates to charge states, use function in MC class MC.convert_to_subset_ms(). The subset microstate id has the length of residues of interest provided.\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"res_of_interest = [\"ASNA0046_\", \"GLUA0035_\", \"ASPA0052_\"]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"# Convert to subset microstates\n",
"subset_microstates = mc.convert_to_subset_ms(res_of_interest)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check basic information\n",
"* how many microstates\n",
"* count of each microstate\n",
"* average energy of the microstate"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total number of subset microstates 677\n"
]
}
],
"source": [
"print(\"Total number of subset microstates %d\" % len(subset_microstates))"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ASNA0046_ [402, 403, 404, 405, 407, 408, 409, 410]\n",
"GLUA0035_ [253, 254, 258, 259, 261, 263, 264]\n",
"ASPA0052_ [501, 502, 503, 505, 508, 509, 510, 511, 512, 513, 515, 516, 517, 518, 519, 520, 521, 522, 523]\n",
"Maximum possible microstates: 1064\n"
]
}
],
"source": [
"# Show selectable conformers\n",
"Total_max = 1\n",
"for res in res_of_interest:\n",
" ires = mc.free_residue_names.index(res)\n",
" confs = mc.free_residues[ires]\n",
" print(res, confs)\n",
" Total_max *= len(confs)\n",
" \n",
"print(\"Maximum possible microstates: %d\" % Total_max)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[402, 261, 519]: count = 414555, E_average = -203.893\n",
"[402, 254, 519]: count = 298812, E_average = -203.901\n",
"[402, 261, 521]: count = 107210, E_average = -202.987\n",
"[402, 254, 521]: count = 81293, E_average = -202.702\n",
"[402, 263, 519]: count = 78448, E_average = -202.603\n",
"[402, 261, 523]: count = 76403, E_average = -202.637\n",
"[410, 261, 519]: count = 71473, E_average = -202.688\n",
"[402, 264, 519]: count = 66635, E_average = -202.485\n",
"[402, 254, 523]: count = 62482, E_average = -202.439\n",
"[410, 254, 519]: count = 57355, E_average = -202.505\n",
"[402, 259, 519]: count = 34525, E_average = -202.629\n",
"[402, 253, 519]: count = 22081, E_average = -202.000\n",
"[410, 261, 523]: count = 21582, E_average = -201.657\n",
"[402, 261, 520]: count = 20059, E_average = -201.899\n",
"[410, 261, 521]: count = 19911, E_average = -201.432\n",
"[402, 263, 521]: count = 16709, E_average = -201.686\n",
"[402, 264, 521]: count = 14852, E_average = -201.477\n",
"[402, 263, 513]: count = 14337, E_average = -201.182\n",
"[410, 254, 521]: count = 14045, E_average = -201.811\n",
"[402, 254, 520]: count = 13790, E_average = -201.067\n",
"[410, 254, 523]: count = 13767, E_average = -201.127\n",
"[410, 263, 519]: count = 13232, E_average = -201.928\n",
"[402, 263, 523]: count = 12809, E_average = -201.699\n",
"[402, 264, 523]: count = 12462, E_average = -202.440\n",
"[402, 254, 522]: count = 12399, E_average = -201.348\n",
"[402, 261, 522]: count = 11573, E_average = -200.923\n",
"[409, 261, 519]: count = 10820, E_average = -201.731\n",
"[405, 261, 519]: count = 10310, E_average = -202.177\n",
"[410, 264, 519]: count = 10201, E_average = -201.456\n",
"[402, 259, 521]: count = 9533, E_average = -202.001\n",
"[402, 264, 513]: count = 9288, E_average = -201.330\n",
"[402, 258, 519]: count = 9033, E_average = -201.364\n",
"[402, 263, 505]: count = 7864, E_average = -201.320\n",
"[410, 259, 519]: count = 7730, E_average = -201.694\n",
"[402, 261, 513]: count = 7556, E_average = -200.756\n",
"[409, 261, 521]: count = 7542, E_average = -201.444\n",
"[402, 259, 523]: count = 7082, E_average = -201.249\n",
"[409, 254, 519]: count = 7019, E_average = -201.187\n",
"[403, 261, 519]: count = 6856, E_average = -202.092\n",
"[409, 261, 510]: count = 6204, E_average = -201.248\n",
"[402, 264, 505]: count = 6202, E_average = -200.403\n",
"[403, 261, 521]: count = 5889, E_average = -200.707\n",
"[402, 253, 523]: count = 5671, E_average = -200.562\n",
"[410, 263, 513]: count = 5636, E_average = -200.518\n",
"[405, 254, 519]: count = 5504, E_average = -202.027\n",
"[409, 263, 511]: count = 5302, E_average = -203.413\n",
"[409, 263, 510]: count = 5160, E_average = -201.486\n",
"[408, 263, 510]: count = 5031, E_average = -201.051\n",
"[402, 261, 511]: count = 5008, E_average = -200.082\n",
"[409, 261, 511]: count = 4986, E_average = -201.745\n",
"[410, 253, 519]: count = 4916, E_average = -200.864\n",
"[408, 261, 519]: count = 4837, E_average = -202.155\n",
"[408, 261, 510]: count = 4821, E_average = -201.692\n",
"[403, 263, 510]: count = 4757, E_average = -201.597\n",
"[402, 253, 521]: count = 4752, E_average = -201.533\n",
"[402, 254, 513]: count = 4696, E_average = -202.306\n",
"[409, 264, 510]: count = 4549, E_average = -200.894\n",
"[409, 254, 521]: count = 4355, E_average = -200.589\n",
"[403, 254, 519]: count = 4310, E_average = -200.326\n",
"[409, 261, 523]: count = 4152, E_average = -200.925\n",
"[403, 254, 510]: count = 4145, E_average = -202.154\n",
"[405, 261, 521]: count = 4039, E_average = -199.476\n",
"[409, 254, 523]: count = 4004, E_average = -199.846\n",
"[408, 264, 510]: count = 3952, E_average = -201.441\n",
"[409, 264, 511]: count = 3928, E_average = -202.157\n",
"[408, 263, 511]: count = 3749, E_average = -200.972\n",
"[403, 261, 510]: count = 3671, E_average = -202.051\n",
"[402, 263, 512]: count = 3567, E_average = -198.433\n",
"[409, 254, 511]: count = 3548, E_average = -201.018\n",
"[408, 254, 519]: count = 3413, E_average = -199.994\n",
"[402, 263, 522]: count = 3396, E_average = -201.677\n",
"[410, 264, 513]: count = 3258, E_average = -201.643\n",
"[402, 263, 511]: count = 3255, E_average = -201.085\n",
"[410, 263, 521]: count = 3235, E_average = -201.326\n",
"[403, 263, 511]: count = 3190, E_average = -201.740\n",
"[405, 261, 511]: count = 3145, E_average = -200.266\n",
"[403, 254, 521]: count = 3127, E_average = -200.951\n",
"[408, 254, 510]: count = 3106, E_average = -200.772\n",
"[402, 263, 516]: count = 3050, E_average = -199.804\n",
"[410, 261, 520]: count = 2922, E_average = -201.676\n",
"[402, 263, 510]: count = 2915, E_average = -200.597\n",
"[410, 264, 521]: count = 2888, E_average = -200.763\n",
"[410, 263, 505]: count = 2881, E_average = -202.468\n",
"[409, 254, 517]: count = 2766, E_average = -199.112\n",
"[410, 263, 523]: count = 2764, E_average = -200.848\n",
"[409, 254, 510]: count = 2736, E_average = -201.598\n",
"[408, 261, 511]: count = 2728, E_average = -201.687\n",
"[410, 254, 520]: count = 2726, E_average = -201.059\n",
"[405, 263, 510]: count = 2717, E_average = -201.129\n",
"[402, 264, 522]: count = 2680, E_average = -199.596\n",
"[405, 261, 510]: count = 2630, E_average = -200.845\n",
"[408, 264, 511]: count = 2628, E_average = -200.476\n",
"[402, 261, 505]: count = 2582, E_average = -201.543\n",
"[410, 261, 522]: count = 2536, E_average = -201.083\n",
"[402, 254, 505]: count = 2524, E_average = -201.433\n",
"[402, 263, 520]: count = 2489, E_average = -201.042\n",
"[402, 264, 511]: count = 2485, E_average = -200.309\n",
"[408, 261, 521]: count = 2479, E_average = -199.493\n",
"[409, 263, 513]: count = 2468, E_average = -201.159\n",
"[402, 259, 522]: count = 2452, E_average = -201.090\n",
"[410, 264, 523]: count = 2414, E_average = -200.415\n",
"[405, 261, 523]: count = 2403, E_average = -199.640\n",
"[408, 254, 511]: count = 2387, E_average = -201.403\n",
"[409, 261, 517]: count = 2273, E_average = -198.776\n",
"[403, 264, 510]: count = 2250, E_average = -200.943\n",
"[410, 264, 505]: count = 2248, E_average = -200.038\n",
"[410, 254, 513]: count = 2242, E_average = -201.338\n",
"[410, 261, 513]: count = 2224, E_average = -201.247\n",
"[408, 263, 517]: count = 2210, E_average = -201.324\n",
"[402, 258, 521]: count = 2192, E_average = -199.500\n",
"[404, 261, 519]: count = 2188, E_average = -202.931\n",
"[402, 261, 516]: count = 2186, E_average = -199.178\n",
"[405, 254, 523]: count = 2161, E_average = -200.474\n",
"[403, 261, 523]: count = 2158, E_average = -201.110\n",
"[403, 261, 517]: count = 2152, E_average = -201.318\n",
"[408, 254, 521]: count = 2066, E_average = -200.469\n",
"[402, 261, 501]: count = 2063, E_average = -199.550\n",
"[403, 261, 511]: count = 2047, E_average = -200.751\n",
"[403, 254, 523]: count = 1978, E_average = -200.851\n",
"[405, 263, 511]: count = 1969, E_average = -200.855\n",
"[410, 261, 511]: count = 1966, E_average = -199.880\n",
"[408, 261, 523]: count = 1863, E_average = -201.262\n",
"[410, 263, 512]: count = 1839, E_average = -200.415\n",
"[405, 254, 521]: count = 1791, E_average = -200.370\n",
"[402, 264, 510]: count = 1774, E_average = -199.466\n",
"[410, 263, 511]: count = 1772, E_average = -202.646\n",
"[402, 254, 511]: count = 1742, E_average = -200.904\n",
"[402, 264, 520]: count = 1727, E_average = -200.079\n",
"[410, 261, 505]: count = 1709, E_average = -201.212\n",
"[409, 263, 517]: count = 1708, E_average = -200.540\n",
"[402, 261, 510]: count = 1707, E_average = -198.935\n",
"[402, 264, 512]: count = 1707, E_average = -199.936\n",
"[409, 263, 519]: count = 1697, E_average = -200.555\n",
"[410, 264, 511]: count = 1663, E_average = -200.909\n",
"[402, 263, 501]: count = 1661, E_average = -199.889\n",
"[402, 264, 516]: count = 1644, E_average = -196.668\n",
"[402, 259, 520]: count = 1622, E_average = -200.969\n",
"[408, 261, 517]: count = 1619, E_average = -200.040\n",
"[402, 264, 502]: count = 1592, E_average = -199.485\n",
"[409, 261, 520]: count = 1570, E_average = -201.182\n",
"[410, 261, 502]: count = 1568, E_average = -198.664\n",
"[408, 264, 517]: count = 1548, E_average = -199.518\n",
"[409, 264, 513]: count = 1533, E_average = -201.606\n",
"[402, 258, 523]: count = 1531, E_average = -200.802\n",
"[409, 264, 519]: count = 1512, E_average = -200.533\n",
"[410, 259, 521]: count = 1499, E_average = -201.128\n",
"[408, 254, 523]: count = 1496, E_average = -200.579\n",
"[410, 253, 523]: count = 1486, E_average = -199.694\n",
"[405, 254, 511]: count = 1468, E_average = -200.992\n",
"[409, 261, 513]: count = 1462, E_average = -199.700\n",
"[409, 254, 520]: count = 1438, E_average = -200.573\n",
"[405, 264, 510]: count = 1436, E_average = -201.433\n",
"[408, 263, 509]: count = 1436, E_average = -198.944\n",
"[405, 254, 510]: count = 1418, E_average = -199.906\n",
"[405, 263, 519]: count = 1390, E_average = -200.401\n",
"[403, 264, 511]: count = 1385, E_average = -199.282\n",
"[410, 254, 522]: count = 1379, E_average = -199.764\n",
"[402, 254, 516]: count = 1378, E_average = -200.029\n",
"[410, 254, 511]: count = 1330, E_average = -201.500\n",
"[403, 264, 517]: count = 1293, E_average = -201.110\n",
"[403, 264, 513]: count = 1291, E_average = -200.726\n",
"[410, 259, 523]: count = 1285, E_average = -199.979\n",
"[402, 264, 501]: count = 1275, E_average = -199.364\n",
"[405, 259, 519]: count = 1268, E_average = -201.272\n",
"[410, 254, 505]: count = 1264, E_average = -199.339\n",
"[402, 264, 515]: count = 1249, E_average = -201.411\n",
"[403, 254, 511]: count = 1244, E_average = -199.459\n",
"[405, 264, 511]: count = 1239, E_average = -201.746\n",
"[402, 263, 517]: count = 1229, E_average = -199.951\n",
"[410, 264, 501]: count = 1189, E_average = -199.300\n",
"[410, 258, 521]: count = 1187, E_average = -198.411\n",
"[402, 254, 502]: count = 1166, E_average = -200.238\n",
"[402, 254, 510]: count = 1149, E_average = -199.992\n",
"[409, 259, 510]: count = 1146, E_average = -198.871\n",
"[409, 261, 505]: count = 1146, E_average = -200.612\n",
"[402, 261, 512]: count = 1125, E_average = -200.073\n",
"[409, 261, 501]: count = 1078, E_average = -199.097\n",
"[410, 261, 510]: count = 1075, E_average = -198.303\n",
"[409, 263, 501]: count = 1045, E_average = -200.017\n",
"[402, 253, 522]: count = 1044, E_average = -200.821\n",
"[409, 264, 501]: count = 1042, E_average = -201.277\n",
"[409, 254, 513]: count = 1040, E_average = -201.704\n",
"[403, 263, 502]: count = 1039, E_average = -199.730\n",
"[408, 261, 502]: count = 1039, E_average = -199.176\n",
"[409, 263, 505]: count = 1027, E_average = -200.565\n",
"[403, 263, 517]: count = 1026, E_average = -200.781\n",
"[403, 263, 513]: count = 1021, E_average = -200.804\n",
"[402, 254, 501]: count = 1019, E_average = -198.666\n",
"[402, 263, 502]: count = 1017, E_average = -198.535\n",
"[410, 263, 510]: count = 1015, E_average = -200.687\n",
"[410, 261, 512]: count = 1014, E_average = -201.601\n",
"[409, 264, 505]: count = 1010, E_average = -200.462\n",
"[402, 264, 517]: count = 1005, E_average = -198.308\n",
"[408, 254, 517]: count = 993, E_average = -198.931\n",
"[403, 259, 510]: count = 990, E_average = -198.455\n",
"[402, 253, 520]: count = 987, E_average = -201.876\n",
"[409, 261, 502]: count = 986, E_average = -201.494\n",
"[403, 254, 517]: count = 981, E_average = -200.677\n",
"[408, 254, 508]: count = 972, E_average = -199.043\n",
"[402, 263, 515]: count = 961, E_average = -199.181\n",
"[409, 263, 512]: count = 955, E_average = -200.699\n",
"[403, 261, 509]: count = 942, E_average = -200.368\n",
"[403, 254, 513]: count = 941, E_average = -201.410\n",
"[403, 264, 519]: count = 939, E_average = -200.098\n",
"[409, 254, 505]: count = 935, E_average = -200.420\n",
"[410, 264, 502]: count = 930, E_average = -198.705\n",
"[409, 261, 508]: count = 916, E_average = -202.081\n",
"[402, 261, 517]: count = 908, E_average = -201.454\n",
"[409, 259, 519]: count = 906, E_average = -201.284\n",
"[402, 261, 502]: count = 897, E_average = -199.008\n",
"[403, 254, 520]: count = 887, E_average = -197.917\n",
"[403, 264, 501]: count = 873, E_average = -200.584\n",
"[405, 261, 520]: count = 870, E_average = -198.827\n",
"[405, 264, 519]: count = 869, E_average = -200.608\n",
"[409, 261, 516]: count = 857, E_average = -202.135\n",
"[410, 264, 512]: count = 847, E_average = -198.312\n",
"[403, 261, 502]: count = 845, E_average = -199.090\n",
"[410, 254, 501]: count = 845, E_average = -199.292\n",
"[403, 261, 501]: count = 835, E_average = -198.555\n",
"[409, 254, 516]: count = 816, E_average = -200.263\n",
"[408, 264, 509]: count = 805, E_average = -199.955\n",
"[405, 253, 519]: count = 796, E_average = -200.452\n",
"[409, 259, 517]: count = 779, E_average = -197.369\n",
"[405, 254, 517]: count = 777, E_average = -200.446\n",
"[403, 261, 513]: count = 772, E_average = -203.479\n",
"[402, 254, 517]: count = 760, E_average = -197.797\n",
"[404, 254, 519]: count = 749, E_average = -199.293\n",
"[409, 259, 521]: count = 746, E_average = -202.062\n",
"[403, 263, 509]: count = 739, E_average = -199.064\n",
"[410, 263, 515]: count = 718, E_average = -199.337\n",
"[409, 254, 515]: count = 715, E_average = -197.235\n",
"[402, 258, 522]: count = 706, E_average = -200.348\n",
"[409, 264, 517]: count = 690, E_average = -200.739\n",
"[405, 261, 505]: count = 684, E_average = -200.120\n",
"[409, 263, 521]: count = 682, E_average = -200.577\n",
"[408, 261, 503]: count = 682, E_average = -200.734\n",
"[409, 264, 502]: count = 682, E_average = -199.567\n",
"[408, 259, 517]: count = 678, E_average = -201.754\n",
"[409, 254, 501]: count = 677, E_average = -199.622\n",
"[409, 263, 523]: count = 674, E_average = -198.736\n",
"[408, 261, 508]: count = 673, E_average = -199.999\n",
"[410, 261, 501]: count = 671, E_average = -199.892\n",
"[410, 264, 516]: count = 670, E_average = -202.066\n",
"[405, 264, 505]: count = 668, E_average = -201.355\n",
"[410, 253, 521]: count = 653, E_average = -199.592\n",
"[405, 263, 505]: count = 652, E_average = -201.123\n",
"[403, 263, 519]: count = 652, E_average = -201.567\n",
"[408, 261, 501]: count = 649, E_average = -199.184\n",
"[403, 259, 519]: count = 639, E_average = -200.709\n",
"[403, 261, 505]: count = 631, E_average = -199.527\n",
"[403, 254, 501]: count = 625, E_average = -201.427\n",
"[408, 254, 502]: count = 606, E_average = -200.512\n",
"[403, 263, 521]: count = 601, E_average = -200.111\n",
"[403, 264, 505]: count = 593, E_average = -200.552\n",
"[408, 264, 519]: count = 591, E_average = -200.607\n",
"[402, 261, 503]: count = 588, E_average = -199.060\n",
"[408, 263, 501]: count = 585, E_average = -200.658\n",
"[408, 261, 509]: count = 585, E_average = -196.558\n",
"[402, 259, 513]: count = 583, E_average = -200.010\n",
"[409, 263, 509]: count = 579, E_average = -200.538\n",
"[410, 261, 517]: count = 579, E_average = -198.280\n",
"[409, 253, 510]: count = 576, E_average = -197.328\n",
"[403, 263, 505]: count = 573, E_average = -200.274\n",
"[410, 263, 516]: count = 570, E_average = -198.975\n",
"[409, 264, 512]: count = 568, E_average = -196.652\n",
"[410, 254, 517]: count = 566, E_average = -199.866\n",
"[408, 254, 509]: count = 564, E_average = -197.675\n",
"[410, 258, 519]: count = 560, E_average = -201.237\n",
"[405, 264, 513]: count = 559, E_average = -199.460\n",
"[404, 261, 523]: count = 554, E_average = -200.059\n",
"[409, 261, 509]: count = 549, E_average = -197.908\n",
"[408, 264, 502]: count = 546, E_average = -200.601\n",
"[409, 264, 521]: count = 542, E_average = -201.810\n",
"[409, 254, 503]: count = 537, E_average = -200.283\n",
"[409, 253, 511]: count = 536, E_average = -200.579\n",
"[408, 254, 501]: count = 536, E_average = -193.484\n",
"[410, 254, 516]: count = 534, E_average = -199.280\n",
"[405, 259, 510]: count = 534, E_average = -199.537\n",
"[405, 261, 516]: count = 532, E_average = -197.002\n",
"[410, 264, 510]: count = 515, E_average = -201.413\n",
"[408, 259, 502]: count = 513, E_average = -199.238\n",
"[405, 264, 517]: count = 510, E_average = -197.639\n",
"[409, 263, 503]: count = 506, E_average = -201.611\n",
"[409, 259, 511]: count = 504, E_average = -200.527\n",
"[405, 263, 521]: count = 502, E_average = -199.885\n",
"[402, 258, 520]: count = 502, E_average = -199.133\n",
"[410, 264, 517]: count = 499, E_average = -197.306\n",
"[410, 254, 510]: count = 498, E_average = -200.787\n",
"[408, 263, 502]: count = 484, E_average = -200.629\n",
"[405, 261, 522]: count = 481, E_average = -200.428\n",
"[410, 258, 523]: count = 480, E_average = -198.708\n",
"[405, 264, 502]: count = 470, E_average = -201.093\n",
"[403, 261, 508]: count = 468, E_average = -199.976\n",
"[404, 259, 519]: count = 460, E_average = -203.111\n",
"[403, 253, 519]: count = 454, E_average = -200.140\n",
"[403, 261, 520]: count = 453, E_average = -199.646\n",
"[408, 261, 516]: count = 451, E_average = -196.396\n",
"[403, 254, 509]: count = 450, E_average = -197.621\n",
"[404, 263, 511]: count = 449, E_average = -199.852\n",
"[405, 261, 502]: count = 449, E_average = -197.632\n",
"[403, 264, 509]: count = 447, E_average = -200.310\n",
"[404, 254, 521]: count = 447, E_average = -199.377\n",
"[405, 259, 511]: count = 442, E_average = -198.698\n",
"[402, 254, 512]: count = 440, E_average = -198.775\n",
"[403, 259, 517]: count = 436, E_average = -200.060\n",
"[402, 261, 515]: count = 433, E_average = -198.881\n",
"[409, 253, 519]: count = 432, E_average = -200.413\n",
"[410, 264, 515]: count = 432, E_average = -197.781\n",
"[409, 259, 512]: count = 432, E_average = -200.394\n",
"[403, 259, 521]: count = 430, E_average = -200.760\n",
"[410, 263, 501]: count = 429, E_average = -199.493\n",
"[405, 261, 513]: count = 429, E_average = -197.308\n",
"[402, 254, 515]: count = 422, E_average = -200.111\n",
"[408, 263, 513]: count = 418, E_average = -199.811\n",
"[410, 254, 512]: count = 416, E_average = -199.647\n",
"[409, 263, 502]: count = 411, E_average = -199.991\n",
"[405, 264, 521]: count = 407, E_average = -198.581\n",
"[403, 264, 521]: count = 404, E_average = -196.686\n",
"[404, 254, 523]: count = 402, E_average = -198.106\n",
"[405, 261, 517]: count = 402, E_average = -197.907\n",
"[405, 264, 523]: count = 401, E_average = -200.135\n",
"[403, 261, 503]: count = 398, E_average = -200.160\n",
"[403, 259, 523]: count = 396, E_average = -203.110\n",
"[402, 264, 503]: count = 392, E_average = -198.138\n",
"[402, 263, 503]: count = 392, E_average = -198.267\n",
"[405, 261, 509]: count = 387, E_average = -200.579\n",
"[409, 263, 516]: count = 386, E_average = -204.585\n",
"[410, 261, 503]: count = 379, E_average = -197.561\n",
"[409, 259, 520]: count = 368, E_average = -196.202\n",
"[410, 261, 515]: count = 365, E_average = -200.714\n",
"[409, 264, 515]: count = 365, E_average = -199.337\n",
"[408, 261, 520]: count = 361, E_average = -200.828\n",
"[405, 263, 513]: count = 358, E_average = -201.358\n",
"[405, 254, 513]: count = 357, E_average = -200.395\n",
"[409, 263, 508]: count = 356, E_average = -201.210\n",
"[409, 254, 509]: count = 354, E_average = -200.441\n",
"[403, 264, 512]: count = 354, E_average = -196.637\n",
"[409, 259, 513]: count = 354, E_average = -198.263\n",
"[402, 259, 515]: count = 348, E_average = -200.370\n",
"[410, 261, 516]: count = 347, E_average = -200.130\n",
"[409, 254, 522]: count = 345, E_average = -203.815\n",
"[403, 263, 516]: count = 343, E_average = -199.995\n",
"[410, 264, 503]: count = 334, E_average = -199.518\n",
"[409, 264, 516]: count = 333, E_average = -196.914\n",
"[403, 254, 502]: count = 325, E_average = -199.691\n",
"[402, 259, 517]: count = 321, E_average = -194.437\n",
"[403, 253, 510]: count = 318, E_average = -199.914\n",
"[410, 263, 517]: count = 315, E_average = -200.260\n",
"[409, 254, 502]: count = 314, E_average = -203.221\n",
"[405, 263, 502]: count = 311, E_average = -198.853\n",
"[408, 261, 513]: count = 310, E_average = -202.031\n",
"[409, 261, 522]: count = 310, E_average = -199.357\n",
"[405, 264, 516]: count = 308, E_average = -194.135\n",
"[408, 259, 510]: count = 307, E_average = -201.439\n",
"[403, 263, 508]: count = 307, E_average = -197.903\n",
"[405, 253, 510]: count = 304, E_average = -200.250\n",
"[410, 263, 522]: count = 303, E_average = -201.105\n",
"[402, 254, 503]: count = 303, E_average = -201.237\n",
"[408, 261, 518]: count = 301, E_average = -199.155\n",
"[410, 259, 511]: count = 300, E_average = -200.584\n",
"[408, 254, 520]: count = 298, E_average = -198.026\n",
"[410, 259, 505]: count = 298, E_average = -199.372\n",
"[405, 264, 501]: count = 297, E_average = -199.731\n",
"[409, 261, 512]: count = 296, E_average = -200.952\n",
"[402, 253, 513]: count = 296, E_average = -201.303\n",
"[403, 254, 505]: count = 296, E_average = -199.472\n",
"[403, 263, 503]: count = 295, E_average = -201.003\n",
"[403, 264, 516]: count = 292, E_average = -203.095\n",
"[403, 264, 522]: count = 285, E_average = -202.270\n",
"[408, 264, 501]: count = 282, E_average = -197.759\n",
"[403, 263, 501]: count = 281, E_average = -199.814\n",
"[404, 264, 519]: count = 280, E_average = -196.907\n",
"[403, 261, 512]: count = 280, E_average = -202.352\n",
"[405, 254, 505]: count = 279, E_average = -202.184\n",
"[409, 253, 521]: count = 278, E_average = -198.047\n",
"[402, 253, 505]: count = 277, E_average = -198.380\n",
"[408, 259, 508]: count = 277, E_average = -196.807\n",
"[408, 263, 512]: count = 273, E_average = -196.444\n",
"[409, 261, 515]: count = 272, E_average = -199.662\n",
"[402, 259, 516]: count = 271, E_average = -200.964\n",
"[410, 258, 520]: count = 269, E_average = -196.016\n",
"[403, 253, 501]: count = 267, E_average = -199.638\n",
"[408, 259, 509]: count = 266, E_average = -199.904\n",
"[403, 264, 515]: count = 260, E_average = -198.960\n",
"[403, 264, 502]: count = 257, E_average = -199.117\n",
"[405, 259, 521]: count = 256, E_average = -199.709\n",
"[407, 254, 521]: count = 255, E_average = -195.505\n",
"[409, 254, 512]: count = 254, E_average = -202.086\n",
"[404, 261, 521]: count = 251, E_average = -201.116\n",
"[402, 259, 502]: count = 248, E_average = -196.813\n",
"[408, 259, 511]: count = 247, E_average = -199.269\n",
"[402, 253, 512]: count = 246, E_average = -200.201\n",
"[408, 261, 505]: count = 245, E_average = -196.488\n",
"[410, 254, 502]: count = 240, E_average = -197.992\n",
"[405, 258, 519]: count = 238, E_average = -196.208\n",
"[403, 263, 512]: count = 238, E_average = -201.557\n",
"[402, 259, 511]: count = 238, E_average = -201.933\n",
"[408, 264, 508]: count = 236, E_average = -201.399\n",
"[410, 253, 505]: count = 232, E_average = -196.933\n",
"[405, 254, 520]: count = 231, E_average = -200.624\n",
"[410, 254, 503]: count = 231, E_average = -200.726\n",
"[410, 259, 522]: count = 231, E_average = -196.400\n",
"[403, 264, 508]: count = 231, E_average = -196.113\n",
"[403, 253, 511]: count = 230, E_average = -203.418\n",
"[409, 259, 523]: count = 230, E_average = -200.175\n",
"[402, 259, 505]: count = 230, E_average = -200.418\n",
"[409, 264, 503]: count = 230, E_average = -200.068\n",
"[405, 254, 516]: count = 226, E_average = -198.607\n",
"[409, 264, 523]: count = 224, E_average = -198.868\n",
"[409, 259, 501]: count = 221, E_average = -201.799\n",
"[409, 263, 515]: count = 220, E_average = -203.248\n",
"[408, 261, 522]: count = 219, E_average = -199.670\n",
"[409, 259, 505]: count = 219, E_average = -197.200\n",
"[408, 263, 508]: count = 217, E_average = -198.432\n",
"[403, 253, 523]: count = 217, E_average = -198.741\n",
"[408, 259, 518]: count = 215, E_average = -200.141\n",
"[410, 254, 515]: count = 214, E_average = -199.277\n",
"[403, 254, 516]: count = 211, E_average = -198.084\n",
"[405, 263, 517]: count = 210, E_average = -198.368\n",
"[402, 259, 501]: count = 210, E_average = -196.274\n",
"[410, 263, 502]: count = 209, E_average = -202.352\n",
"[409, 258, 510]: count = 208, E_average = -195.103\n",
"[408, 254, 513]: count = 207, E_average = -200.433\n",
"[409, 254, 518]: count = 206, E_average = -200.166\n",
"[410, 259, 520]: count = 205, E_average = -200.479\n",
"[409, 264, 509]: count = 203, E_average = -199.724\n",
"[410, 263, 503]: count = 201, E_average = -199.176\n",
"[410, 264, 522]: count = 200, E_average = -197.628\n",
"[405, 261, 501]: count = 197, E_average = -196.827\n",
"[404, 263, 523]: count = 197, E_average = -199.069\n",
"[410, 263, 520]: count = 194, E_average = -197.884\n",
"[403, 264, 518]: count = 192, E_average = -198.542\n",
"[405, 258, 510]: count = 191, E_average = -197.201\n",
"[403, 254, 512]: count = 191, E_average = -199.475\n",
"[403, 261, 516]: count = 190, E_average = -197.690\n",
"[404, 258, 519]: count = 190, E_average = -199.378\n",
"[404, 264, 521]: count = 188, E_average = -201.396\n",
"[410, 259, 515]: count = 187, E_average = -192.652\n",
"[405, 253, 523]: count = 185, E_average = -199.407\n",
"[405, 254, 501]: count = 185, E_average = -198.581\n",
"[409, 261, 503]: count = 181, E_average = -199.802\n",
"[410, 263, 508]: count = 181, E_average = -197.502\n",
"[409, 258, 519]: count = 180, E_average = -200.779\n",
"[404, 261, 522]: count = 180, E_average = -197.820\n",
"[408, 263, 519]: count = 179, E_average = -199.164\n",
"[405, 254, 508]: count = 179, E_average = -195.873\n",
"[405, 258, 523]: count = 178, E_average = -198.142\n",
"[408, 253, 519]: count = 178, E_average = -195.102\n",
"[405, 264, 512]: count = 174, E_average = -205.043\n",
"[405, 263, 512]: count = 171, E_average = -201.554\n",
"[408, 253, 517]: count = 170, E_average = -195.195\n",
"[408, 254, 503]: count = 169, E_average = -201.623\n",
"[409, 264, 520]: count = 169, E_average = -197.003\n",
"[405, 263, 503]: count = 169, E_average = -196.442\n",
"[403, 258, 510]: count = 168, E_average = -204.370\n",
"[405, 264, 503]: count = 168, E_average = -195.822\n",
"[410, 259, 517]: count = 167, E_average = -198.679\n",
"[408, 263, 523]: count = 166, E_average = -198.543\n",
"[408, 254, 516]: count = 165, E_average = -196.750\n",
"[409, 263, 522]: count = 163, E_average = -199.104\n",
"[408, 264, 516]: count = 161, E_average = -201.281\n",
"[405, 259, 505]: count = 159, E_average = -196.312\n",
"[408, 259, 521]: count = 158, E_average = -200.696\n",
"[404, 264, 511]: count = 158, E_average = -196.799\n",
"[408, 264, 521]: count = 157, E_average = -197.860\n",
"[405, 253, 521]: count = 154, E_average = -198.664\n",
"[402, 259, 510]: count = 152, E_average = -198.383\n",
"[409, 258, 505]: count = 151, E_average = -202.560\n",
"[408, 259, 516]: count = 150, E_average = -200.814\n",
"[403, 261, 518]: count = 149, E_average = -196.239\n",
"[409, 253, 520]: count = 147, E_average = -197.486\n",
"[409, 253, 513]: count = 146, E_average = -201.672\n",
"[403, 258, 523]: count = 146, E_average = -200.591\n",
"[403, 259, 512]: count = 144, E_average = -200.952\n",
"[403, 259, 502]: count = 144, E_average = -200.011\n",
"[408, 253, 509]: count = 144, E_average = -193.227\n",
"[403, 253, 521]: count = 143, E_average = -198.708\n",
"[405, 263, 516]: count = 142, E_average = -200.127\n",
"[408, 259, 519]: count = 142, E_average = -199.646\n",
"[404, 263, 516]: count = 142, E_average = -198.095\n",
"[408, 253, 523]: count = 142, E_average = -197.342\n",
"[404, 264, 523]: count = 141, E_average = -197.813\n",
"[409, 263, 520]: count = 140, E_average = -201.713\n",
"[408, 264, 513]: count = 140, E_average = -200.392\n",
"[408, 264, 515]: count = 140, E_average = -197.479\n",
"[405, 254, 503]: count = 139, E_average = -196.980\n",
"[405, 261, 508]: count = 138, E_average = -198.649\n",
"[403, 258, 521]: count = 137, E_average = -198.286\n",
"[404, 254, 513]: count = 136, E_average = -200.449\n",
"[408, 264, 518]: count = 135, E_average = -200.494\n",
"[410, 253, 517]: count = 134, E_average = -198.615\n",
"[403, 264, 520]: count = 134, E_average = -196.968\n",
"[403, 258, 520]: count = 134, E_average = -193.965\n",
"[409, 261, 518]: count = 131, E_average = -195.333\n",
"[405, 261, 518]: count = 130, E_average = -198.066\n",
"[408, 261, 512]: count = 126, E_average = -201.047\n",
"[403, 263, 518]: count = 126, E_average = -198.511\n",
"[403, 263, 515]: count = 124, E_average = -195.034\n",
"[405, 261, 503]: count = 124, E_average = -192.937\n",
"[408, 254, 512]: count = 123, E_average = -197.168\n",
"[409, 253, 523]: count = 120, E_average = -202.904\n",
"[402, 259, 512]: count = 120, E_average = -196.997\n",
"[409, 264, 508]: count = 119, E_average = -200.285\n",
"[410, 259, 512]: count = 117, E_average = -199.200\n",
"[403, 254, 508]: count = 117, E_average = -202.815\n",
"[409, 259, 508]: count = 116, E_average = -200.629\n",
"[410, 259, 513]: count = 115, E_average = -200.571\n",
"[408, 259, 523]: count = 115, E_average = -200.573\n",
"[408, 253, 512]: count = 113, E_average = -195.282\n",
"[408, 253, 510]: count = 112, E_average = -198.851\n",
"[404, 263, 519]: count = 112, E_average = -204.566\n",
"[409, 259, 522]: count = 112, E_average = -193.924\n",
"[404, 253, 521]: count = 109, E_average = -206.130\n",
"[408, 264, 512]: count = 109, E_average = -201.737\n",
"[403, 253, 516]: count = 109, E_average = -199.755\n",
"[402, 261, 508]: count = 107, E_average = -199.793\n",
"[408, 253, 513]: count = 107, E_average = -199.511\n",
"[410, 264, 520]: count = 106, E_average = -199.952\n",
"[403, 253, 515]: count = 105, E_average = -196.012\n",
"[405, 259, 502]: count = 105, E_average = -195.849\n",
"[405, 253, 505]: count = 105, E_average = -195.132\n",
"[408, 263, 503]: count = 104, E_average = -203.157\n",
"[405, 259, 517]: count = 104, E_average = -197.181\n",
"[402, 258, 516]: count = 104, E_average = -196.676\n",
"[403, 253, 522]: count = 102, E_average = -203.785\n",
"[407, 254, 519]: count = 102, E_average = -197.971\n",
"[403, 258, 508]: count = 102, E_average = -196.824\n",
"[405, 264, 509]: count = 101, E_average = -197.066\n",
"[403, 253, 505]: count = 99, E_average = -200.267\n",
"[403, 259, 513]: count = 99, E_average = -196.300\n",
"[407, 261, 521]: count = 98, E_average = -195.407\n",
"[407, 263, 511]: count = 98, E_average = -193.152\n",
"[404, 264, 513]: count = 96, E_average = -201.726\n",
"[408, 263, 518]: count = 95, E_average = -198.092\n",
"[407, 263, 510]: count = 95, E_average = -197.948\n",
"[407, 258, 521]: count = 94, E_average = -191.380\n",
"[404, 254, 522]: count = 89, E_average = -202.762\n",
"[408, 258, 509]: count = 89, E_average = -198.526\n",
"[408, 259, 513]: count = 88, E_average = -199.623\n",
"[403, 259, 505]: count = 88, E_average = -194.493\n",
"[405, 258, 521]: count = 87, E_average = -196.186\n",
"[403, 261, 515]: count = 86, E_average = -200.718\n",
"[410, 258, 505]: count = 85, E_average = -203.636\n",
"[404, 254, 505]: count = 85, E_average = -201.573\n",
"[407, 254, 511]: count = 85, E_average = -200.466\n",
"[409, 254, 508]: count = 85, E_average = -200.252\n",
"[407, 263, 521]: count = 85, E_average = -195.602\n",
"[405, 261, 512]: count = 84, E_average = -197.965\n",
"[405, 264, 518]: count = 84, E_average = -190.795\n",
"[408, 264, 523]: count = 81, E_average = -205.698\n",
"[403, 253, 512]: count = 81, E_average = -199.254\n",
"[405, 254, 509]: count = 79, E_average = -201.258\n",
"[407, 263, 505]: count = 79, E_average = -197.757\n",
"[405, 254, 502]: count = 79, E_average = -197.302\n",
"[403, 259, 518]: count = 79, E_average = -195.242\n",
"[410, 261, 508]: count = 78, E_average = -193.333\n",
"[410, 259, 510]: count = 77, E_average = -197.213\n",
"[402, 264, 508]: count = 75, E_average = -203.355\n",
"[402, 253, 511]: count = 75, E_average = -198.837\n",
"[403, 259, 511]: count = 75, E_average = -197.502\n",
"[403, 263, 523]: count = 74, E_average = -198.305\n",
"[408, 264, 503]: count = 71, E_average = -202.273\n",
"[410, 253, 511]: count = 70, E_average = -198.477\n",
"[407, 264, 511]: count = 70, E_average = -195.597\n",
"[410, 258, 510]: count = 68, E_average = -196.397\n",
"[409, 258, 508]: count = 68, E_average = -194.466\n",
"[408, 254, 518]: count = 67, E_average = -197.670\n",
"[402, 263, 508]: count = 66, E_average = -199.833\n",
"[409, 259, 509]: count = 66, E_average = -198.147\n",
"[402, 253, 515]: count = 66, E_average = -199.932\n",
"[410, 258, 513]: count = 66, E_average = -198.910\n",
"[405, 259, 523]: count = 66, E_average = -195.216\n",
"[409, 259, 502]: count = 65, E_average = -205.421\n",
"[408, 259, 501]: count = 65, E_average = -200.117\n",
"[408, 263, 505]: count = 65, E_average = -199.613\n",
"[410, 258, 517]: count = 65, E_average = -195.440\n",
"[402, 261, 509]: count = 64, E_average = -194.590\n",
"[407, 261, 519]: count = 63, E_average = -203.670\n",
"[408, 253, 521]: count = 63, E_average = -199.431\n",
"[405, 261, 515]: count = 63, E_average = -201.446\n",
"[405, 263, 515]: count = 63, E_average = -200.258\n",
"[403, 259, 520]: count = 63, E_average = -197.261\n",
"[403, 258, 519]: count = 63, E_average = -195.290\n",
"[402, 253, 516]: count = 60, E_average = -199.016\n",
"[408, 259, 512]: count = 59, E_average = -197.179\n",
"[405, 253, 509]: count = 58, E_average = -195.770\n",
"[405, 263, 508]: count = 58, E_average = -192.750\n",
"[408, 258, 510]: count = 58, E_average = -192.068\n",
"[404, 254, 501]: count = 57, E_average = -192.117\n",
"[405, 253, 503]: count = 57, E_average = -193.289\n",
"[402, 258, 513]: count = 56, E_average = -205.035\n",
"[409, 258, 511]: count = 55, E_average = -201.161\n",
"[409, 264, 522]: count = 54, E_average = -200.813\n",
"[408, 263, 516]: count = 53, E_average = -198.866\n",
"[409, 253, 522]: count = 53, E_average = -206.009\n",
"[408, 264, 522]: count = 52, E_average = -197.535\n",
"[403, 258, 502]: count = 50, E_average = -206.175\n",
"[404, 261, 511]: count = 50, E_average = -199.745\n",
"[405, 253, 515]: count = 48, E_average = -198.890\n",
"[404, 254, 520]: count = 47, E_average = -204.460\n",
"[409, 264, 518]: count = 47, E_average = -199.191\n",
"[409, 253, 515]: count = 47, E_average = -195.634\n",
"[408, 253, 501]: count = 47, E_average = -196.510\n",
"[405, 259, 501]: count = 47, E_average = -193.606\n",
"[404, 261, 513]: count = 46, E_average = -196.827\n",
"[408, 258, 519]: count = 45, E_average = -200.829\n",
"[405, 254, 512]: count = 45, E_average = -201.642\n",
"[404, 259, 501]: count = 43, E_average = -195.417\n",
"[410, 259, 501]: count = 41, E_average = -190.386\n",
"[408, 258, 518]: count = 41, E_average = -198.025\n",
"[410, 253, 515]: count = 40, E_average = -196.190\n",
"[407, 259, 521]: count = 40, E_average = -193.630\n",
"[410, 259, 516]: count = 39, E_average = -202.253\n",
"[408, 254, 522]: count = 38, E_average = -202.842\n",
"[405, 263, 501]: count = 38, E_average = -194.784\n",
"[407, 261, 505]: count = 37, E_average = -207.727\n",
"[403, 264, 523]: count = 37, E_average = -206.301\n",
"[410, 253, 520]: count = 37, E_average = -197.549\n",
"[404, 264, 510]: count = 36, E_average = -206.446\n",
"[410, 253, 510]: count = 36, E_average = -198.965\n",
"[403, 259, 509]: count = 35, E_average = -189.557\n",
"[405, 263, 518]: count = 34, E_average = -195.860\n",
"[408, 253, 520]: count = 33, E_average = -199.728\n",
"[404, 264, 503]: count = 32, E_average = -196.460\n",
"[405, 263, 523]: count = 32, E_average = -193.506\n",
"[404, 254, 510]: count = 31, E_average = -203.027\n",
"[408, 253, 508]: count = 31, E_average = -194.308\n",
"[403, 259, 516]: count = 30, E_average = -199.106\n",
"[403, 258, 512]: count = 28, E_average = -194.976\n",
"[404, 261, 501]: count = 27, E_average = -192.620\n",
"[405, 253, 516]: count = 27, E_average = -194.301\n",
"[405, 258, 505]: count = 26, E_average = -193.933\n",
"[402, 253, 502]: count = 25, E_average = -199.223\n",
"[403, 261, 522]: count = 24, E_average = -203.597\n",
"[409, 258, 523]: count = 24, E_average = -201.488\n",
"[403, 263, 520]: count = 23, E_average = -197.942\n",
"[404, 261, 505]: count = 22, E_average = -196.592\n",
"[405, 263, 509]: count = 21, E_average = -193.602\n",
"[403, 258, 511]: count = 19, E_average = -197.313\n",
"[403, 254, 515]: count = 19, E_average = -198.546\n",
"[405, 259, 520]: count = 18, E_average = -198.313\n",
"[408, 263, 521]: count = 18, E_average = -194.405\n",
"[403, 264, 503]: count = 16, E_average = -197.972\n",
"[410, 253, 512]: count = 16, E_average = -196.725\n",
"[403, 259, 503]: count = 15, E_average = -199.117\n",
"[407, 261, 508]: count = 14, E_average = -206.636\n",
"[405, 264, 508]: count = 13, E_average = -196.820\n",
"[405, 254, 522]: count = 13, E_average = -195.764\n",
"[410, 258, 501]: count = 13, E_average = -192.717\n",
"[410, 261, 509]: count = 13, E_average = -192.205\n",
"[404, 263, 501]: count = 13, E_average = -191.178\n",
"[408, 253, 511]: count = 12, E_average = -202.288\n",
"[404, 264, 522]: count = 12, E_average = -199.906\n",
"[402, 258, 510]: count = 12, E_average = -193.385\n",
"[410, 253, 513]: count = 11, E_average = -196.897\n",
"[410, 264, 508]: count = 11, E_average = -197.133\n",
"[405, 264, 522]: count = 11, E_average = -194.828\n",
"[402, 253, 510]: count = 10, E_average = -203.108\n",
"[408, 253, 502]: count = 10, E_average = -198.438\n",
"[410, 258, 512]: count = 10, E_average = -196.356\n",
"[404, 253, 519]: count = 9, E_average = -200.855\n",
"[404, 254, 511]: count = 9, E_average = -199.396\n",
"[410, 254, 508]: count = 9, E_average = -194.011\n",
"[408, 258, 511]: count = 7, E_average = -203.281\n",
"[410, 258, 502]: count = 7, E_average = -201.084\n",
"[404, 258, 523]: count = 6, E_average = -201.931\n",
"[407, 264, 521]: count = 6, E_average = -194.624\n",
"[402, 258, 501]: count = 6, E_average = -193.680\n",
"[409, 253, 517]: count = 6, E_average = -192.727\n",
"[403, 254, 503]: count = 3, E_average = -206.926\n",
"[408, 261, 515]: count = 3, E_average = -192.611\n",
"[403, 263, 522]: count = 2, E_average = -202.476\n",
"[404, 264, 501]: count = 2, E_average = -199.399\n",
"[409, 259, 503]: count = 2, E_average = -198.957\n",
"[405, 259, 513]: count = 2, E_average = -192.950\n",
"[404, 261, 510]: count = 1, E_average = -206.998\n",
"[404, 259, 521]: count = 1, E_average = -205.715\n"
]
}
],
"source": [
"# Sort from most occupied to least occupied\n",
"subset_microstates.sort(key=lambda x: x.count, reverse=True)\n",
"for ms in subset_microstates:\n",
" print(\"%s: count = %4d, E_average = %.3f\" % (str(ms.state()), ms.count, ms.average_E))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Top microstates (subset microstates)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"## Counts % Accum % Energy\n",
" 1 414555 0.188 0.188 -203.89\n",
" 2 298812 0.136 0.324 -203.90\n",
" 3 107210 0.049 0.373 -202.99\n",
" 4 81293 0.037 0.410 -202.70\n",
" 5 78448 0.036 0.446 -202.60\n",
" 6 76403 0.035 0.480 -202.64\n",
" 7 71473 0.032 0.513 -202.69\n",
" 8 66635 0.030 0.543 -202.48\n",
" 9 62482 0.028 0.572 -202.44\n",
"10 57355 0.026 0.598 -202.50\n",
"11 34525 0.016 0.613 -202.63\n",
"12 22081 0.010 0.623 -202.00\n",
"13 21582 0.010 0.633 -201.66\n",
"14 20059 0.009 0.642 -201.90\n",
"15 19911 0.009 0.651 -201.43\n",
"16 16709 0.008 0.659 -201.69\n",
"17 14852 0.007 0.666 -201.48\n",
"18 14337 0.007 0.672 -201.18\n",
"19 14045 0.006 0.679 -201.81\n",
"20 13790 0.006 0.685 -201.07\n",
"21 13767 0.006 0.691 -201.13\n",
"22 13232 0.006 0.697 -201.93\n",
"23 12809 0.006 0.703 -201.70\n",
"24 12462 0.006 0.709 -202.44\n",
"25 12399 0.006 0.714 -201.35\n",
"26 11573 0.005 0.719 -200.92\n",
"27 10820 0.005 0.724 -201.73\n",
"28 10310 0.005 0.729 -202.18\n",
"29 10201 0.005 0.734 -201.46\n",
"30 9533 0.004 0.738 -202.00\n",
"31 9288 0.004 0.742 -201.33\n",
"32 9033 0.004 0.746 -201.36\n",
"33 7864 0.004 0.750 -201.32\n",
"34 7730 0.004 0.753 -201.69\n",
"35 7556 0.003 0.757 -200.76\n",
"36 7542 0.003 0.760 -201.44\n",
"37 7082 0.003 0.764 -201.25\n",
"38 7019 0.003 0.767 -201.19\n",
"39 6856 0.003 0.770 -202.09\n",
"40 6204 0.003 0.773 -201.25\n",
"41 6202 0.003 0.775 -200.40\n",
"42 5889 0.003 0.778 -200.71\n",
"43 5671 0.003 0.781 -200.56\n",
"44 5636 0.003 0.783 -200.52\n",
"45 5504 0.003 0.786 -202.03\n",
"46 5302 0.002 0.788 -203.41\n",
"47 5160 0.002 0.791 -201.49\n",
"48 5031 0.002 0.793 -201.05\n",
"49 5008 0.002 0.795 -200.08\n",
"50 4986 0.002 0.797 -201.75\n"
]
}
],
"source": [
"total_subms = sum([x.count for x in subset_microstates])\n",
"\n",
"top_picks = 50\n",
"top_subms = subset_microstates[:top_picks]\n",
"top_counts = [x.count for x in top_subms]\n",
"top_averageE = [x.average_E for x in top_subms]\n",
"top_percentage = [x.count/total_subms for x in top_subms]\n",
"\n",
"print(\"## %8s %8s %8s %8s\" % (\"Counts\", \"%\", \"Accum %\", \"Energy\"))\n",
"accum_pct = 0.0\n",
"top_accum = []\n",
"for i in range(top_picks):\n",
" accum_pct += top_percentage[i]\n",
" top_accum.append(accum_pct)\n",
" print(\"%2d %8d %8.3f %8.3f %8.2f\" % (i+1, top_counts[i], top_percentage[i], accum_pct, top_averageE[i]))"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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TNjZZ58dr371q+PJJ58s698eQWcCamtrY/ny5dHd3T3aNjw8HN3d3dHS0lLGkVFtLrzwwli4cOGYZ2lgYCB+8IMfeJaIiPz24x/4wAfi7rvvjp07d8aFF1445vvLly+PM844Y8wz9MQTT8TBgwc9Q4xreHg4jh496tnhlK666qp4+OGHY//+/aOvFStWxLve9a7Rrz0/TNQvf/nL+MlPfhKLFi0q698epWsT1NHREddee22sWLEiVq5cGbfddlsMDg7Ghg0byj00Kswvf/nLePLJJ0c/P/XUU7F///4455xz4oILLojrr78+Pv7xj8dFF10UF154Ydx0002xePHiuOaaa8o3aCrGxo0b484774x/+Zd/ibPOOmu0fnn+/PlRX18f8+fPj3e/+93R0dER55xzTsybNy8++MEPRktLS/zWb/1WmUdPuW3atCne9ra3xQUXXBDPP/983HnnndHT0xPf/va3PTuc0llnnTW6FnBEQ0NDnHvuuaPtnh9O5kMf+lCsXbs2XvnKV8bPf/7z2LJlS9TU1MQ73vGO8v7tmdY93RLz93//97kLLrggV1tbm1u5cmXu+9//frmHRAX6zne+k4uIl7yuvfbaXC6X32L6pptuyjU1NeXq6upyV111Ve6JJ54o76CpGOM9OxGR+8d//MfRa44cOZL78z//89yCBQtyL3vZy3Jvf/vbc4cOHSrfoKkYf/qnf5p75Stfmautrc29/OUvz1111VW5//zP/xz9vmeHQpy4vXQu5/nh5NatW5dbtGhRrra2Nnf++efn1q1bl3vyySdHv1+uZ2dWLpfLTW+UAgAAKC1rdAAAgOQIOgAAQHIEHQAAIDmCDgAAkBxBBwAASI6gAwAAJEfQAQAAkiPoAAAAyRF0AACA5Ag6AABAcgQdAAAgOYIOAACQnP8HUgDWaA3u958AAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(10,6))\n",
"ax1 = fig.add_subplot(111)\n",
"ax1.set_ylim([0, 1])\n",
"ax1.scatter(range(top_picks), top_percentage, s=10, c='b', marker = \".\")\n",
"ax1.scatter(range(top_picks), top_accum, s=10, c='r', marker=\"x\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bin microstates (subset microstates) by energy"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Energy #total #uniq\n",
"-207.727 340 9\n",
"-205.909 1090 9\n",
"-204.091 1383040 43\n",
"-202.273 607454 212\n",
"-200.455 162763 204\n",
"-198.637 31655 102\n",
"-196.819 10483 55\n",
"-195.001 2262 26\n",
"-193.183 740 13\n",
"-191.365 173 4\n"
]
}
],
"source": [
"nbins = 10\n",
"erange, total_counts = bin_mscounts_total(subset_microstates, nbins=nbins)\n",
"_, uniq_counts = bin_mscounts_unique(subset_microstates, nbins=nbins)\n",
"\n",
"print(\"%8s %6s %6s\" % (\"Energy\", \" #total\", \"#uniq\"))\n",
"for i in range(len(erange)):\n",
" print(\"%8.3f %10d %6d\" % (erange[i], total_counts[i], uniq_counts[i]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}