Commit 27a3d69a by Edoardo Sarti

aggregated maxprobhist

parent 15a855db
......@@ -2,9 +2,18 @@
"cells": [
{
"cell_type": "code",
"execution_count": 115,
"execution_count": 1,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/edoardosarti/programs/anaconda3/lib/python3.8/site-packages/ete3-3.1.2-py3.7.egg/ete3/evol/parser/codemlparser.py:221: SyntaxWarning: \"is\" with a literal. Did you mean \"==\"?\n",
"/Users/edoardosarti/programs/anaconda3/lib/python3.8/site-packages/ete3-3.1.2-py3.7.egg/ete3/evol/parser/codemlparser.py:221: SyntaxWarning: \"is\" with a literal. Did you mean \"==\"?\n"
]
}
],
"source": [
"from ete3 import Tree\n",
"import numpy as np"
......@@ -12,7 +21,7 @@
},
{
"cell_type": "code",
"execution_count": 116,
"execution_count": 2,
"metadata": {},
"outputs": [
{
......@@ -70,7 +79,7 @@
},
{
"cell_type": "code",
"execution_count": 117,
"execution_count": 3,
"metadata": {},
"outputs": [
{
......@@ -165,7 +174,7 @@
},
{
"cell_type": "code",
"execution_count": 118,
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
......@@ -193,7 +202,7 @@
},
{
"cell_type": "code",
"execution_count": 139,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
......@@ -203,21 +212,79 @@
},
{
"cell_type": "code",
"execution_count": 176,
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.09275795723482448\n",
"110\n",
"110 [10, 9, 8, 7, 12, 10, 7, 5] 0.9938352560874051\n"
"#### aggmaxprobhist ####\n",
"Reference 0.000000 True\n",
"Almost identical 0.000000 True\n",
"Identical sorting but not permutable 0.016301 False\n",
"noise 0.000000 True\n",
"Permutable 0.000000 True\n",
"non-proportional increment 0.000000 True\n",
"Random big numbers or zero 0.025459 False\n",
"max unbalance 0.146087 False\n",
"proportional increment 0.000000 True\n",
"\n",
"\n",
"--- Incremental noise on signal ---\n",
"0 0.000000 +/- 0.000000\n",
"1 0.000185 +/- 0.000440\n",
"2 0.001894 +/- 0.002282\n",
"3 0.005138 +/- 0.004323\n",
"4 0.010559 +/- 0.007702\n",
"5 0.012664 +/- 0.007561\n",
"6 0.015651 +/- 0.012095\n",
"7 0.020212 +/- 0.013827\n",
"8 0.026308 +/- 0.020254\n",
"9 0.029255 +/- 0.024522\n",
"10 0.031770 +/- 0.023523\n",
"\n",
"\n",
"--- Incremental random noise ---\n",
"0 0.000138 +/- 0.000000\n",
"1 0.025829 +/- 0.018906\n",
"2 0.033744 +/- 0.025267\n",
"3 0.028168 +/- 0.022969\n",
"4 0.028078 +/- 0.024013\n",
"5 0.029980 +/- 0.025617\n",
"6 0.028973 +/- 0.021527\n",
"7 0.028279 +/- 0.019776\n",
"8 0.028193 +/- 0.024633\n",
"9 0.029332 +/- 0.024630\n",
"10 0.025569 +/- 0.022864\n",
"\n",
"\n",
"--- Incremental unbalanced distribution ---\n",
"1 0.132130\n",
"2 0.138470\n",
"3 0.140850\n",
"4 0.142096\n",
"5 0.142863\n",
"6 0.143383\n",
"7 0.143759\n",
"8 0.144043\n",
"9 0.144265\n",
"10 0.144443\n",
"---\n",
"\n",
"\n",
"\n"
]
}
],
"source": [
"import math\n",
"import numpy as np\n",
"\n",
"def stable_sigmoid(x):\n",
" sig = np.where(x < 0, np.exp(x)/(1 + np.exp(x)), 1/(1 + np.exp(-x)))\n",
" return sig\n",
"\n",
"def divergence(histo1,histo2):# calcul la divergence\n",
" v=0.0\n",
" for i in range(len(histo1)):\n",
......@@ -272,52 +339,323 @@
" am = np.argmax([pears(h,h2) for h in ps])\n",
" return am, ps[am], pears(ps[am],h2)\n",
"\n",
"def probhist(hh1, hh2):\n",
" #pseudocounts\n",
" h1 = [x+1 for x in hh1]\n",
" h2 = [x+1 for x in hh2]\n",
" \n",
" s1, s2 = sum(h1), sum(h2)\n",
" nh1, nh2 = [x/s1 for x in h1], [x/s2 for x in h2]\n",
" twonhs = list(zip(nh1,nh2))\n",
" twonhs = sorted(twonhs, key= lambda x:x[1])\n",
" twosortednhs = list(zip(sorted(nh1), sorted(nh2)))\n",
" \n",
" res = 0\n",
" for i in range(len(h1)):\n",
" #if twonhs[i][1] == 0:\n",
" # continue\n",
" rat = twonhs[i][0]/twonhs[i][1]\n",
" ratsort = twosortednhs[i][0]/twosortednhs[i][1]\n",
" res += rat*math.log((rat/ratsort), 2)\n",
" return res\n",
"\n",
"def probhist(hh1, hh2, symm=True):\n",
" #Pseudocounts\n",
" eps = 0.00001\n",
" h1 = [x+(max(hh1)-min(hh1)+eps)/100 for x in hh1]\n",
" h2 = [x+(max(hh2)-min(hh2)+eps)/100 for x in hh2]\n",
" \n",
" #Normalize histos\n",
" s1, s2 = sum(h1), sum(h2)\n",
" nh1, nh2 = [x/s1 for x in h1], [x/s2 for x in h2]\n",
" \n",
" #Couple histos and sort second\n",
" twonhs = list(zip(nh1,nh2))\n",
" twonhs = sorted(twonhs, key= lambda x:x[1])\n",
" \n",
" #Sort both histos and then couple\n",
" twosortednhs = list(zip(sorted(nh1), sorted(nh2)))\n",
" \n",
" # SUM P1/P2 log2(P1/P1') = SUM P1/P2 log2((P1/P2) / (P1'/P2')) because P2 = P2'\n",
" res = 0\n",
" for i in range(len(h1)):\n",
" res += abs(twonhs[i][0]/twonhs[i][1])*math.log((twonhs[i][0]/twosortednhs[i][0]), 2)\n",
"\n",
" if symm:\n",
" #Couple histos and sort first\n",
" twonhs = list(zip(nh1,nh2))\n",
" twonhs = sorted(twonhs, key= lambda x:x[0])\n",
" for i in range(len(h1)):\n",
" res += abs(twonhs[i][1]/twonhs[i][0])*math.log((twonhs[i][1]/twosortednhs[i][1]), 2)\n",
" return res/2\n",
"\n",
" return res\n",
"\n",
"\n",
"def probhist(hh1, hh2, symm=True):\n",
" def likelihood(doubleh, d):\n",
" diffs = np.zeros(len(doubleh)+1)\n",
" for i in range(len(doubleh)):\n",
" diffs[i] = abs(doubleh[i][0]-doubleh[i][1])\n",
" diffs[-1] = 10\n",
" return sum(diffs >= d)/(len(diffs))\n",
" \n",
" #NO Pseudocounts\n",
" eps = 0.00001\n",
" h1 = [x+(max(hh1)-min(hh1)+eps)/100 for x in hh1]\n",
" h2 = [x+(max(hh2)-min(hh2)+eps)/100 for x in hh2]\n",
" \n",
" #Normalize histos\n",
" s1, s2 = sum(h1), sum(h2)\n",
" nh1, nh2 = [x/s1 for x in h1], [x/s2 for x in h2]\n",
" \n",
" #Couple histos and sort second\n",
" twonhs = list(zip(nh1,nh2))\n",
" twonhs = sorted(twonhs, key= lambda x:x[1])\n",
" \n",
" #Sort both histos and then couple\n",
" twosortednhs = list(zip(sorted(nh1), sorted(nh2)))\n",
" \n",
" # SUM P1/P2 log2(P1/P1') = SUM P1/P2 log2((P1/P2) / (P1'/P2')) because P2 = P2'\n",
" res = 0\n",
" for i in range(len(h1)):\n",
" d = stable_sigmoid(abs(twonhs[i][0]-twonhs[i][1])-0.5)\n",
" ds = stable_sigmoid(abs(twosortednhs[i][0]-twosortednhs[i][1])-0.5)\n",
" res += d*math.log(d/ds, 2)\n",
"\n",
" return res\n",
"\n",
"\n",
"\n",
"\n",
"def probhist2(hh1, hh2):\n",
" def likelihood(doubleh, d):\n",
" diffs = np.zeros(len(doubleh)+1)\n",
" for i in range(len(doubleh)):\n",
" diffs[i] = abs(doubleh[i][0]-doubleh[i][1])\n",
" diffs[-1] = 10\n",
" return sum(diffs >= d)/(len(diffs))\n",
" \n",
" \n",
" #pseudocounts\n",
" h1 = [x+1 for x in hh1]\n",
" h2 = [x+1 for x in hh2]\n",
" \n",
" s1, s2 = sum(h1), sum(h2)\n",
" nh1, nh2 = [x/s1 for x in h1], [x/s2 for x in h2]\n",
" twonhs = list(zip(nh1,nh2))\n",
" twonhs = sorted(twonhs, key= lambda x:x[1])\n",
" twosortednhs = list(zip(sorted(nh1), sorted(nh2)))\n",
" \n",
" res = 0\n",
" for i in range(len(h1)):\n",
" res += likelihood(twosortednhs, twonhs[i][0]-twonhs[i][1])*math.log(likelihood(twosortednhs, twonhs[i][0]-twonhs[i][1]), 2)\n",
" return res\n",
"\n",
"def agg_probhist(h1, h2):\n",
" return probhist(agg_vector(h1), agg_vector(h2))\n",
"\n",
"def maxprobhist(h1, h2):\n",
" ps = permutations(h1)\n",
" am = np.argmin([probhist(h,h2) for h in ps])\n",
" return probhist(ps[am],h2)\n",
" #return am, ps[am], probhist(ps[am],h2) \n",
"\n",
"def maxprobhist2(h1, h2):\n",
" ps = permutations(h1)\n",
" am = np.argmin([probhist2(h,h2) for h in ps])\n",
" return probhist2(ps[am],h2)\n",
" #return am, ps[am], probhist2(ps[am],h2)\n",
"\n",
"def aggregated_permutations_old(h1):\n",
" l = len(h1)\n",
" h1list = [h1]\n",
" newh = [] # list of all the upper histos\n",
" while len(h1list[-1]) > 2:\n",
" for i, v in enumerate(h1list[-1]):\n",
" if i%2==0:\n",
" newh.append(v)\n",
" else:\n",
" newh[-1] += v\n",
" h1list.append(newh)\n",
" newh = [] \n",
" \n",
" print(\"LIST\", h1list)\n",
" ps = permutations(h1)\n",
" for i in range(1,len(h1list)):\n",
" indexlist = []\n",
" for j in range(int(len(h1)/(2**i))):\n",
" indexlist += [j]*2**i\n",
" psh = permutations(indexlist)\n",
" for ipsh in range(len(psh)):\n",
" uni = []\n",
" for kk in psh[ipsh]:\n",
" if kk not in uni:\n",
" uni.append(kk)\n",
" ps[ipsh] += [h1list[i][k] for k in uni]\n",
" return ps\n",
"\n",
"def agg_vector(h):\n",
" l = len(h)\n",
" hlist = [h]\n",
" newh = [] # list of all the upper histos\n",
" while len(hlist[-1]) > 2:\n",
" for i, v in enumerate(hlist[-1]):\n",
" if i%2==0:\n",
" newh.append(v)\n",
" else:\n",
" newh[-1] += v\n",
" hlist.append(newh)\n",
" newh = []\n",
" res = []\n",
" for hh in hlist:\n",
" res += hh\n",
" return res\n",
"\n",
"def aggregated_permutations(h1):\n",
" ps = permutations(h1)\n",
" for ips in range(len(ps)):\n",
" ps[ips] = agg_vector(ps[ips])\n",
" return ps\n",
" \n",
"\n",
"#print(aggregated_permutations([1,2,3,4,5,6,7,8]))\n",
"\n",
"\n",
"def aggmaxprobhist(h1, h2, allout=False):\n",
" aggps = aggregated_permutations(h1)\n",
" am = np.argmin([probhist(h,agg_vector(h2)) for h in aggps])\n",
" if allout:\n",
" return am, aggps[am], probhist(aggps[am],agg_vector(h2))\n",
" return probhist(aggps[am],agg_vector(h2))\n",
" #return am, aggps[am], probhist(aggps[am],agg_vector(h2))\n",
"\n",
"### TESTS\n",
"import numpy as np\n",
"import random\n",
"# ATTENTION!!\n",
"h1 = [10,9,8,7,12,10,7,5]\n",
"h1copy = h1[:]\n",
"h1 = [10,12,7,5,7,8,9,10]\n",
"h2 = [10,9,8,7,13,10,7,5]\n",
"print(pears(h1,h2))\n",
"#organisehisto2(h1)\n",
"#organisehisto2(h2)\n",
"ps = permutations(h1)\n",
"print(ps.index(h1copy))\n",
"am = np.argmax([pears(h,h2) for h in ps])\n",
"print(am, ps[am], pears(ps[am],h2))\n"
"\n",
"def tests(f):\n",
" answ = []\n",
" \n",
" # Reference\n",
" h1 = [10,9,8,7,12,10,7,5]\n",
" answ.append((h1, True, 'Reference'))\n",
" \n",
" # h1-h2 are similar (organisation problem) \n",
" h2 = [10,9,8,7,13,10,7,5]\n",
" answ.append((h2, True, 'Almost identical'))\n",
"\n",
" # h1-h3 are not similar (null hypothesis problem)\n",
" h3 = [10,5,8,7,12,10,7,9]\n",
" answ.append((h3, False, 'Identical sorting but not permutable'))\n",
" \n",
" # h1-h4 are similar (noise problem)\n",
" h4 = [11,8,7,8,11,9,8,6]\n",
" answ.append((h4, True, 'noise'))\n",
" \n",
" \n",
" # h1-h5 are similar (topology problem)\n",
" h5 = [12,10,7,5,10,9,8,7]\n",
" answ.append((h5, True, 'Permutable'))\n",
"\n",
" # h1-h6 are similar (non-proportional incrementation problem)\n",
" h6 = [x+100 for x in h1]\n",
" answ.append((h6, True, 'non-proportional increment'))\n",
"\n",
" # h1-h7 are not similar (null case)\n",
" h7 = [max(0,random.uniform(-1,1))*512 for x in h1]\n",
" answ.append((h7, False, 'Random big numbers or zero'))\n",
"\n",
" # h1-h8 are not similar (unbalance case)\n",
" h8 = [0, 0, 0, 0, 10000, 10000, 10000, 10000]\n",
" answ.append((h8, False, 'max unbalance'))\n",
" \n",
" # h1-h9 are similar (proportional incrementation problem)\n",
" h9 = [x*100 for x in h1]\n",
" answ.append((h9, True, 'proportional increment')) \n",
" \n",
" print(\"#### \" + f.__name__ + \" ####\")\n",
" for h, a, c in answ:\n",
" print(\"{0:50s} {1:20.6f} {2}\".format(c, f(h1, h), a))\n",
" print(\"\\n\") \n",
" \n",
" print(\"--- Incremental noise on signal ---\")\n",
" for magn in range(11):\n",
" sph = 0\n",
" sqsph = 0\n",
" for rep in range(100):\n",
" coef = magn/10\n",
" hr = [random.uniform(x-x*coef, x+x*coef) for x in h1]\n",
" ph = f(h1,hr)\n",
" sph += ph\n",
" sqsph += ph**2\n",
" #if ph > 50:\n",
" # print(h1, hr, magn, ph)\n",
" print(\"{0:<30d} {1:15.6f} +/- {2:10.6f}\".format(magn, sph/100, (sqsph/100 - (sph/100)**2)**0.5))\n",
" print(\"\\n\")\n",
" \n",
" print(\"--- Incremental random noise ---\")\n",
" for magn in range(11):\n",
" sph = 0\n",
" sqsph = 0\n",
" for rep in range(100):\n",
" hr = [random.random()*10*magn for x in h1]\n",
" ph = f(h1,hr)\n",
" sph += ph\n",
" sqsph += ph**2\n",
" #if ph > 50:\n",
" # print(h1, hr, magn, ph)\n",
" print(\"{0:<30d} {1:15.6f} +/- {2:10.6f}\".format(magn, sph/100, (sqsph/100 - (sph/100)**2)**0.5))\n",
" print(\"\\n\")\n",
" \n",
" print(\"--- Incremental unbalanced distribution ---\")\n",
" hrr = [0]*int(len(h1)/2) + [1]*int(len(h1)/2)\n",
" for magn in range(1,11):\n",
" hr = [1+x*10*magn for x in hrr]\n",
" print(\"{0:<30d} {1:15.6f}\".format(magn, f(h1,hr)))\n",
" print(\"---\")\n",
" print(\"\\n\\n\")\n",
" \n",
"#tests(probhist)\n",
"#tests(probhist2)\n",
"#tests(agg_probhist)\n",
"#tests(maxprobhist)\n",
"#tests(maxprobhist2)\n",
"tests(aggmaxprobhist)"
]
},
{
"cell_type": "code",
"execution_count": 198,
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"histo70=genererhisto(\"results_djeser/CrFBA3_PV00274_0.7_k20.nhx\",2)\n",
"histo80=genererhisto(\"results_djeser/CrFBA3_PV00274_0.8_k20.nhx\",2)\n",
"histo90=genererhisto(\"results_djeser/CrFBA3_PV00274_0.9_k20.nhx\",2)"
"histo70=genererhisto(\"results_djeser/CrFBA3_PV00274_0.7_k20.nhx\",3)\n",
"histo80=genererhisto(\"results_djeser/CrFBA3_PV00274_0.8_k20.nhx\",3)\n",
"histo90=genererhisto(\"results_djeser/CrFBA3_PV00274_0.9_k20.nhx\",3)\n",
"agghisto70 = agg_vector(histo70)\n",
"agghisto80 = agg_vector(histo80)\n",
"agghisto90 = agg_vector(histo90)"
]
},
{
"cell_type": "code",
"execution_count": 199,
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<BarContainer object of 8 artists>"
"<BarContainer object of 16 artists>"
]
},
"execution_count": 199,
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAARt0lEQVR4nO3dfaxlVX3G8e8jIApiwHIhIzAZMEiCph3sDX0hEiq+oDWgTbBMWoKWdjABA7VJBZoUaUJiWl/6R6tmFAqmOIgilRhqodRKTao4AwgDA8qbMDBlrtAKVoMd/PWPuy8eh3vnnjkvnMOa7yc5OXuvs/c5v5nMfWbdddZeO1WFJKldL5l0AZKk8TLoJalxBr0kNc6gl6TGGfSS1DiDXpIat2zQJzksydeTbE5yV5Jzu/ZXJbkxyfe75wN6zrkgyX1J7k3ytnH+ASRJO5fl5tEnWQGsqKpbk+wHbATeBbwXeLKqPpLkfOCAqvpQkqOB9cCxwKuBfwVeW1XPju+PIUlayrI9+qraWlW3dttPA5uBQ4BTgCu6w65gPvzp2q+qqmeq6kHgPuZDX5I0AXvuysFJVgHHAN8GDq6qrTD/n0GSg7rDDgG+1XPalq5tSQceeGCtWrVqV0qRpN3exo0bf1hVM8sd13fQJ3kFcA1wXlU9lWTJQxdpe974UJK1wFqAlStXsmHDhn5LkSQBSX7Qz3F9zbpJshfzIX9lVX25a368G79fGMff1rVvAQ7rOf1Q4LEd37Oq1lXVbFXNzsws+x+SJGlA/cy6CXApsLmqPt7z0nXAGd32GcBXetpPS7J3ksOBI4FbRleyJGlX9DN0cxxwOnBnktu7tguBjwBXJzkTeBg4FaCq7kpyNXA3sB042xk3kjQ5ywZ9VX2TxcfdAU5c4pxLgEuGqEuSNCJeGStJjTPoJalxBr0kNc6gl6TGGfSS1LhdWgJB0u4nFy95Ffxz6qKdL46oybJHL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TG9XNz8MuSbEuyqaftC0lu7x4PLdxLNsmqJD/tee3TY6xdktSHflavvBz4O+BzCw1V9fsL20k+Bvyo5/j7q2r1iOqTJA2pn5uD35xk1WKvJQnwHuBNI65LkjQiw47RvxF4vKq+39N2eJLbknwjyRuHfH9J0pCGvfHIGmB9z/5WYGVVPZHk14F/SvK6qnpqxxOTrAXWAqxcuXLIMiRJSxm4R59kT+D3gC8stFXVM1X1RLe9EbgfeO1i51fVuqqararZmZmZQcuQNKikv4de9IYZunkzcE9VbVloSDKTZI9u+wjgSOCB4UqUJA2jn+mV64H/BI5KsiXJmd1Lp/HLwzYAxwN3JPku8CXg/VX15CgLliTtmn5m3axZov29i7RdA1wzfFmSpFHxylhJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY3r556xlyXZlmRTT9uHkzya5Pbu8Y6e1y5Icl+Se5O8bVyFS5L600+P/nLgpEXaP1FVq7vH9QBJjmb+puGv6875ZJI9RlWsJGnXLRv0VXUz8GSf73cKcFVVPVNVDwL3AccOUZ8kaUjDjNGfk+SObmjngK7tEOCRnmO2dG2SpAkZNOg/BbwGWA1sBT7WtWeRY2uxN0iyNsmGJBvm5uYGLEOStJyBgr6qHq+qZ6vq58Bn+MXwzBbgsJ5DDwUeW+I91lXVbFXNzszMDFKGJKkPAwV9khU9u+8GFmbkXAeclmTvJIcDRwK3DFeiJGkYey53QJL1wAnAgUm2ABcBJyRZzfywzEPAWQBVdVeSq4G7ge3A2VX17FgqlyT1Zdmgr6o1izRfupPjLwEuGaYoSdLoeGWsJDVu2R69pBeXLDb3bRGLTodTk+zRS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc7VKyWJXVj180W47Kc9eklqnEEvSY0z6CWpccsGfZLLkmxLsqmn7W+S3JPkjiTXJtm/a1+V5KdJbu8enx5j7ZKkPvTTo78cOGmHthuB11fVrwLfAy7oee3+qlrdPd4/mjIlSYNaNuir6mbgyR3abqiq7d3ut4BDx1CbJGkERjFG/0fAP/fsH57ktiTfSPLGpU5KsjbJhiQb5ubmRlCGJGkxQwV9kr8AtgNXdk1bgZVVdQzwQeDzSV652LlVta6qZqtqdmZmZpgyJEk7MXDQJzkDeCfwB1XzlxBU1TNV9US3vRG4H3jtKAqVJA1moKBPchLwIeDkqvpJT/tMkj267SOAI4EHRlGoJGkwyy6BkGQ9cAJwYJItwEXMz7LZG7gx89cNf6ubYXM88FdJtgPPAu+vqicXfWNJ0gti2aCvqjWLNF+6xLHXANcMW5SmTMuLgEi7Aa+MlaTGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGrfsWjeaHrm4vzVn6iLXnJH0C/boJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuOWDfoklyXZlmRTT9urktyY5Pvd8wE9r12Q5L4k9yZ527gKlyT1p58e/eXASTu0nQ/cVFVHAjd1+yQ5GjgNeF13zieT7DGyaiVJu2zZoK+qm4End2g+Bbii274CeFdP+1VV9UxVPQjcBxw7mlIlSYMYdIz+4KraCtA9H9S1HwI80nPclq7teZKsTbIhyYa5ubkBy5AkLWfUX8Yudo3+otfjV9W6qpqtqtmZmZkRlyFJWjBo0D+eZAVA97yta98CHNZz3KHAY4OXJ0ka1qBBfx1wRrd9BvCVnvbTkuyd5HDgSOCW4UqUJA1j2dUrk6wHTgAOTLIFuAj4CHB1kjOBh4FTAarqriRXA3cD24Gzq+rZMdUuSerDskFfVWuWeOnEJY6/BLhkmKIkSaPjevSaSulv6X3KpfelZRn02i140xbtzlzrRpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+j14pb095B2Ywa9JDXOoJekxhn0ktS4gW88kuQo4As9TUcAfwnsD/wJMNe1X1hV1w/6OZKk4Qwc9FV1L7AaIMkewKPAtcD7gE9U1UdHUaAkaTijGro5Ebi/qn4woveTJI3IqIL+NGB9z/45Se5IclmSAxY7IcnaJBuSbJibm1vsEEnSCAwd9EleCpwMfLFr+hTwGuaHdbYCH1vsvKpaV1WzVTU7MzMzbBmSpCUMPEbf4+3ArVX1OMDCM0CSzwBfHcFnSM3Kxf1d0FUX1ZgrUatGMXSzhp5hmyQrel57N7BpBJ8hSRrQUD36JPsAbwHO6mn+6ySrgQIe2uE1SdILbKigr6qfAL+yQ9vpQ1UkSRqpUYzRN8XxUkmtcQkESWqcPXqNjL8NSdPJHr0kNc4evSSNwTT9hmvQS+PS752tPjzWKpo2TWE6zRy6kaTGGfSS1DiDXpIaZ9BPi2T5hyQNwKCXpMYZ9JK0K/r57XvKfgM36CWpcQa9JDXOoJc0fV6EwyPTzKCXpMYZ9JLUOINekho37D1jHwKeBp4FtlfVbJJXAV8AVjF/z9j3VNV/D1emNF36GR7evZfR0jQZRY/+d6pqdVXNdvvnAzdV1ZHATd2+JGlCxjF0cwpwRbd9BfCuMXyGJKlPwwZ9ATck2Zhkbdd2cFVtBeieDxryMyRJQxj2xiPHVdVjSQ4CbkxyT78ndv8xrAVYuXLlkGVIkpYyVI++qh7rnrcB1wLHAo8nWQHQPW9b4tx1VTVbVbMzMzPDlCFJ2omBgz7Jvkn2W9gG3gpsAq4DzugOOwP4yrBFSpIGN8zQzcHAtZmfZ7Yn8Pmq+lqS7wBXJzkTeBg4dfgyJUmDGjjoq+oB4NcWaX8COHGYoiRJo+OVsZLUOINekhpn0EtS44adRy9Jfet3CXnXCRqt3adH740MJO2mdp+gl6TdlEEvSY0z6CWpcQa9JDWuiVk33u1nMM6AkHYP9uglqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjRvm5uCHJfl6ks1J7kpybtf+4SSPJrm9e7xjdOVKknbVMFfGbgf+rKpuTbIfsDHJjd1rn6iqjw5fniRpWMPcHHwrsLXbfjrJZuCQURUmSRqNkYzRJ1kFHAN8u2s6J8kdSS5LcsAoPkOSNJihgz7JK4BrgPOq6ingU8BrgNXM9/g/tsR5a5NsSLJhbm5u2DIkSUsYKuiT7MV8yF9ZVV8GqKrHq+rZqvo58Bng2MXOrap1VTVbVbMzMzPDlCFJ2olhZt0EuBTYXFUf72lf0XPYu4FNg5cnSRrWMLNujgNOB+5McnvXdiGwJslq5pcxfwg4a4jPkCQNaZhZN98EFrt1xfWDlyNJGjWvjJWkxhn0ktS4Ju4ZO828L6ukSbNHL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuPGFvRJTkpyb5L7kpw/rs+RJO3cWII+yR7A3wNvB45m/obhR4/jsyRJOzeuHv2xwH1V9UBV/Qy4CjhlTJ8lSdqJcQX9IcAjPftbujZJ0gssVaO/W2mSU4G3VdUfd/unA8dW1Qd6jlkLrO12jwLuHWEJBwI/HOH7jdo012dtg5vm+qxtMNNcG8BRVbXfcgeN6+bgW4DDevYPBR7rPaCq1gHrxvHhSTZU1ew43nsUprk+axvcNNdnbYOZ5tpgvr5+jhvX0M13gCOTHJ7kpcBpwHVj+ixJ0k6MpUdfVduTnAP8C7AHcFlV3TWOz5Ik7dy4hm6oquuB68f1/ssYy5DQCE1zfdY2uGmuz9oGM821QZ/1jeXLWEnS9HAJBElqXHNBP81LLyS5LMm2JJsmXcuOkhyW5OtJNie5K8m5k65pQZKXJbklyXe72i6edE07SrJHktuSfHXStfRK8lCSO5Pc3u8MjRdSkv2TfCnJPd2/vd+adE0ASY7q/s4WHk8lOW/SdS1I8qfdz8KmJOuTvGynx7c0dNMtvfA94C3MT/H8DrCmqu6eaGGdJMcDPwY+V1Wvn3Q9vZKsAFZU1a1J9gM2Au+ahr+7JAH2raofJ9kL+CZwblV9a8KlPSfJB4FZ4JVV9c5J17MgyUPAbFVN5VzwJFcA/1FVn+1m6O1TVf8z4bJ+SZcrjwK/UVU/mIJ6DmH+Z+DoqvppkquB66vq8qXOaa1HP9VLL1TVzcCTk65jMVW1tapu7bafBjYzJVcz17wfd7t7dY+p6aEkORT4XeCzk67lxSTJK4HjgUsBqupn0xbynROB+6ch5HvsCbw8yZ7APuxwndKOWgt6l14YgSSrgGOAb0+4lOd0QyO3A9uAG6tqamoD/hb4c+DnE65jMQXckGRjdzX6NDkCmAP+oRv2+mySfSdd1CJOA9ZPuogFVfUo8FHgYWAr8KOqumFn57QW9FmkbWp6fi8GSV4BXAOcV1VPTbqeBVX1bFWtZv4q62OTTMXQV5J3AtuqauOka1nCcVX1BuZXkj27Gz6cFnsCbwA+VVXHAP8LTNv3ai8FTga+OOlaFiQ5gPmRisOBVwP7JvnDnZ3TWtAvu/SCltaNf18DXFlVX550PYvpfrX/d+CkyVbynOOAk7ux8KuANyX5x8mW9AtV9Vj3vA24lvnhzWmxBdjS89vZl5gP/mnyduDWqnp80oX0eDPwYFXNVdX/AV8GfntnJ7QW9C69MKDuC89Lgc1V9fFJ19MryUyS/bvtlzP/D/2eiRbVqaoLqurQqlrF/L+3f6uqnfauXihJ9u2+WKcbEnkrMDUzvqrqv4BHkhzVNZ0ITPzL/x2sYYqGbToPA7+ZZJ/u5/ZE5r9TW9LYroydhGlfeiHJeuAE4MAkW4CLqurSyVb1nOOA04E7u7FwgAu7K5wnbQVwRTf74SXA1VU1VdMYp9TBwLXzWcCewOer6muTLel5PgBc2XXMHgDeN+F6npNkH+Zn8J016Vp6VdW3k3wJuBXYDtzGMlfINjW9UpL0fK0N3UiSdmDQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUuP8HI5Lfx23Ze2IAAAAASUVORK5CYII=\n",
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
......@@ -341,36 +679,37 @@
},
{
"cell_type": "code",
"execution_count": 200,
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[37, 18, 37, 95, 53, 145, 42, 132]\n",
"[41, 62, 121, 82, 65, 174, 57, 60]\n",
"[70, 110, 68, 94, 74, 191, 65, 66]\n",
"(12, [18, 37, 95, 37, 53, 145, 42, 132], 0.7003169917083315)\n",
"(36, [37, 95, 18, 37, 53, 145, 42, 132], 0.6412731587069886)\n",
"(40, [82, 121, 41, 62, 65, 174, 57, 60], 0.9332447731538477)\n",
"0.5213979823684013\n",
"-62.17478453854025\n"
"[6, 31, 5, 13, 13, 24, 34, 61, 2, 51, 83, 62, 14, 28, 86, 46]\n",
"[21, 20, 13, 49, 47, 74, 47, 35, 32, 33, 55, 119, 1, 56, 15, 45]\n",
"[19, 51, 46, 64, 22, 46, 42, 52, 34, 40, 66, 125, 19, 46, 19, 47]\n",
"0.9696853876672236\n",
"0.9560621703814548\n",
"0.8697663960711315\n",
"0.9202896182752579\n",
"0.881861401180245\n",
"0.8245928573227957\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7fa9023f8760>"
"<matplotlib.collections.PathCollection at 0x7fd60f8add90>"
]
},
"execution_count": 200,
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
......@@ -385,43 +724,47 @@
"print(histo70)\n",
"print(histo80)\n",
"print(histo90)\n",
"print(maxpears(histo70, histo80))\n",
"print(maxpears(histo70, histo90))\n",
"print(maxpears(histo80, histo90))\n",
"print(pears(histo70, histo90))\n",
"print(divergence(histo70, histo90))\n",
"plt.scatter(maxpears(histo70, histo90)[1], histo90)"
"print(probhist(agghisto70, agghisto80))\n",
"print(probhist(agghisto70, agghisto90))\n",
"print(probhist(agghisto80, agghisto90))\n",
"print(aggmaxprobhist(histo70, histo80))\n",
"print(aggmaxprobhist(histo70, histo90))\n",
"print(aggmaxprobhist(histo80, histo90))\n",
"plt.scatter(aggmaxprobhist(histo70, histo90, allout=True)[1], agg_vector(histo90))"
]
},
{
"cell_type": "code",
"execution_count": 207,
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"histo80=genererhisto(\"results_djeser/CrFBA3_PV00274_0.8_k3.nhx\",2)\n",
"histo90=genererhisto(\"results_djeser/CrFBA3_PV00274_0.9_k3.nhx\",2)\n",
"histo100=genererhisto(\"results_djeser/CrFBA3_PV00274_1.0_k3.nhx\",2)"
"histo80=genererhisto(\"results_djeser/CrFBA3_PV00274_0.8_k3.nhx\",3)\n",
"histo90=genererhisto(\"results_djeser/CrFBA3_PV00274_0.9_k3.nhx\",3)\n",
"histo100=genererhisto(\"results_djeser/CrFBA3_PV00274_1.0_k3.nhx\",3)\n",
"agghisto80 = agg_vector(histo80)\n",
"agghisto90 = agg_vector(histo90)\n",
"agghisto100 = agg_vector(histo100)"
]
},
{
"cell_type": "code",
"execution_count": 208,
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<BarContainer object of 8 artists>"
"<BarContainer object of 16 artists>"
]
},
"execution_count": 208,
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
......@@ -441,32 +784,34 @@
},
{
"cell_type": "code",
"execution_count": 214,
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0\n",
"-0.26855775573365004\n",
"-0.26855775573365004\n",
"(62, [34, 82, 140, 41, 109, 74, 120, 293], 0.8183076771228812)\n"
"9.999900000999987e-06\n",
"0.9898575573944928\n",
"0.9898575573944928\n",
"9.999900000999987e-06\n",
"0.9600077783559976\n",
"0.9600077783559976\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7fa8b2fe8ac0>"
"<matplotlib.collections.PathCollection at 0x7fd610d7fe80>"
]
},
"execution_count": 214,
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD6CAYAAABamQdMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAViElEQVR4nO3df2zcd33H8ecL1y1H6eZkdavESZcgBW8pGQR5EVMm1LUMlx8iVqRu2cSUPzrln04CbQrEQ2JDWpWMaIj9MSZVhS0SP6IIghsVNhMSENoEpA5ul6ap10BLaztrzJgHBS913Pf+uK/bi3Nn39l3vvt+7vWQorv73Pe+9/m0ycsfv+/z/ZwiAjMzS8vrmt0BMzOrP4e7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmCqgp3Sc9JOifpcUkjWdtaSSclPZPdrik5flDSRUljkvob1XkzMytP1axzl/Qc0BcRPylp+yTw04g4JOkAsCYiPippK/AlYAewHvgm8OaImKt0/ltvvTU2bdq0ooGYmbWbs2fP/iQiuss9d8MKzrsLuCu7fwT4NvDRrP1oRFwBnpV0kWLQf7fSiTZt2sTIyMgKumJm1n4k/bjSc9XW3AP4hqSzkvZlbbdHxCWA7Pa2rL0HeKHkteNZm5mZrZJqZ+47I2JS0m3ASUlPL3KsyrRdV/vJfkjsA7jjjjuq7IaZmVWjqpl7RExmt5eBr1Iss7woaR1Adns5O3wc2Fjy8g3AZJlzPhQRfRHR191dtmRkZmbLtGS4S7pZ0i3z94F3A08CJ4C92WF7gUey+yeAPZJukrQZ2AKcqXfHzcyssmrKMrcDX5U0f/wXI+JfJT0GHJN0P/A8cB9ARJyXdAx4CrgKPLDYShkzM6u/JcM9In4EvLVM+38D91R4zYPAgyvunZlZooZGJzg8PMbk9Azruwrs7+9lYHv91p6sZCmkmZktw9DoBIPHzzEzWyxqTEzPMHj8HEDdAt7bD5iZrbLDw2OvBvu8mdk5Dg+P1e09HO5mZqtscnqmpvblcLibma2y9V2FmtqXw+FuZrbK9vf3UujsuKat0NnB/v7eur2HP1A1M1tl8x+aerWMmVliBrb31DXMF3JZxswsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7MEOdzNzBLkcDczS5DD3cwsQQ53M7ME3dDsDpi1mqHRCQ4PjzE5PcP6rgL7+3sZ2N7T7G6Z1cThblZiaHSCwePnmJmdA2BieobB4+cAHPCWKy7LmJU4PDz2arDPm5md4/DwWJN6ZLY8VYe7pA5Jo5IezR6vlXRS0jPZ7ZqSYwclXZQ0Jqm/ER03a4TJ6Zma2lMwNDrBzkOn2Xzga+w8dJqh0Ylmd8nqoJaZ+4eACyWPDwCnImILcCp7jKStwB7gTuBe4DOSOurTXbPGWt9VqKk97+bLUBPTMwSvlaEc8PlXVbhL2gC8D3i4pHkXcCS7fwQYKGk/GhFXIuJZ4CKwoy69NWuw/f29FDqvnYsUOjvY39/bpB41lstQ6ar2A9VPAx8Bbilpuz0iLgFExCVJt2XtPcD3So4bz9rMWt78h6btslqmHctQ7WLJcJf0fuByRJyVdFcV51SZtihz3n3APoA77rijitOarY6B7T3JhvlC67sKTJQJ8lTLUO2kmrLMTuADkp4DjgJ3S/o88KKkdQDZ7eXs+HFgY8nrNwCTC08aEQ9FRF9E9HV3d69gCGa2XO1WhmonS4Z7RAxGxIaI2ETxg9LTEfFB4ASwNztsL/BIdv8EsEfSTZI2A1uAM3XvuZmt2MD2Hg7u3kZPVwEBPV0FDu7e1ja/uaRsJRcxHQKOSbofeB64DyAizks6BjwFXAUeiIi5yqcxs2ZqpzJUO1HEdeXwVdfX1xcjIyPN7oaZWa5IOhsRfeWe8xWqZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSVoJd+ham1iaHSCw8NjTE7PsL6rwP7+Xn/nplmLc7jbooZGJxg8fo6Z2eJ3nE9MzzB4/ByAA96shbksY4s6PDz2arDPm5md4/DwWJN6ZGbVcLjboianZ2pqN7PW4HC3Ra3vKtTUbmatweFui9rf30uhs+OatkJnB/v7e5vUIzOrhj9QtUXNf2jq1TJm+eJwtyUNbO9xmJvljMsyZmYJcribmSXI4W5mliCHu5lZghzuZmYJcribmSXI4W5mlqAlw13S6yWdkfSEpPOSPpG1r5V0UtIz2e2aktcMSrooaUxSfyMHYGZm16vmIqYrwN0R8ZKkTuDfJP0LsBs4FRGHJB0ADgAflbQV2APcCawHvinpzRExV+kNzFqB9623lCw5c4+il7KHndmfAHYBR7L2I8BAdn8XcDQirkTEs8BFYEc9O21Wb/P71k9MzxC8tm/90OhEs7tmtixV1dwldUh6HLgMnIyI7wO3R8QlgOz2tuzwHuCFkpePZ20Lz7lP0oikkampqRUMwWzlvG+9paaqcI+IuYh4G7AB2CHpLYscrnKnKHPOhyKiLyL6uru7q+qsWaN433pLTU2rZSJiGvg2cC/woqR1ANnt5eywcWBjycs2AJMr7ahZI3nfektNNatluiV1ZfcLwLuAp4ETwN7ssL3AI9n9E8AeSTdJ2gxsAc7Uud9mdeV96y011ayWWQcckdRB8YfBsYh4VNJ3gWOS7geeB+4DiIjzko4BTwFXgQe8UsZanfett9Qo4rpy+Krr6+uLkZGRZnfDzCxXJJ2NiL5yz/kKVTOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEEOdzOzBDnczcwS5HA3M0uQw93MLEFLhrukjZK+JemCpPOSPpS1r5V0UtIz2e2aktcMSrooaUxSfyMHYGZm16tm5n4V+IuI+E3gHcADkrYCB4BTEbEFOJU9JntuD3AncC/wGUkdjei8mZmVt2S4R8SliPhBdv/nwAWgB9gFHMkOOwIMZPd3AUcj4kpEPAtcBHbUud9mZraImmrukjYB24HvA7dHxCUo/gAAbssO6wFeKHnZeNZmZmarpOpwl/RG4CvAhyPiZ4sdWqYtypxvn6QRSSNTU1PVdsPMzKpQVbhL6qQY7F+IiONZ84uS1mXPrwMuZ+3jwMaSl28AJheeMyIeioi+iOjr7u5ebv/NzKyMalbLCPgscCEiPlXy1Algb3Z/L/BISfseSTdJ2gxsAc7Ur8uWJ0OjE+w8dJrNB77GzkOnGRqdaHaXzNrCDVUcsxP4E+CcpMeztr8EDgHHJN0PPA/cBxAR5yUdA56iuNLmgYiYq3fHrfUNjU4wePwcM7PF//0T0zMMHj8HwMB2fwxj1kiKuK4cvur6+vpiZGSk2d1IwtDoBIeHx5icnmF9V4H9/b1NC9Kdh04zMT1zXXtPV4F/P3B3E3pklhZJZyOir9xz1czcLSdabaY8WSbYF2s3s/rx9gMJOTw89mqwz5uZnePw8FhT+rO+q1BTu5nVj8M9Ia02U97f30uh89qLkwudHezv721Kf8zaicM9Ia02Ux7Y3sPB3dvo6SogirX2g7u3+cNUs1XgmntC9vf3XlNzh+bPlAe29zjMzZrA4Z6Q+RBtldUyZtY8DvfEeKZsZuCau5lZkhzuZmYJcribmSXINXda65J9M7N6aPtwb7VL9s3M6qHtyzKtdsm+mVk9tH24t9ol+2Zm9dD24d5ql+ybmdVD24e7N7cysxS1/Qeqeb5k36t8zKyStg93yOcl+17lY2aLafuyTF55lY+ZLcbhnlNe5WNmi3G455RX+ZjZYhzuOeVVPma2GH+gmlN5XuVjZo3ncM+xPK7yMbPV4bKMmVmCHO5mZglyuJuZJcjhbmaWIH+g2kDe+8XMmsXh3iDe+8XMmsllmQbx3i9m1kyeuTdIvfd+cYnHzGqx5Mxd0uckXZb0ZEnbWkknJT2T3a4peW5Q0kVJY5L6G9XxVlfPvV/mSzwT0zMEr5V4hkYnVthLM0tVNWWZfwbuXdB2ADgVEVuAU9ljJG0F9gB3Zq/5jKQO2lA9935xicfMarVkuEfEd4CfLmjeBRzJ7h8BBkraj0bElYh4FrgI7KhPV/NlYHsPB3dvo6ergICergIHd29bVinF2/uaWa2WW3O/PSIuAUTEJUm3Ze09wPdKjhvP2tpSvfZ+Wd9VYKJMkHt7XzOrpN6rZVSmLcoeKO2TNCJpZGpqqs7dSIu39zWzWi033F+UtA4gu72ctY8DG0uO2wBMljtBRDwUEX0R0dfd3b3MbrSHepZ4zKw9LLcscwLYCxzKbh8paf+ipE8B64EtwJmVdtK8va+Z1WbJcJf0JeAu4FZJ48BfUQz1Y5LuB54H7gOIiPOSjgFPAVeBByJiruyJzcysYZYM94j4owpP3VPh+AeBB1fSqUbwRUBm1k7a4gpV7/NiZu2mLcJ9sYuAHO7V8W8+ZvnSFuHui4BWxr/5mOVPUuFeaXaZ54uAWmHG7N98zPInmXBfbHa5v7/3muegfhcBNTJ8W2XG7N98zPInmf3cl5pdNuIioEbv1tgqG4bVc4dLM1sdyczcl5pdNuIioKXCd6Uz+laZMTfyNx8za4xkZu7NmF1WCtn5GfxKZ/StMmP29gdm+ZPMzL0Zs8tKH9R2SHX5ALKVZsze/sAsX5KZuTdjdllpt8a5KLsRZs3lFM+YzWy5kpm5w+rPLuffa2Ft/fDwWN2WXnrGbGbLkVS4N0Ol8G2VcoqZtSeHewNUmtF7Bm5mq8XhvoiVXKC03HJKK1yRamb553CvoBlXh7bKFalmln/JrJapt2ZcHdoqV6SaWf4lMXNvRCmjGVeHtsoVqWaWf7mfuTdqf5dmXB3aKlekmln+5T7cG1XKqHSBUiOXMzbjPc0sTbkvyzSylPH6zte9+oOjq9DJX3/gzhWVe5YqH3kJpZnVS+7DvRFfxLFw1QrAlauvLPt85c5ZaSWMr0g1s3rIfVmmEaWM5ZR6hkYn2HnoNJsPfI2dh05fV/P3ShgzW025n7k3opRRa6mnmlm5V8KY2WrKfbhD/UsZtZZ6qvmO0Tx/j6uZ5U/uyzKNUGupp5pZuVfCmNlqSmLmXq1qL3aqtdRTzazcK2HMbDUpKnyxxGrq6+uLkZGRhr5HuRUwhc6OZX/5RekPil8tdPKLl68yO/faf8uVnNvMrBqSzkZEX7nnkpy5l5uhV1MXr+X8pT8opmdm6XydWPOGTqZ/OetZuZk1Xe7DfWGQ/95vdPOVsxPXrVxZGOzzlrNapdwPitlXgjfceAOjH3937YMwM6uzXId7uSWIX/je8ywsNM3MztEhlf1u0+WsVvGyRjNrdbleLVNuBl3pE4S5iOtWqwD88uWrNW8y5g2+zKzV5Trca5kp93QVOLh7G12Fzmva/+eXszXvIulljWbW6nId7l1v6CzbrgWPS4P35/939brja90GYGB7Dwd3b6Onq4B47QeHP0A1s1bRsJq7pHuBvwc6gIcj4lA9zz80OsFLZYK6s0P84W9v5FtPT12zWgZg8Pi5snV3qL1e7g2+zKyVNSTcJXUA/wD8PjAOPCbpREQ8Va/3ODw8xuwr1wf1zTfewN8MbLuufeeh0xVXzIDr5WaWlkaVZXYAFyPiRxHxMnAU2FXPN6g00/7fmdmajgfXy80sPY0K9x7ghZLH41nbqyTtkzQiaWRqaqrmN6h1xUql9g7J9XIzS06jwn3hZ5qwYJViRDwUEX0R0dfd3V3zG9S6YqXS8X/3B291sJtZchr1geo4sLHk8QZgsp5vUOtGXN64y8zaSUM2DpN0A/CfwD3ABPAY8McRcb7c8auxcZiZWWpWfeOwiLgq6c+AYYpLIT9XKdjNzKz+GrbOPSK+Dny9Uec3M7PKcn2FqpmZledwNzNLkMPdzCxBLfE1e5KmgB/X+LJbgZ80oDvNkNJYIK3xpDQWSGs8KY0FljeeX4+IshcKtUS4L4ekkUpLgPImpbFAWuNJaSyQ1nhSGgvUfzwuy5iZJcjhbmaWoDyH+0PN7kAdpTQWSGs8KY0F0hpPSmOBOo8ntzV3MzOrLM8zdzMzqyB34S7pXkljki5KOtDs/lRD0uckXZb0ZEnbWkknJT2T3a4peW4wG9+YpP7m9Lo8SRslfUvSBUnnJX0oa8/reF4v6YykJ7LxfCJrz+V4oPhNaJJGJT2aPc7zWJ6TdE7S45JGsrZcjkdSl6QvS3o6+/fzOw0dS0Tk5g/FTch+CLwJuBF4Atja7H5V0e93Am8Hnixp+yRwILt/APjb7P7WbFw3AZuz8XY0ewwl/V4HvD27fwvF3T+35ng8At6Y3e8Evg+8I6/jyfr458AXgUfz/Hct6+NzwK0L2nI5HuAI8KfZ/RuBrkaOJW8z94Z/fV8jRMR3gJ8uaN5F8X822e1ASfvRiLgSEc8CFymOuyVExKWI+EF2/+fABYrfspXX8UREvJQ97Mz+BDkdj6QNwPuAh0uaczmWReRuPJJ+heIk77MAEfFyREzTwLHkLdyX/Pq+HLk9Ii5BMTCB27L23IxR0iZgO8XZbm7Hk5UxHgcuAycjIs/j+TTwEeCVkra8jgWKP2i/IemspH1ZWx7H8yZgCvinrGT2sKSbaeBY8hbuS359XwJyMUZJbwS+Anw4In622KFl2lpqPBExFxFvo/iNYTskvWWRw1t2PJLeD1yOiLPVvqRMW0uMpcTOiHg78B7gAUnvXOTYVh7PDRRLs/8YEduBX1Asw1Sy4rHkLdwb/vV9q+hFSesAstvLWXvLj1FSJ8Vg/0JEHM+aczueedmvyd8G7iWf49kJfEDScxRLlndL+jz5HAsAETGZ3V4GvkqxNJHH8YwD49lvhQBfphj2DRtL3sL9MWCLpM2SbgT2ACea3KflOgHsze7vBR4pad8j6SZJm4EtwJkm9K8sSaJYN7wQEZ8qeSqv4+mW1JXdLwDvAp4mh+OJiMGI2BARmyj+2zgdER8kh2MBkHSzpFvm7wPvBp4kh+OJiP8CXpDUmzXdAzxFI8fS7E+Ql/GJ83sprtD4IfCxZvenyj5/CbgEzFL8iXw/8GvAKeCZ7HZtyfEfy8Y3Bryn2f1fMJbfpfjr4X8Aj2d/3pvj8fwWMJqN50ng41l7LsdT0se7eG21TC7HQrFO/UT25/z8v/ccj+dtwEj2d20IWNPIsfgKVTOzBOWtLGNmZlVwuJuZJcjhbmaWIIe7mVmCHO5mZglyuJuZJcjhbmaWIIe7mVmC/h/jxKbhCg6kMgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
......@@ -478,19 +823,14 @@
}
],
"source": [
"print(pears(histo80, histo90))\n",
"print(pears(histo80, histo100))\n",
"print(pears(histo90, histo100))\n",
"print(maxpears(histo90, histo100))\n",
"plt.scatter(maxpears(histo90, histo100)[1], histo100)"
"print(probhist(agghisto80, agghisto90))\n",
"print(probhist(agghisto80, agghisto100))\n",
"print(probhist(agghisto90, agghisto100))\n",
"print(aggmaxprobhist(histo80, histo90))\n",
"print(aggmaxprobhist(histo80, histo100))\n",
"print(aggmaxprobhist(histo90, histo100))\n",
"plt.scatter(aggmaxprobhist(histo90, histo100, allout=True)[1], agg_vector(histo100))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment