{ "cells": [ { "cell_type": "markdown", "id": "liberal-publisher", "metadata": {}, "source": [ "# Comprehensive Constraints Analysis - With Removed Statements - Final\n", "\n", "In this notebook, the original dataset is combined with the removed statements dataset and then the violations are determined in total." ] }, { "cell_type": "code", "execution_count": 2, "id": "juvenile-ability", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8f09d8d199d445fbb9e4ed86e3bb148e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1149471184 [00:00(node2), \" + parentFile + \": (node1)-[]->(nodex), P279star: (nodex)-[]->(par)' \\\n", " --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n", " --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " --graph-cache ~/sqlite3_caches/type_new2_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv ;\\\n", " kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv \\\n", " ../../wikidata-20210215/derived.\" + parentFile + \".tsv.gz \\\n", " --match 'm: (node1)-[nodeProp]->(node2), \" + parentFile + \": (node1)-[]->(par)' \\\n", " --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n", " --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " --graph-cache ~/sqlite3_caches/type_new2_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect.tsv ; \\\n", " kgtk --debug cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv ; \\\n", " ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\")\n", "\n", " cnt += 1\n", " except:\n", " print(\"Something failed for prop:\",prop)\n", "\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": null, "id": "electrical-agreement", "metadata": {}, "outputs": [], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 72, "id": "outside-stupid", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,14):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/typeConstraintValidator\"+str(i)+\".sh\")\n", " " ] }, { "cell_type": "markdown", "id": "competitive-canvas", "metadata": {}, "source": [ "### Analyze Violations" ] }, { "cell_type": "code", "execution_count": 21, "id": "casual-perth", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "87626194dcff46d9a805455ca60d475c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4d4a01eea5e946988b0acf5442b9ae20", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/835 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P13032031482610[../../allConstraintsAnalysis_WRemoved_Final/t...0.012685
P39193393158[../../allConstraintsAnalysis_WRemoved_Final/t...0.044495
P618526912[../../allConstraintsAnalysis_WRemoved_Final/t...0.042705
P3922182451[../../allConstraintsAnalysis_WRemoved_Final/t...0.027200
P30170594928017[../../allConstraintsAnalysis_WRemoved_Final/t...0.038172
\n", "" ], "text/plain": [ " correct incorrect paths \\\n", "P1303 203148 2610 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P3919 3393 158 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P6185 269 12 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P3922 1824 51 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P301 705949 28017 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "\n", " violation_ratio \n", "P1303 0.012685 \n", "P3919 0.044495 \n", "P6185 0.042705 \n", "P3922 0.027200 \n", "P301 0.038172 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeConstDF.head()" ] }, { "cell_type": "code", "execution_count": 27, "id": "competitive-peeing", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P81380462[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P5051081[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P2309055[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P2308051[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P2303044[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P1227020[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P2912016[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P6001016[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P8738014[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P538010[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P800406[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P558905[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P231205[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P651004[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
P231004[../../allConstraintsAnalysis_WRemoved_Final/t...1.0
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P8138 0 462 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P5051 0 81 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2309 0 55 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2308 0 51 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2303 0 44 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P1227 0 20 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2912 0 16 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P6001 0 16 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P8738 0 14 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P538 0 10 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P8004 0 6 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P5589 0 5 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2312 0 5 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P6510 0 4 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P2310 0 4 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "\n", " violation_ratio \n", "P8138 1.0 \n", "P5051 1.0 \n", "P2309 1.0 \n", "P2308 1.0 \n", "P2303 1.0 \n", "P1227 1.0 \n", "P2912 1.0 \n", "P6001 1.0 \n", "P8738 1.0 \n", "P538 1.0 \n", "P8004 1.0 \n", "P5589 1.0 \n", "P2312 1.0 \n", "P6510 1.0 \n", "P2310 1.0 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeConstDF.sort_values(by=['violation_ratio','incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 30, "id": "clinical-lawsuit", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1465.000000\n", "mean 0.117857\n", "std 0.226919\n", "min 0.000000\n", "25% 0.007233\n", "50% 0.024422\n", "75% 0.094675\n", "max 1.000000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeConstDF['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 31, "id": "wanted-domestic", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Type Constraint Violation Ratios')" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "typeConstDF['violation_ratio'].plot.hist(bins=100).set_title(\"Type Constraint Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 32, "id": "sufficient-hollywood", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Type Constraint Violation Ratios (<=0.05)')" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "typeConstDF[typeConstDF['violation_ratio'] <= 0.05].violation_ratio.plot.hist(bins=100).set_title(\"Type Constraint Violation Ratios (<=0.05)\")" ] }, { "cell_type": "code", "execution_count": 33, "id": "minor-marshall", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of constraints whose violation ratio is greater than mean :0/1465\n" ] } ], "source": [ "print(f\"No. of constraints whose violation ratio is greater than mean :{sum(typeConstDF['violation_ratio'] >= 5.286054)}/{len(typeConstDF)}\")" ] }, { "cell_type": "code", "execution_count": 36, "id": "revolutionary-violence", "metadata": {}, "outputs": [], "source": [ "for key1 in typeConstViolations.keys():\n", " typeConstViolations[key1]['correct'] = typeConstViolations[key1]['instanceOf']['correct'] + typeConstViolations[key1]['subclass']['correct'] + typeConstViolations[key1]['instanceOfOrSubclass']['correct']\n", " typeConstViolations[key1]['incorrect'] = typeConstViolations[key1]['instanceOf']['incorrect'] + typeConstViolations[key1]['subclass']['incorrect'] + typeConstViolations[key1]['instanceOfOrSubclass']['incorrect']\n", " typeConstViolations[key1]['VR'] = typeConstViolations[key1]['incorrect'] / (typeConstViolations[key1]['correct'] + typeConstViolations[key1]['incorrect'])\n", " " ] }, { "cell_type": "code", "execution_count": 37, "id": "emotional-favorite", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "{'mandatory': {'instanceOf': {'correct': 46306630, 'incorrect': 798106},\n", " 'subclass': {'correct': 2064, 'incorrect': 53},\n", " 'instanceOfOrSubclass': {'correct': 233195, 'incorrect': 3169},\n", " 'propCount': 167,\n", " 'correct': 46541889,\n", " 'incorrect': 801328,\n", " 'VR': 0.016925930487571218},\n", " 'suggestion': {'instanceOf': {'correct': 62170, 'incorrect': 19110},\n", " 'subclass': {'correct': 0, 'incorrect': 0},\n", " 'instanceOfOrSubclass': {'correct': 24237, 'incorrect': 3458},\n", " 'propCount': 11,\n", " 'correct': 86407,\n", " 'incorrect': 22568,\n", " 'VR': 0.20709337003899977},\n", " 'normal': {'instanceOf': {'correct': 425791059, 'incorrect': 7991316},\n", " 'subclass': {'correct': 98826, 'incorrect': 13672},\n", " 'instanceOfOrSubclass': {'correct': 68383205, 'incorrect': 875475},\n", " 'propCount': 1287,\n", " 'correct': 494273090,\n", " 'incorrect': 8880463,\n", " 'VR': 0.017649608051162863}}" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeConstViolations" ] }, { "cell_type": "code", "execution_count": 38, "id": "aggregate-impact", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratiototal
P20931488432131512369[../../allConstraintsAnalysis_WRemoved_Final/t...0.010059150355582
P1476441008712199197[../../allConstraintsAnalysis_WRemoved_Final/t...0.04749946300068
P57739990807165864[../../allConstraintsAnalysis_WRemoved_Final/t...0.00413040156671
P143337028672112955[../../allConstraintsAnalysis_WRemoved_Final/t...0.00304137141627
P121533425605316565[../../allConstraintsAnalysis_WRemoved_Final/t...0.00938233742170
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2093 148843213 1512369 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P1476 44100871 2199197 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P577 39990807 165864 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P1433 37028672 112955 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "P1215 33425605 316565 [../../allConstraintsAnalysis_WRemoved_Final/t... \n", "\n", " violation_ratio total \n", "P2093 0.010059 150355582 \n", "P1476 0.047499 46300068 \n", "P577 0.004130 40156671 \n", "P1433 0.003041 37141627 \n", "P1215 0.009382 33742170 " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeConstDF['total'] = typeConstDF['correct'] + typeConstDF['incorrect']\n", "typeConstDF.sort_values(by=['total'],ascending=False).head()" ] }, { "cell_type": "code", "execution_count": 39, "id": "grateful-telling", "metadata": {}, "outputs": [], "source": [ "typeConstDF.to_csv('../../allConstraintsAnalysis_WRemoved_Final/typeConstDFAnalysis.csv')" ] }, { "cell_type": "markdown", "id": "bearing-kruger", "metadata": {}, "source": [ "### Find out time required" ] }, { "cell_type": "code", "execution_count": null, "id": "veterinary-fault", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from tqdm.notebook import tqdm\n", "\n", "codepConstViolations = {}\n", "\n", "codepConstViolations = {}\n", "codepConstPropList = set()\n", "\n", "def extractTimes(filename):\n", " times = []\n", " with open(filename) as f:\n", " for line in f:\n", " if \"real\" in line:\n", " line = line.strip()\n", " time1 = line.split(\"\\t\")[1]\n", " mins, sec = time1.split(\"m\")\n", " mins = int(mins)\n", " sec = float(sec[:-1])\n", " times.append(60 * mins + sec)\n", " return times\n", "\n", "# codepConstViolationsSummary = {}\n", "times = []\n", "filePath = '/data/wd-correctness/propertiesSplit_WRemoved_Final/checkViolations/exec_logs/'\n", "for filename in tqdm(os.listdir(filePath)):\n", " if filename.startswith(\"typeConstraintValidator\"):\n", " tempTimes = extractTimes(filePath + filename)\n", " times += tempTimes" ] }, { "cell_type": "code", "execution_count": null, "id": "infinite-assembly", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(times).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "opened-essex", "metadata": {}, "outputs": [], "source": [ "import seaborn as sns\n", "sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for type constraint checks\")" ] }, { "cell_type": "markdown", "id": "intense-computer", "metadata": {}, "source": [ "## Value Type Constraint\n", "\n", "Here, the constraint indicates that node2 must be an instance of or subclass of the specified class" ] }, { "cell_type": "markdown", "id": "animated-companion", "metadata": {}, "source": [ "### Understand Constraints File" ] }, { "cell_type": "code", "execution_count": null, "id": "static-profit", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "dfValueType = pd.read_csv('../../constraintsOP/valuetypeConstraint/claims.type-constraints_all1.tsv',sep='\\t')" ] }, { "cell_type": "code", "execution_count": null, "id": "worthy-malawi", "metadata": {}, "outputs": [], "source": [ "dfValueType = dfValueType.groupby(['node1','label']).node2.apply(lambda p: p.tolist()).reset_index()" ] }, { "cell_type": "code", "execution_count": null, "id": "eleven-tiffany", "metadata": {}, "outputs": [], "source": [ "dfValueType.head()" ] }, { "cell_type": "code", "execution_count": null, "id": "expired-stuff", "metadata": {}, "outputs": [], "source": [ "dfValueType['label'].unique()" ] }, { "cell_type": "markdown", "id": "digital-harvard", "metadata": {}, "source": [ "### Query Generator" ] }, { "cell_type": "code", "execution_count": 43, "id": "white-badge", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bb623e1d72164970a40f3bc2d9ab6346", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/932 [00:00(node2), \" + parentFile + \": (node2)-[]->(nodex), P279star: (nodex)-[]->(par)' \\\n", " --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n", " --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " --graph-cache ~/sqlite3_caches/valueType_new_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv ;\\\n", " kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv \\\n", " ../../wikidata-20210215/derived.\" + parentFile + \".tsv.gz \\\n", " --match 'm: (node1)-[nodeProp]->(node2), \" + parentFile + \": (node2)-[]->(par)' \\\n", " --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n", " --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " --graph-cache ~/sqlite3_caches/valueType_new_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect_temp.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect.tsv ; \\\n", " kgtk --debug cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct_temp2.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv ; \\\n", " ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\")\n", "\n", " cnt += 1\n", " except:\n", " print(\"Something failed for prop:\",prop)\n", "\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 3, "id": "capable-ballot", "metadata": {}, "outputs": [], "source": [ "!zgrep -P \"Q98970042\\t\" ../../wikidata-20210215/derived.P279star.tsv.gz" ] }, { "cell_type": "code", "execution_count": 44, "id": "qualified-cursor", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "897" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 45, "id": "simplified-cameroon", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,9):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/valueTypeConstraintValidator_xverify3\"+str(i)+\".sh\")\n", " " ] }, { "cell_type": "markdown", "id": "spectacular-warner", "metadata": {}, "source": [ "### Analyze Violations" ] }, { "cell_type": "code", "execution_count": 41, "id": "valid-defense", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "98c5e9ac78ef42519b4391f36064d9ec", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0de0552b0a8340ad9113f80de62f4ee1", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/540 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P852452624[../../allConstraintsAnalysis_WRemoved_Final/v...0.005275
P236344040[../../allConstraintsAnalysis_WRemoved_Final/v...0.000000
P73271876[../../allConstraintsAnalysis_WRemoved_Final/v...0.031088
P85316008[../../allConstraintsAnalysis_WRemoved_Final/v...0.004975
P23024791835[../../allConstraintsAnalysis_WRemoved_Final/v...0.000730
\n", "" ], "text/plain": [ " correct incorrect paths \\\n", "P852 4526 24 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P2363 4404 0 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P7327 187 6 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P853 1600 8 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P2302 47918 35 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "\n", " violation_ratio \n", "P852 0.005275 \n", "P2363 0.000000 \n", "P7327 0.031088 \n", "P853 0.004975 \n", "P2302 0.000730 " ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valTypeConstDF.head()" ] }, { "cell_type": "code", "execution_count": 47, "id": "neural-trail", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P50080341961[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P610409808[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P7374044[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P3028015[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P2839015[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P3027013[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P538010[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P224106[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P442506[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P619105[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P653305[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P653405[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P66004[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P717403[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
P862702[../../allConstraintsAnalysis_WRemoved_Final/v...1.0
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P5008 0 341961 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P6104 0 9808 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P7374 0 44 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P3028 0 15 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P2839 0 15 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P3027 0 13 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P538 0 10 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P2241 0 6 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P4425 0 6 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P6191 0 5 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P6533 0 5 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P6534 0 5 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P660 0 4 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P7174 0 3 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "P8627 0 2 [../../allConstraintsAnalysis_WRemoved_Final/v... \n", "\n", " violation_ratio \n", "P5008 1.0 \n", "P6104 1.0 \n", "P7374 1.0 \n", "P3028 1.0 \n", "P2839 1.0 \n", "P3027 1.0 \n", "P538 1.0 \n", "P2241 1.0 \n", "P4425 1.0 \n", "P6191 1.0 \n", "P6533 1.0 \n", "P6534 1.0 \n", "P660 1.0 \n", "P7174 1.0 \n", "P8627 1.0 " ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valTypeConstDF.sort_values(by=['violation_ratio','incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 49, "id": "cutting-polyester", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 904.000000\n", "mean 0.112995\n", "std 0.211926\n", "min 0.000000\n", "25% 0.006362\n", "50% 0.024834\n", "75% 0.099675\n", "max 1.000000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valTypeConstDF['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 50, "id": "alert-receiver", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Value Type Constraint Violation Ratios')" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "valTypeConstDF['violation_ratio'].plot.hist(bins=100).set_title(\"Value Type Constraint Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 51, "id": "italian-motel", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Value Type Constraint Violation Ratios (<=0.04)')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "valTypeConstDF[valTypeConstDF['violation_ratio'] <= 0.04].violation_ratio.plot.hist(bins=100).set_title(\"Value Type Constraint Violation Ratios (<=0.04)\")" ] }, { "cell_type": "code", "execution_count": 52, "id": "prescription-ceramic", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of constraints whose violation ratio is greater than mean :0/904\n" ] } ], "source": [ "print(f\"No. of constraints whose violation ratio is greater than mean :{sum(valTypeConstDF['violation_ratio'] >= 3.950680)}/{len(valTypeConstDF)}\")" ] }, { "cell_type": "code", "execution_count": 55, "id": "tutorial-mineral", "metadata": {}, "outputs": [], "source": [ "for key1 in valueTypeConstViolations.keys():\n", " valueTypeConstViolations[key1]['correct'] = valueTypeConstViolations[key1]['instanceOf']['correct'] + valueTypeConstViolations[key1]['subclass']['correct'] + valueTypeConstViolations[key1]['instanceOfOrSubclass']['correct']\n", " valueTypeConstViolations[key1]['incorrect'] = valueTypeConstViolations[key1]['instanceOf']['incorrect'] + valueTypeConstViolations[key1]['subclass']['incorrect'] + valueTypeConstViolations[key1]['instanceOfOrSubclass']['incorrect']\n", " valueTypeConstViolations[key1]['VR'] = valueTypeConstViolations[key1]['incorrect'] / (valueTypeConstViolations[key1]['correct'] + valueTypeConstViolations[key1]['incorrect'])\n", " " ] }, { "cell_type": "code", "execution_count": 56, "id": "satellite-concern", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "{'mandatory': {'instanceOf': {'correct': 11564885, 'incorrect': 30391},\n", " 'subclass': {'correct': 55983, 'incorrect': 83},\n", " 'instanceOfOrSubclass': {'correct': 13090, 'incorrect': 320},\n", " 'propCount': 108,\n", " 'correct': 11633958,\n", " 'incorrect': 30794,\n", " 'VR': 0.0026399189627006217},\n", " 'suggestion': {'instanceOf': {'correct': 46189, 'incorrect': 715},\n", " 'subclass': {'correct': 127, 'incorrect': 32},\n", " 'instanceOfOrSubclass': {'correct': 0, 'incorrect': 0},\n", " 'propCount': 5,\n", " 'correct': 46316,\n", " 'incorrect': 747,\n", " 'VR': 0.01587234132970699},\n", " 'normal': {'instanceOf': {'correct': 94116782, 'incorrect': 2067912},\n", " 'subclass': {'correct': 4674914, 'incorrect': 73885},\n", " 'instanceOfOrSubclass': {'correct': 77686563, 'incorrect': 959169},\n", " 'propCount': 791,\n", " 'correct': 176478259,\n", " 'incorrect': 3100966,\n", " 'VR': 0.01726795513233783}}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valueTypeConstViolations" ] }, { "cell_type": "code", "execution_count": 57, "id": "fabulous-sudan", "metadata": {}, "outputs": [], "source": [ "valTypeConstDF.to_csv('../../allConstraintsAnalysis_WRemoved_Final/valueTypeConstDFAnalysis.csv')" ] }, { "cell_type": "markdown", "id": "traditional-shakespeare", "metadata": {}, "source": [ "### Find out time required" ] }, { "cell_type": "code", "execution_count": null, "id": "spoken-symphony", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from tqdm.notebook import tqdm\n", "\n", "codepConstViolations = {}\n", "\n", "codepConstViolations = {}\n", "codepConstPropList = set()\n", "\n", "def extractTimes(filename):\n", " times = []\n", " with open(filename) as f:\n", " for line in f:\n", " if \"real\" in line:\n", " line = line.strip()\n", " time1 = line.split(\"\\t\")[1]\n", " mins, sec = time1.split(\"m\")\n", " mins = int(mins)\n", " sec = float(sec[:-1])\n", " times.append(60 * mins + sec)\n", " return times\n", "\n", "# codepConstViolationsSummary = {}\n", "times = []\n", "filePath = '/data/wd-correctness/propertiesSplit_WRemoved_Final/checkViolations/exec_logs/'\n", "for filename in tqdm(os.listdir(filePath)):\n", " if filename.startswith(\"valueTypeConstraintValidator\"):\n", " tempTimes = extractTimes(filePath + filename)\n", " times += tempTimes" ] }, { "cell_type": "code", "execution_count": null, "id": "heavy-argentina", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(times).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "organized-mixer", "metadata": {}, "outputs": [], "source": [ "import seaborn as sns\n", "sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for value type constraint checks\")" ] }, { "cell_type": "markdown", "id": "motivated-sympathy", "metadata": {}, "source": [ "## Item Requires Statement Constraint\n", "\n", "Here, the constraint mentions the other properties that node1 must have and the values that this property must have in few cases" ] }, { "cell_type": "markdown", "id": "chubby-glass", "metadata": {}, "source": [ "### Understand Constraints File" ] }, { "cell_type": "code", "execution_count": 58, "id": "funny-batch", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import math\n", "dfItemRequires = pd.read_csv('../../constraintsOP/itemRequiresConstraint/claims.type-constraints_all.tsv',sep='\\t')" ] }, { "cell_type": "code", "execution_count": 59, "id": "original-expression", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()" ] }, { "cell_type": "code", "execution_count": 60, "id": "adequate-symphony", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['P2306', 'P2305', 'P2316', 'P2304', 'P2303', 'P6607', 'P4155',\n", " 'P31', 'P2916', 'P4680', 'P2308'], dtype=object)" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires['label'].unique()" ] }, { "cell_type": "code", "execution_count": 61, "id": "infrared-canal", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "P2306 7182\n", "P2305 2540\n", "P2316 2523\n", "P2303 422\n", "P2304 14\n", "P6607 14\n", "P2916 5\n", "P4680 2\n", "P4155 1\n", "P31 1\n", "P2308 1\n", "Name: label, dtype: int64" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires['label'].value_counts()" ] }, { "cell_type": "code", "execution_count": 62, "id": "focused-karen", "metadata": {}, "outputs": [], "source": [ "#Reference: https://stackoverflow.com/a/17298454\n", "dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')" ] }, { "cell_type": "code", "execution_count": 63, "id": "private-boundary", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2304P2305P2306P2308P2316P2916P31P4155P4680P6607
node1id
P1006P1006-P2302-Q21503247-0451ef47-0NaNNaNNaN[P214]NaNNaNNaNNaNNaNNaNNaN
P1010P1010-P2302-Q21503247-56183614-0NaNNaNNaN[P31]NaNNaNNaNNaNNaNNaNNaN
P1010-P2302-Q21503247-fd256eaf-0NaNNaN[Q794][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P1015P1015-P2302-Q21503247-20e3bfc5-0NaNNaNNaN[P31]NaNNaNNaNNaNNaNNaNNaN
P1017P1017-P2302-Q21503247-bbac2ce3-0NaNNaNNaN[P214]NaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ "label P2303 P2304 P2305 P2306 P2308 \\\n", "node1 id \n", "P1006 P1006-P2302-Q21503247-0451ef47-0 NaN NaN NaN [P214] NaN \n", "P1010 P1010-P2302-Q21503247-56183614-0 NaN NaN NaN [P31] NaN \n", " P1010-P2302-Q21503247-fd256eaf-0 NaN NaN [Q794] [P17] NaN \n", "P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN NaN NaN [P31] NaN \n", "P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN NaN NaN [P214] NaN \n", "\n", "label P2316 P2916 P31 P4155 P4680 \\\n", "node1 id \n", "P1006 P1006-P2302-Q21503247-0451ef47-0 NaN NaN NaN NaN NaN \n", "P1010 P1010-P2302-Q21503247-56183614-0 NaN NaN NaN NaN NaN \n", " P1010-P2302-Q21503247-fd256eaf-0 [Q21502408] NaN NaN NaN NaN \n", "P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN NaN NaN NaN NaN \n", "P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN NaN NaN NaN NaN \n", "\n", "label P6607 \n", "node1 id \n", "P1006 P1006-P2302-Q21503247-0451ef47-0 NaN \n", "P1010 P1010-P2302-Q21503247-56183614-0 NaN \n", " P1010-P2302-Q21503247-fd256eaf-0 NaN \n", "P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN \n", "P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN " ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "code", "execution_count": 64, "id": "conceptual-schedule", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.droplevel(1)" ] }, { "cell_type": "code", "execution_count": 65, "id": "third-hayes", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2304P2305P2306P2308P2316P2916P31P4155P4680P6607
node1
P1006NaNNaNNaN[P214]NaNNaNNaNNaNNaNNaNNaN
P1010NaNNaNNaN[P31]NaNNaNNaNNaNNaNNaNNaN
P1010NaNNaN[Q794][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P1015NaNNaNNaN[P31]NaNNaNNaNNaNNaNNaNNaN
P1017NaNNaNNaN[P214]NaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ "label P2303 P2304 P2305 P2306 P2308 P2316 P2916 P31 P4155 P4680 \\\n", "node1 \n", "P1006 NaN NaN NaN [P214] NaN NaN NaN NaN NaN NaN \n", "P1010 NaN NaN NaN [P31] NaN NaN NaN NaN NaN NaN \n", "P1010 NaN NaN [Q794] [P17] NaN [Q21502408] NaN NaN NaN NaN \n", "P1015 NaN NaN NaN [P31] NaN NaN NaN NaN NaN NaN \n", "P1017 NaN NaN NaN [P214] NaN NaN NaN NaN NaN NaN \n", "\n", "label P6607 \n", "node1 \n", "P1006 NaN \n", "P1010 NaN \n", "P1010 NaN \n", "P1015 NaN \n", "P1017 NaN " ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "markdown", "id": "shaped-companion", "metadata": {}, "source": [ "However, there is one anomaly where the property does not have a co-dependency constraint associated with it, but still has a link to this constraint." ] }, { "cell_type": "code", "execution_count": 66, "id": "indian-journal", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2304P2305P2306P2308P2316P2916P31P4155P4680P6607
node1
P5447NaNNaN[Q55426051][P5446]NaNNaNNaNNaNNaN[Q46466783]NaN
P5448NaNNaN[Q55426051][P5446]NaNNaNNaNNaNNaN[Q46466783]NaN
\n", "
" ], "text/plain": [ "label P2303 P2304 P2305 P2306 P2308 P2316 P2916 P31 P4155 \\\n", "node1 \n", "P5447 NaN NaN [Q55426051] [P5446] NaN NaN NaN NaN NaN \n", "P5448 NaN NaN [Q55426051] [P5446] NaN NaN NaN NaN NaN \n", "\n", "label P4680 P6607 \n", "node1 \n", "P5447 [Q46466783] NaN \n", "P5448 [Q46466783] NaN " ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires[dfItemRequires['P4680'].apply(lambda p: type(p) == list)]" ] }, { "cell_type": "code", "execution_count": 67, "id": "discrete-template", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2304P2305P2306P2308P2316P2916P31P4155P4680P6607
node1
P1010NaNNaN[Q794][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P1045NaNNaN[Q20808382, Q28218485, Q3044918][P39]NaNNaNNaNNaNNaNNaNNaN
P1045NaNNaN[Q82955][P106]NaNNaNNaNNaNNaNNaNNaN
P1045NaNNaN[Q5][P31]NaN[Q21502408]NaNNaNNaNNaNNaN
P1045NaNNaN[Q142, Q71084][P27]NaNNaNNaNNaNNaNNaNNaN
....................................
P980NaNNaN[Q34][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P981NaNNaN[Q55][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P981NaNNaN[Q1852859][P31]NaNNaNNaNNaNNaNNaNNaN
P988NaNNaN[Q928][P17]NaN[Q21502408]NaNNaNNaNNaNNaN
P990[Q49678, Q853715]NaN[Q5][P31]NaNNaNNaNNaNNaNNaNNaN
\n", "

2540 rows × 11 columns

\n", "
" ], "text/plain": [ "label P2303 P2304 P2305 P2306 \\\n", "node1 \n", "P1010 NaN NaN [Q794] [P17] \n", "P1045 NaN NaN [Q20808382, Q28218485, Q3044918] [P39] \n", "P1045 NaN NaN [Q82955] [P106] \n", "P1045 NaN NaN [Q5] [P31] \n", "P1045 NaN NaN [Q142, Q71084] [P27] \n", "... ... ... ... ... \n", "P980 NaN NaN [Q34] [P17] \n", "P981 NaN NaN [Q55] [P17] \n", "P981 NaN NaN [Q1852859] [P31] \n", "P988 NaN NaN [Q928] [P17] \n", "P990 [Q49678, Q853715] NaN [Q5] [P31] \n", "\n", "label P2308 P2316 P2916 P31 P4155 P4680 P6607 \n", "node1 \n", "P1010 NaN [Q21502408] NaN NaN NaN NaN NaN \n", "P1045 NaN NaN NaN NaN NaN NaN NaN \n", "P1045 NaN NaN NaN NaN NaN NaN NaN \n", "P1045 NaN [Q21502408] NaN NaN NaN NaN NaN \n", "P1045 NaN NaN NaN NaN NaN NaN NaN \n", "... ... ... ... ... ... ... ... \n", "P980 NaN [Q21502408] NaN NaN NaN NaN NaN \n", "P981 NaN [Q21502408] NaN NaN NaN NaN NaN \n", "P981 NaN NaN NaN NaN NaN NaN NaN \n", "P988 NaN [Q21502408] NaN NaN NaN NaN NaN \n", "P990 NaN NaN NaN NaN NaN NaN NaN \n", "\n", "[2540 rows x 11 columns]" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires[dfItemRequires['P2305'].apply(lambda p: type(p) == list)]" ] }, { "cell_type": "markdown", "id": "forced-christmas", "metadata": {}, "source": [ "### Query Generator" ] }, { "cell_type": "markdown", "id": "acquired-floor", "metadata": {}, "source": [ "#### Version 1 - Mandatory + Suggestion + Normal" ] }, { "cell_type": "code", "execution_count": 11, "id": "turkish-establishment", "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3147 [00:00(node2)\"]\n", " commandWhere = \" --where '\"\n", " commandWhere = []\n", " \n", " # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", " constSet = mandatory + suggestion + normal\n", " \n", " if len(constSet) == 0:\n", " continue\n", " excptns = set()\n", " for (rowNo, constraint) in enumerate(constSet):\n", " prop2 = constraint['P2306']\n", " \n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " commandOtherFiles += \"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \"\n", " if type(constraint['P2303']) == list: # Exceptions present\n", " if len(excptns) == 0:\n", " excptns = set(constraint['P2303'])\n", " else:\n", " excptns = excptns.intersection(set(constraint['P2303']))\n", " if type(constraint['P2305']) == list:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n", " commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n", " else:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n", "# print(commandMatchMoreFiles)\n", " if len(commandWhere) == 0:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n", " else:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " if len(excptns) == 0:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", " fOP.write(command)\n", " else:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 12, "id": "peripheral-herald", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "534" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 13, "id": "incorporated-logistics", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fCnt" ] }, { "cell_type": "code", "execution_count": 54, "id": "optimum-blowing", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,28):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/codepConst_MSN_Validator\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "indoor-verse", "metadata": {}, "source": [ "#### Version 2 - Mandatory + Normal" ] }, { "cell_type": "code", "execution_count": 15, "id": "furnished-paradise", "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3147 [00:00(node2)\"]\n", " commandWhere = \" --where '\"\n", " commandWhere = []\n", " \n", " # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", " constSet = mandatory + normal\n", " \n", " if len(constSet) == 0:\n", " continue\n", " excptns = set()\n", " for (rowNo, constraint) in enumerate(constSet):\n", " prop2 = constraint['P2306']\n", " \n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " commandOtherFiles += \"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \"\n", " if type(constraint['P2303']) == list: # Exceptions present\n", " if len(excptns) == 0:\n", " excptns = set(constraint['P2303'])\n", " else:\n", " excptns = excptns.intersection(set(constraint['P2303']))\n", " if type(constraint['P2305']) == list:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n", " commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n", " else:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n", "# print(commandMatchMoreFiles)\n", " if len(commandWhere) == 0:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n", " else:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " if len(excptns) == 0:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", " fOP.write(command)\n", " else:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 16, "id": "searching-individual", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "475" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 55, "id": "silver-clarity", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,25):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/codepConst_MN_Validator\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "prescription-access", "metadata": {}, "source": [ "#### Version 3 - Mandatory" ] }, { "cell_type": "code", "execution_count": 17, "id": "married-porter", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3147 [00:00(node2)\"]\n", " commandWhere = \" --where '\"\n", " commandWhere = []\n", " \n", " # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", " constSet = mandatory\n", " \n", " if len(constSet) == 0:\n", " continue\n", " excptns = set()\n", " for (rowNo, constraint) in enumerate(constSet):\n", " prop2 = constraint['P2306']\n", " \n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " commandOtherFiles += \"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \"\n", " if type(constraint['P2303']) == list: # Exceptions present\n", " if len(excptns) == 0:\n", " excptns = set(constraint['P2303'])\n", " else:\n", " excptns = excptns.intersection(set(constraint['P2303']))\n", " if type(constraint['P2305']) == list:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n", " commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n", " else:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n", "# print(commandMatchMoreFiles)\n", " if len(commandWhere) == 0:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n", " else:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " if len(excptns) == 0:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", " fOP.write(command)\n", " else:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 18, "id": "according-blackberry", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "79" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 56, "id": "extraordinary-drawing", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,5):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/codepConst_M_Validator\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "subsequent-brown", "metadata": {}, "source": [ "#### Version 4 - Normal" ] }, { "cell_type": "code", "execution_count": 21, "id": "operational-migration", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3147 [00:00(node2)\"]\n", " commandWhere = \" --where '\"\n", " commandWhere = []\n", " \n", " # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", " constSet = normal\n", " \n", " if len(constSet) == 0:\n", " continue\n", " excptns = set()\n", " for (rowNo, constraint) in enumerate(constSet):\n", " prop2 = constraint['P2306']\n", " \n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " commandOtherFiles += \"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \"\n", " if type(constraint['P2303']) == list: # Exceptions present\n", " if len(excptns) == 0:\n", " excptns = set(constraint['P2303'])\n", " else:\n", " excptns = excptns.intersection(set(constraint['P2303']))\n", " if type(constraint['P2305']) == list:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n", " commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n", " else:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n", "# print(commandMatchMoreFiles)\n", " if len(commandWhere) == 0:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n", " else:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " if len(excptns) == 0:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", " fOP.write(command)\n", " else:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv\\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 22, "id": "harmful-binary", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "424" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 57, "id": "advance-married", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,23):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/codepConst_N_Validator\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "ranging-journal", "metadata": {}, "source": [ "#### Version 5 - Suggestion" ] }, { "cell_type": "code", "execution_count": 23, "id": "missing-jordan", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3147 [00:00(node2)\"]\n", " commandWhere = \" --where '\"\n", " commandWhere = []\n", " \n", " # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", " constSet = suggestion\n", " \n", " if len(constSet) == 0:\n", " continue\n", " excptns = set()\n", " for (rowNo, constraint) in enumerate(constSet):\n", " prop2 = constraint['P2306']\n", " \n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " commandOtherFiles += \"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \"\n", " if type(constraint['P2303']) == list: # Exceptions present\n", " if len(excptns) == 0:\n", " excptns = set(constraint['P2303'])\n", " else:\n", " excptns = excptns.intersection(set(constraint['P2303']))\n", " if type(constraint['P2305']) == list:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n", " commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n", " else:\n", " commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n", "# print(commandMatchMoreFiles)\n", " if len(commandWhere) == 0:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n", " else:\n", " command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " if len(excptns) == 0:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", " fOP.write(command)\n", " else:\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 24, "id": "soviet-forth", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "97" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 58, "id": "racial-stationery", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,6):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/codepConst_S_Validator\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "homeless-pleasure", "metadata": {}, "source": [ "### Analyze Violations" ] }, { "cell_type": "code", "execution_count": 68, "id": "welcome-dependence", "metadata": { "scrolled": true }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e25b0c210ce141f3bf78f3aa51ff00d9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7baebc8398064eb59bcf717d236bc684", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1206 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpaths
P101818616[../../allConstraintsAnalysis_WRemoved_Final/c...
P14561864837[../../allConstraintsAnalysis_WRemoved_Final/c...
P19278222228453[../../allConstraintsAnalysis_WRemoved_Final/c...
P231205[../../allConstraintsAnalysis_WRemoved_Final/c...
P2860174842113152425[../../allConstraintsAnalysis_WRemoved_Final/c...
............
P409114871[../../allConstraintsAnalysis_WRemoved_Final/c...
P410138058813[../../allConstraintsAnalysis_WRemoved_Final/c...
P41163046866[../../allConstraintsAnalysis_WRemoved_Final/c...
P4122046513806[../../allConstraintsAnalysis_WRemoved_Final/c...
P41338914535536[../../allConstraintsAnalysis_WRemoved_Final/c...
\n", "

534 rows × 3 columns

\n", "" ], "text/plain": [ " correct incorrect paths\n", "P1018 186 16 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P1456 18648 37 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P19 2782222 28453 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P2312 0 5 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P2860 174842113 152425 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "... ... ... ...\n", "P4091 1487 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P410 138058 813 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P411 6304 6866 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P412 20465 13806 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P413 389145 35536 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "\n", "[534 rows x 3 columns]" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF1" ] }, { "cell_type": "code", "execution_count": 76, "id": "powered-residence", "metadata": {}, "outputs": [], "source": [ "codepConstDF1['violation_ratio'] = codepConstDF1.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)" ] }, { "cell_type": "code", "execution_count": 77, "id": "chinese-pressing", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P2302048022[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P306301252[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P2309055[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P2308051[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P5447024[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P5448023[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P756909[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P790307[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231205[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231304[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231004[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231104[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P468002[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P230702[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P291602[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2302 0 48022 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P3063 0 1252 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2309 0 55 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2308 0 51 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P5447 0 24 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P5448 0 23 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P7569 0 9 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P7903 0 7 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2312 0 5 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2313 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2310 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2311 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P4680 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2307 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2916 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P2302 1.0 \n", "P3063 1.0 \n", "P2309 1.0 \n", "P2308 1.0 \n", "P5447 1.0 \n", "P5448 1.0 \n", "P7569 1.0 \n", "P7903 1.0 \n", "P2312 1.0 \n", "P2313 1.0 \n", "P2310 1.0 \n", "P2311 1.0 \n", "P4680 1.0 \n", "P2307 1.0 \n", "P2916 1.0 " ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF1.sort_values(by=['violation_ratio', 'incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 80, "id": "demonstrated-debut", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P7342119055738534[../../allConstraintsAnalysis_WRemoved_Final/c...0.258447
P22142989348721476[../../allConstraintsAnalysis_WRemoved_Final/c...0.194425
P43331113458436995[../../allConstraintsAnalysis_WRemoved_Final/c...0.013851
P1951150231401686[../../allConstraintsAnalysis_WRemoved_Final/c...0.258832
P5696926852267556[../../allConstraintsAnalysis_WRemoved_Final/c...0.037189
P13111274319200519[../../allConstraintsAnalysis_WRemoved_Final/c...0.017475
P2757295163856[../../allConstraintsAnalysis_WRemoved_Final/c...0.957377
P2860174842113152425[../../allConstraintsAnalysis_WRemoved_Final/c...0.000871
P5703471930105652[../../allConstraintsAnalysis_WRemoved_Final/c...0.029532
P201786770101977[../../allConstraintsAnalysis_WRemoved_Final/c...0.540284
P1435212163792401[../../allConstraintsAnalysis_WRemoved_Final/c...0.041734
P19223063664256[../../allConstraintsAnalysis_WRemoved_Final/c...0.677149
P47653795063425[../../allConstraintsAnalysis_WRemoved_Final/c...0.625647
P7084571857276[../../allConstraintsAnalysis_WRemoved_Final/c...0.556110
P19712201852917[../../allConstraintsAnalysis_WRemoved_Final/c...0.302495
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P734 2119055 738534 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2214 2989348 721476 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P433 31113458 436995 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P195 1150231 401686 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P569 6926852 267556 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P131 11274319 200519 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P275 7295 163856 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2860 174842113 152425 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P570 3471930 105652 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2017 86770 101977 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1435 2121637 92401 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1922 30636 64256 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P4765 37950 63425 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P708 45718 57276 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P197 122018 52917 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P734 0.258447 \n", "P2214 0.194425 \n", "P433 0.013851 \n", "P195 0.258832 \n", "P569 0.037189 \n", "P131 0.017475 \n", "P275 0.957377 \n", "P2860 0.000871 \n", "P570 0.029532 \n", "P2017 0.540284 \n", "P1435 0.041734 \n", "P1922 0.677149 \n", "P4765 0.625647 \n", "P708 0.556110 \n", "P197 0.302495 " ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF1.sort_values(by=['incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 81, "id": "developed-zimbabwe", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "count 534.000000\n", "mean 0.212037\n", "std 0.306183\n", "min 0.000000\n", "25% 0.001654\n", "50% 0.040424\n", "75% 0.329546\n", "max 1.000000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF1['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 82, "id": "unknown-johnston", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 1 - Violation Ratios')" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF1['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 1 - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 83, "id": "exceptional-dakota", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 1 - Violation Ratios <= 0.5')" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEICAYAAACEdClSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgjklEQVR4nO3deZwdVZn/8c8XEvYlYFqELDQqi6CoGBF3FJSwJcwICoICIhEB0YFhHRR+Kk5cUUdAIzAEdICIsgiiIhDRUcDAsAaQAIEkLGl2EAxGnt8f5zRULn27q5eq233zfb9e99VVp7bnVNWtp05VdV1FBGZmZnVYodUBmJnZ8sNJx8zMauOkY2ZmtXHSMTOz2jjpmJlZbZx0zMysNk46FZLUKSkkjWp1LCOdpL0l/bbVcQy1dqmXpOMknV5y3PmSth/gct4r6a6BTFs3SbdL2rbVcQw3tSQdSR+XNEfSs5IeknS5pPcMcF5nSXpB0jP5c5uk/5S09lDH3Y4krSXpu5IeyNvjntw/tsJlniXpq4OZR0T8NCI+XHJ5+0n640CXJWnPfGBUQ/koSYsl7TLQeTfqT736Q9JKki7I9YjBHPzKrI+I+FpEfHqwcfew7JD0+u7+iPhDRGxawXK6TxCfzZ/5ko7px/Sv2McjYouImD3UsVZJ0lsk3SDpufz3Lb2MO1vS3wvrrNTJQOVJR9LhwHeBrwHrAROBU4Gpg5jtNyJiTaAD2B/YBvhfSasPLtr2Jmkl4EpgC2AysBbwTuAxYOsWxjXcWoIXAWOA9zeUTwYC+HXZGSlp1RWFPwL7AA8Pcj4XMUTrYwQYExFrALsDX5T0oVYHVJak9QY5/UrAxcBPgHWAmcDFubyZQyNijfwpdzIQEZV9gLWBZ4E9ehlnZVJSejB/vgus3Mv4ZwFfbShbE3gor4Dusk8BdwBPAL8BNiwMC+Aw4F7gUeCbwAr9mPYg4G7gSeAUQHnYisC38jzvBQ7J448qrI8zcqyLgK8CK+Zh+5EOEt/Ky70P2LGw3HWB/87r6Angolx+G7BrYbzReflv7WHdfRp4BFijl/X7BmB2rtvtwJSGdX8KcBnwDHAd8Lo8TMDJwGLgaeBW4I3ANOAfwAt5X/hlHn8+cDRwC7AEGAUcA9yT5z0X+JfCsvcD/tjXdsjx/x34Z17ekwPcd2cAZzaUzQJOzt3bAH/Ky74Z2LYw3mzgJOB/geeB1+f47811uw/Yu0m93gX8BXgq/31Xw3y/kuf7DPBbYGyJuiwsxlfR+jgR+Elh2JS8/zyZ435DYdh8YPvcvTXw5zzeQ8APgJXysGvydv5b3pYfA7YFFg52f+2hfp0Uvqu57HrgyEL/z0gJ/Kkc2xa5vLd9vLueTY9zwFjg0lyHx4E/UDge9bFdXgMcSfq+nDbIbfxh0nFJhbIHgMlNxp8NfLrfyxlMkCUqMRlYWtyQPYzzZeBa4NWklsufgK/0Mv5ZNCSdXH42cH7ungrMyzvkKOB44E+FcQO4mnQgnwj8tXvllZz2UtKZ30Sgq3ujkA6CdwIT8ryvZtmkcyHwI2D1XN/rgc/kYfvlHfdAUvL6bN45uxPaZcD5pDOQ0cD7c/lR3fUuxH9rk3V3HjCzl3U7Otf9OGAl4IOkL+umhXXf3SoaBfwUOC8P2wG4Ia+X7oP/+s22GekLeVNeV6vmsj2ADUgt8I+RDjbrF9ZPY9Jpth2WGXeA++67ScmzO7a1SQnkLcC4vB52yrF+KPd3FL6MD5BalKPytE8X1uP6vHzAeinWvM88AXwiT7dX7n9VYb73AJsAq+b+6SXqMhRJp+n6yP0nkpNOju9veb2MJu2j83g5mczn5YPx20gJfBTpwH8H8IWG7fz6Qv+25KTDIPbXHurXybLf1W2A51j2xOdTpBPc7gRyU2/HpYZ6Nj3OAf8J/DDXZzTwXgoH/ibf038FfklKgOcA27HsifMtpCTW0+fUJvP9N+DyhrJLgSOajD+b9L17lHQiVGofqzrp7A083Mc49wA7Ffp3AOb3Mv4rNm4unw5ckbsvBw4oDFsh70AbFnbkyYXhBwNX9mPa9xSGzwKOyd1XAQcVhn24e0cmXVpcQv7S5uF7AVfn7v2AeYVhq+VpX0M6SL0IrNNDvTcgfdHWyv0XAEc1WXdX0MtBKu/sDzfsvOcCJxbW/emFYTsBd+buD5KS9zY0nKX1tM1IX8hP9bFv3ARMLayfxqTTbDssM+4g9t+7gY/n7gOBm3P30cA5DeP+Btg3d88GvlwYtjrpy/6R4vZvjJWUbK5vGP5nYL/CfI9v2G9/XaIeg046va2P3H8iLyedLwKzGr5Di7pjoHAw7mEZXwAubNjOzZLOgPfXHpbbmZf1JCmZBumqQ48Hf9LJTgBr97GPdyedpsc5UkK6uFjPXrbBV0hXE64hJ8HBbtfCvL9IQ1ImJeoTm4z/Dl5OwvuSjkM9tiSLn6qvNT8GjO3jmv0GwP2F/vtzWfcTMd03qX7Yx7LGkZqmABsC35P0pKQnc7nyON0W9LTMktMWr5E/B6xRqEvjfLttSDpDeagw7x+RznxeMd+IeC53rkFqDTweEU80VjoiHiSdZXxE0hhgR9KO0pPHSAmsmQ2ABRHxYkMd+qx7RFxFujRyCrBY0gxJa/WyLFh2XSHpk5JuKqyfN5IuPTTTbDv0Kj8B1b1f3d7LqGcDn8zdn8j9kLblHt1x5ljfw7Lr9qW6RcTfSC23g0jb/zJJm/WwvMbvApRc/4MxBOuj0TL1yPvTApatR/eyN5F0qaSHJT1Nuvdb9qGWAe+vvRibxzmClOBG5zhXlDQ9P3jzNCmhdI9fNtYej3Oky/vzgN9KurePBxg2zTHdBNwSEc+UXH4Zz5Lu8xatRUomrxAR10XEMxGxJCJmko5DO/W1kKqTzp9JZ/e79TLOg6QvcbeJuYxIT8R036Q6qNkMJK0BbE+6FgppB/9MRIwpfFaNiD8VJpvQ0zJLTtvMQz3Mt9sC0roYW5jvWhGxRYn5LgDWzUmlJzNJN4z3AP4cEYuajPc7YIdeHrh4EJjQcON7IukstU8R8f2IeBuwOekSy5Hdg5pN0t0haUPgx8ChpMtJY0j3q9TzpL2H0kecfyjsV72t/3OA7SS9k9SC607mC0gtneI+snpETG8WQ0T8JiI+REpMd5Lq2qjxuwD9WP8DNQTro9Ey9chPvU2g53qcRlofG0fEWqRLZWW3+aD212Yi4p8R8R3SvcGDc/HHSZeutyddWuzM5d2x9rrP0ftx7pmIOCIiXku6F3a4pO2axPZR0iXeR4HzlR7LPlrSMgk9lz/b5NPsBP52YMuGpxS3zOVlBCW2XaVJJyKeAr4EnCJpN0mrSRotaUdJ38ijnQscL6lD6bHdL5GenuiTpJUlvY30dM0TpBvtkK6PHitpizze2pL2aJj8SEnrSJoAfJ50v6TstM3MAg6TNF7SOqQb493r4iHSjd9vKz22vIKk10l6f18zzdNeDpyaYx4t6X2FUS4Ctsr1aHb2CemgsQD4uaTNcgyvyi3KnUg3Wp8DjsrL2BbYlXQvqFeS3i7pHZJGk67n/510SRDSwwuv7WMWq5N22q48v/1JLZ2BeAQY38dTN32KiPmkhzvOJV267T5r/gmwq6Qd8hnwKpK2lTS+p/lIWk/S1Jzsl5DOKF/sYdRfAZso/YvBKEkfIyXwSwcSf/5+rJJ7V8pxDiSJA72uj0azgJ0lbZf3hyNI9e7pxG1N0r2iZ3Pr77MNw3vbdwa8v5Y0Pc97lRznEtLVgtVILbKycUIvxzlJu0h6fd42T5Eegulp/wAgIu6PiC+THlA5GNgMmCvpxMI4WxROJBo/zU7gZ+dlH5b3nUNz+VWNI0oak/f/VfK+ujfwPko8yVj5o5wR8W3gcNIN+S7SQe9Q0oES0hNcc0g3vm4FbsxlvTlK0jOkHeBs0g3sd+XLGETEhcDXgfNyU/g20mWnoovzdDeRbtKf0Y9pm/kx6dr+zbkev2gY/knSDc+5pCR5Ab1f7ir6BOlBgztJ13S/0D0gIp4Hfg5s1MMyKYy3hHSmdifp/s7TpIcZxgLXRcQLpC/tjqQzqVOBT0bEnSXiW4tU/ydIlw4eI102gLRuN8+Xoi5qEttc4Nuk1vEjwJtIzfWBuIp0dvawpEcHOI9uM0lnqC8l84hYQDrrPY6X9+kjaf59WoH0HXiQdLn2/bzy4EpEPAbsQjpIP0a6Ab9LRAy0DneR7k+MI+2Xz/PKllR/vWJ9NIqIu0gt7/8i7Ue7kp6wfKGH0f+d1Ip4hrT/nN8w/ERgZt53PtqwnMHsr2VcRtqfDyTV935SK2ou6aGAor728d6OcxuTrkI8S9r/T42Iq/sKLpLfR8T+pEt1PS23tLw+dyMdp54k3TParXu75ZPTy/Poo3P83Q8SfC6P+9e+ltP9ZNRyRVKQmvPzWh3LUJH0JWCTiNin1bGYmTUz3P4pzwZA0rrAAaTWkJnZsOV3r41wkg4kXd65PCKuaXU8Zma9WS4vr5mZWWu4pWNmZrUZ0fd0xo4dG52dna0Ow8xsRLnhhhsejYiOVix7RCedzs5O5syZ0+owzMxGFEmNb76ojS+vmZlZbZx0zMysNk46ZmZWGycdMzOrjZOOmZnVxknHzMxq46RjZma1cdIxM7PaOOmYmVltRvQbCQaj85jLXuqeP33nFkZiZrb8cEvHzMxq46RjZma1cdIxM7PaOOmYmVltnHTMzKw2TjpmZlYbJx0zM6uNk46ZmdXGScfMzGpTWdKRdKakxZJuayj/nKQ7Jd0u6RuF8mMlzZN0l6QdqorLzMxap8rX4JwF/AA4u7tA0geAqcCbI2KJpFfn8s2BPYEtgA2A30naJCL+WWF8ZmZWs8paOhFxDfB4Q/FngekRsSSPsziXTwXOi4glEXEfMA/YuqrYzMysNeq+p7MJ8F5J10n6vaS35/JxwILCeAtz2StImiZpjqQ5XV1dFYdrZmZDqe6kMwpYF9gGOBKYJUn9mUFEzIiISRExqaOjo4oYzcysInUnnYXALyK5HngRGAssAiYUxhufy8zMrI3UnXQuAj4AIGkTYCXgUeASYE9JK0vaCNgYuL7m2MzMrGKVPb0m6VxgW2CspIXACcCZwJn5MeoXgH0jIoDbJc0C5gJLgUP85JqZWfupLOlExF5NBu3TZPyTgJOqisfMzFrPbyQwM7PaOOmYmVltnHTMzKw2TjpmZlYbJx0zM6uNk46ZmdXGScfMzGrjpGNmZrVx0jEzs9o46ZiZWW2cdMzMrDZOOmZmVhsnHTMzq42TjpmZ1cZJx8zMalNZ0pF0pqTF+QfbGocdISkkjc39kvR9SfMk3SJpq6riMjOz1qmypXMWMLmxUNIE4MPAA4XiHUk/Ub0xMA04rcK4zMysRSpLOhFxDfB4D4NOBo4ColA2FTg7kmuBMZLWryo2MzNrjVrv6UiaCiyKiJsbBo0DFhT6F+aynuYxTdIcSXO6uroqitTMzKpQW9KRtBpwHPClwcwnImZExKSImNTR0TE0wZmZWS1G1bis1wEbATdLAhgP3Chpa2ARMKEw7vhcZmZmbaS2lk5E3BoRr46IzojoJF1C2yoiHgYuAT6Zn2LbBngqIh6qKzYzM6tHlY9Mnwv8GdhU0kJJB/Qy+q+Ae4F5wI+Bg6uKy8zMWqeyy2sRsVcfwzsL3QEcUlUsZmY2PPiNBGZmVhsnHTMzq42TjpmZ1cZJx8zMauOkY2ZmtXHSMTOz2jjpmJlZbZx0zMysNk46ZmZWGycdMzOrjZOOmZnVxknHzMxq46RjZma1cdIxM7PaOOmYmVltqvwRtzMlLZZ0W6Hsm5LulHSLpAsljSkMO1bSPEl3SdqhqrjMzKx1qmzpnAVMbii7AnhjRGwJ/BU4FkDS5sCewBZ5mlMlrVhhbGZm1gKVJZ2IuAZ4vKHstxGxNPdeC4zP3VOB8yJiSUTcR/rZ6q2ris3MzFqjlfd0PgVcnrvHAQsKwxbmsleQNE3SHElzurq6Kg7RzMyGUkuSjqT/AJYCP+3vtBExIyImRcSkjo6OoQ/OzMwqM6ruBUraD9gF2C4iIhcvAiYURhufy8zMrI3U2tKRNBk4CpgSEc8VBl0C7ClpZUkbARsD19cZm5mZVa+ylo6kc4FtgbGSFgInkJ5WWxm4QhLAtRFxUETcLmkWMJd02e2QiPhnVbGZmVlrVJZ0ImKvHorP6GX8k4CTqorHzMxaz28kMDOz2jjpmJlZbZx0zMysNk46ZmZWGycdMzOrjZOOmZnVxknHzMxq46RjZma1KZV0JL2p6kDMzKz9lW3pnCrpekkHS1q70ojMzKxtlUo6EfFeYG/Sm6BvkPQ/kj5UaWRmZtZ2St/TiYi7geOBo4H3A9+XdKekf60qODMzay9l7+lsKelk4A7gg8CuEfGG3H1yhfGZmVkbKfuW6f8CTgeOi4jnuwsj4kFJx1cSmZmZtZ2ySWdn4Pnu37iRtAKwSkQ8FxHnVBadmZm1lbL3dH4HrFroXy2XmZmZlVY26awSEc929+Tu1XqbQNKZkhZLuq1Qtq6kKyTdnf+uk8sl6fuS5km6RdJWA6mMmZkNb2WTzt+KiUDS24Dnexkf4CxgckPZMcCVEbExcGXuB9gR2Dh/pgGnlYzLzMxGkLL3dL4A/EzSg4CA1wAf622CiLhGUmdD8VRg29w9E5hNegR7KnB2RARwraQxktaPiIdKxmdmZiNAqaQTEX+RtBmwaS66KyL+MYDlrVdIJA8D6+XuccCCwngLc9krko6kaaTWEBMnThxACGZm1iplWzoAbwc68zRbSSIizh7ogiMiJMUAppsBzACYNGlSv6c3M7PWKZV0JJ0DvA64CfhnLg6gv0nnke7LZpLWBxbn8kWkV+x0G5/LzMysjZRt6UwCNs/3XAbjEmBfYHr+e3Gh/FBJ5wHvAJ7y/Rwzs/ZTNuncRnp4oHQikHQu6aGBsZIWAieQks0sSQcA9wMfzaP/CtgJmAc8B+xfdjlmZjZylE06Y4G5kq4HlnQXRsSUZhNExF5NBm3Xw7gBHFIyFjMzG6HKJp0TqwzCzMyWD2Ufmf69pA2BjSPid5JWA1asNjQzM2s3ZX/a4EDgAuBHuWgccFFFMZmZWZsq+xqcQ4B3A0/DSz/o9uqqgjIzs/ZUNuksiYgXunskjSL9n46ZmVlpZZPO7yUdB6wq6UPAz4BfVheWmZm1o7JJ5xigC7gV+Azp/2r8i6FmZtYvZZ9eexH4cf6YmZkNSNl3r91HD/dwIuK1Qx6RmZm1rf68e63bKsAewLpDH46ZmbWzUvd0IuKxwmdRRHwX2Lna0MzMrN2Uvby2VaF3BVLLpz+/xWNmZlY6cXy70L0UmM/Lb4g2MzMrpezTax+oOhAzM2t/ZS+vHd7b8Ij4ztCEY2Zm7azsP4dOAj5LetHnOOAgYCtgzfzpF0n/Jul2SbdJOlfSKpI2knSdpHmSzpe0Un/na2Zmw1vZezrjga0i4hkASScCl0XEPv1doKRxwGGkn79+XtIsYE/SL4eeHBHnSfohcABwWn/nb2Zmw1fZls56wAuF/hdy2UCNIr3HbRSwGulnsD9I+vkEgJnAboOYv5mZDUNlWzpnA9dLujD370ZKDP0WEYskfQt4AHge+C1wA/BkRCzNoy0kXcZ7BUnTgGkAEydOHEgIZmbWImX/OfQkYH/gifzZPyK+NpAFSloHmApsBGwArA5MLjt9RMyIiEkRMamjo2MgIZiZWYuUvbwG6TLY0xHxPWChpI0GuMztgfsioisi/gH8gvQDcWPy5TZI95AWDXD+ZmY2TJX9ueoTgKOBY3PRaOAnA1zmA8A2klaTJGA7YC5wNbB7Hmdf4OIBzt/MzIapsi2dfwGmAH8DiIgHGcCj0nna60gPDNxI+n2eFYAZpKR2uKR5wKuAMwYyfzMzG77KPkjwQkSEpACQtPpgFhoRJwAnNBTfC2w9mPmamdnwVralM0vSj0j3XQ4Efod/0M3MzPqpz5ZOvu9yPrAZ8DSwKfCliLii4tjMzKzN9Jl08mW1X0XEmwAnGjMzG7Cyl9dulPT2SiMxM7O2V/ZBgncA+0iaT3qCTaRG0JZVBWZmZu2n16QjaWJEPADsUFM8ZmbWxvpq6VxEerv0/ZJ+HhEfqSEmMzNrU33d01Gh+7VVBmJmZu2vr6QTTbrNzMz6ra/La2+W9DSpxbNq7oaXHyRYq9LozMysrfSadCJixboCMTOz9tefnzYwMzMbFCcdMzOrjZOOmZnVxknHzMxq05KkI2mMpAsk3SnpDknvlLSupCsk3Z3/rtOK2MzMrDqtaul8D/h1RGwGvBm4AzgGuDIiNgauzP1mZtZGak86ktYG3kf+OeqIeCEingSmAjPzaDOB3eqOzczMqtWKls5GQBfw35L+T9Lp+eev14uIh/I4DwPr9TSxpGmS5kia09XVVVPIZmY2FFqRdEYBWwGnRcRbST+VsMyltIgImrx2JyJmRMSkiJjU0dFRebBmZjZ0WpF0FgILI+K63H8BKQk9Iml9gPx3cQtiMzOzCtWedCLiYWCBpE1z0XbAXOASYN9cti9wcd2xmZlZtcr+cuhQ+xzwU0krAfcC+5MS4CxJBwD3Ax9tUWxmZlaRliSdiLgJmNTDoO1qDsXMzGrkNxKYmVltnHTMzKw2TjpmZlYbJx0zM6uNk46ZmdXGScfMzGrjpGNmZrVx0jEzs9o46ZiZWW2cdMzMrDZOOmZmVhsnHTMzq42TjpmZ1cZJx8zMauOkY2ZmtWlZ0pG0oqT/k3Rp7t9I0nWS5kk6P//Am5mZtZFWtnQ+D9xR6P86cHJEvB54AjigJVGZmVllWpJ0JI0HdgZOz/0CPghckEeZCezWitjMzKw6rWrpfBc4Cngx978KeDIilub+hcC4niaUNE3SHElzurq6Kg/UzMyGTu1JR9IuwOKIuGEg00fEjIiYFBGTOjo6hjg6MzOr0qgWLPPdwBRJOwGrAGsB3wPGSBqVWzvjgUUtiM3MzCpUe0snIo6NiPER0QnsCVwVEXsDVwO759H2BS6uOzYzM6vWcPo/naOBwyXNI93jOaPF8ZiZ2RBrxeW1l0TEbGB27r4X2LqV8ZiZWbWGU0vHzMzanJOOmZnVxknHzMxq46RjZma1cdIxM7PaOOmYmVltnHTMzKw2TjpmZlYbJx0zM6uNk46ZmdXGScfMzGrjpGNmZrVx0jEzs9o46ZiZWW2cdMzMrDa1Jx1JEyRdLWmupNslfT6XryvpCkl357/r1B2bmZlVqxU/4rYUOCIibpS0JnCDpCuA/YArI2K6pGOAY0i/JtpSncdc9lL3/Ok7tzASM7ORr/akExEPAQ/l7mck3QGMA6YC2+bRZpJ+UbSWpFNMLODkYmZWlZbe05HUCbwVuA5YLyckgIeB9VoVl5mZVaNlSUfSGsDPgS9ExNPFYRERQDSZbpqkOZLmdHV11RCpmZkNlZYkHUmjSQnnpxHxi1z8iKT18/D1gcU9TRsRMyJiUkRM6ujoqCdgMzMbEq14ek3AGcAdEfGdwqBLgH1z977AxXXHZmZm1WrF02vvBj4B3Crpplx2HDAdmCXpAOB+4KMtiM3MzCrUiqfX/gioyeDt6ozFzMzq5TcSmJlZbZx0zMysNk46ZmZWm1Y8SLDc8Ct0zMyW5aTTD04iZmaD46TTg8Z3sfU1jhOQmVk5vqdjZma1cUtniJVpJZmZLa/c0jEzs9q4pTME3LoxMyvHLR0zM6uNk46ZmdXGl9dawI9bmw0tf6dGDiedmlR932e4fOn6G8dwidvM6uGk02LNklGzA/BgDtL9XVbd2iEBNatDO9TNbCg46QxTZQ5SQ9V6GuwBcTi8wWE4trD6u32GQ2IaDjFYc+2wfYZd0pE0GfgesCJwekRMb3FILTeY5DKYA1+jkbiT9zd5V5V0B7O8wZyAVL3Nqlp3zVqJzcbp77JG0iXodjOsnl6TtCJwCrAjsDmwl6TNWxuVmZkNleHW0tkamBcR9wJIOg+YCsxtaVQjTFUPLQxlq6nKaauYZ91np81ibdVZ8kBaW4O5LDyYcYaqJdnfVliZaYcyjpFKEdHqGF4iaXdgckR8Ovd/AnhHRBxaGGcaMC33bgrcNcDFjQUeHUS4I5HrvHxwnZcPg6nzhhHRMZTBlDXcWjp9iogZwIzBzkfSnIiYNAQhjRiu8/LBdV4+jNQ6D6t7OsAiYEKhf3wuMzOzNjDcks5fgI0lbSRpJWBP4JIWx2RmZkNkWF1ei4ilkg4FfkN6ZPrMiLi9osUN+hLdCOQ6Lx9c5+XDiKzzsHqQwMzM2ttwu7xmZmZtzEnHzMxq0/ZJR9JkSXdJmifpmB6Gryzp/Dz8OkmdLQhzSJWo8/sk3Shpaf7fqBGvRJ0PlzRX0i2SrpS0YSviHEol6nyQpFsl3STpj+3wdo++6lwY7yOSQtKIe6S4qMQ23k9SV97GN0n6dCvi7JeIaNsP6WGEe4DXAisBNwObN4xzMPDD3L0ncH6r466hzp3AlsDZwO6tjrmmOn8AWC13f3Y52c5rFbqnAL9uddxV1zmPtyZwDXAtMKnVcVe8jfcDftDqWPvzafeWzkuv1YmIF4Du1+oUTQVm5u4LgO0kqcYYh1qfdY6I+RFxC/BiKwKsQJk6Xx0Rz+Xea0n/AzaSlanz04Xe1YGR/tRQme8zwFeArwN/rzO4CpSt74jS7klnHLCg0L8wl/U4TkQsBZ4CXlVLdNUoU+d20986HwBcXmlE1StVZ0mHSLoH+AZwWE2xVaXPOkvaCpgQEe3wwrKy+/VH8mXjCyRN6GH4sNLuScdsGZL2ASYB32x1LHWIiFMi4nXA0cDxrY6nSpJWAL4DHNHqWGr0S6AzIrYEruDlqzbDVrsnnTKv1XlpHEmjgLWBx2qJrhrL46uEStVZ0vbAfwBTImJJTbFVpb/b+TxgtyoDqkFfdV4TeCMwW9J8YBvgkhH8MEGf2zgiHivsy6cDb6sptgFr96RT5rU6lwD75u7dgasi36EboZbHVwn1WWdJbwV+REo4i1sQ41ArU+eNC707A3fXGF8Veq1zRDwVEWMjojMiOkn37qZExJzWhDtoZbbx+oXeKcAdNcY3IMPqNThDLZq8VkfSl4E5EXEJcAZwjqR5wOOkDTtilamzpLcDFwLrALtK+n8RsUULwx6Uktv5m8AawM/ycyIPRMSUlgU9SCXrfGhu3f0DeIKXT65GpJJ1bhsl63uYpCnAUtLxa7+WBVySX4NjZma1affLa2ZmNow46ZiZWW2cdMzMrDZOOmZmVhsnHTMzq42TjpmZ1cZJx8zMavP/AcHZ3lVrpuYCAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF1[codepConstDF1['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 1 - Violation Ratios <= 0.5\")" ] }, { "cell_type": "code", "execution_count": 84, "id": "interior-joseph", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of properties whose violation ratio is greater than mean: 0/534\n" ] } ], "source": [ "print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF1['violation_ratio'] >= 3.539484)}/{len(codepConstDF1)}\")" ] }, { "cell_type": "code", "execution_count": 85, "id": "english-difference", "metadata": {}, "outputs": [], "source": [ "codepConstDF1.to_csv('../../allConstraintsAnalysis_WRemoved_Final/codepConstDFAnalysis.csv')" ] }, { "cell_type": "markdown", "id": "greater-genetics", "metadata": {}, "source": [ "#### Version 2 - Mand Normal" ] }, { "cell_type": "code", "execution_count": 86, "id": "constant-chance", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "codepConstDF2 = pd.DataFrame(codepConstViolations['Mand_Normal']).T" ] }, { "cell_type": "code", "execution_count": 87, "id": "included-adjustment", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpaths
P101818616[../../allConstraintsAnalysis_WRemoved_Final/c...
P153383289693[../../allConstraintsAnalysis_WRemoved_Final/c...
P2009103617[../../allConstraintsAnalysis_WRemoved_Final/c...
P240258019[../../allConstraintsAnalysis_WRemoved_Final/c...
P38163110[../../allConstraintsAnalysis_WRemoved_Final/c...
............
P364870[../../allConstraintsAnalysis_WRemoved_Final/c...
P3701721[../../allConstraintsAnalysis_WRemoved_Final/c...
P37133591[../../allConstraintsAnalysis_WRemoved_Final/c...
P37443771[../../allConstraintsAnalysis_WRemoved_Final/c...
P38156001[../../allConstraintsAnalysis_WRemoved_Final/c...
\n", "

475 rows × 3 columns

\n", "
" ], "text/plain": [ " correct incorrect paths\n", "P1018 186 16 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P1533 8328 9693 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P2009 1036 17 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P240 25801 9 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P3816 31 10 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "... ... ... ...\n", "P3648 7 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P3701 72 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P3713 359 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P3744 377 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P3815 600 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "\n", "[475 rows x 3 columns]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF2" ] }, { "cell_type": "code", "execution_count": 88, "id": "fundamental-knowing", "metadata": {}, "outputs": [], "source": [ "codepConstDF2['violation_ratio'] = codepConstDF2.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)" ] }, { "cell_type": "code", "execution_count": 89, "id": "harmful-discipline", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P2308051[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P291602[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P5448023[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P5447024[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P230401[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P230702[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P2309055[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P468002[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231004[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P284201[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231104[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231205[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P231304[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P826401[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
P756909[../../allConstraintsAnalysis_WRemoved_Final/c...1.0
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2308 0 51 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2916 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P5448 0 23 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P5447 0 24 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2304 0 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2307 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2309 0 55 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P4680 0 2 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2310 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2842 0 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2311 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2312 0 5 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2313 0 4 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P8264 0 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P7569 0 9 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P2308 1.0 \n", "P2916 1.0 \n", "P5448 1.0 \n", "P5447 1.0 \n", "P2304 1.0 \n", "P2307 1.0 \n", "P2309 1.0 \n", "P4680 1.0 \n", "P2310 1.0 \n", "P2842 1.0 \n", "P2311 1.0 \n", "P2312 1.0 \n", "P2313 1.0 \n", "P8264 1.0 \n", "P7569 1.0 " ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 90, "id": "unlikely-chamber", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P22142989348721476[../../allConstraintsAnalysis_WRemoved_Final/c...0.194425
P43331113458436995[../../allConstraintsAnalysis_WRemoved_Final/c...0.013851
P2757295163856[../../allConstraintsAnalysis_WRemoved_Final/c...0.957377
P2860174842113152425[../../allConstraintsAnalysis_WRemoved_Final/c...0.000871
P1435212163792401[../../allConstraintsAnalysis_WRemoved_Final/c...0.041734
P7084571857276[../../allConstraintsAnalysis_WRemoved_Final/c...0.556110
P19712201852917[../../allConstraintsAnalysis_WRemoved_Final/c...0.302495
P15984060049329[../../allConstraintsAnalysis_WRemoved_Final/c...0.548533
P1111146803[../../allConstraintsAnalysis_WRemoved_Final/c...0.999979
P856145194944006[../../allConstraintsAnalysis_WRemoved_Final/c...0.029417
P2248402541608[../../allConstraintsAnalysis_WRemoved_Final/c...0.911796
P2325407940619[../../allConstraintsAnalysis_WRemoved_Final/c...0.908743
P2243403536870[../../allConstraintsAnalysis_WRemoved_Final/c...0.901357
P2244403636801[../../allConstraintsAnalysis_WRemoved_Final/c...0.901168
P41338914535536[../../allConstraintsAnalysis_WRemoved_Final/c...0.083677
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2214 2989348 721476 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P433 31113458 436995 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P275 7295 163856 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2860 174842113 152425 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1435 2121637 92401 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P708 45718 57276 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P197 122018 52917 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1598 40600 49329 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1111 1 46803 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P856 1451949 44006 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2248 4025 41608 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2325 4079 40619 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2243 4035 36870 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2244 4036 36801 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P413 389145 35536 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P2214 0.194425 \n", "P433 0.013851 \n", "P275 0.957377 \n", "P2860 0.000871 \n", "P1435 0.041734 \n", "P708 0.556110 \n", "P197 0.302495 \n", "P1598 0.548533 \n", "P1111 0.999979 \n", "P856 0.029417 \n", "P2248 0.911796 \n", "P2325 0.908743 \n", "P2243 0.901357 \n", "P2244 0.901168 \n", "P413 0.083677 " ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF2.sort_values(by=['incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 91, "id": "violent-match", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "count 475.000000\n", "mean 0.177493\n", "std 0.289214\n", "min 0.000000\n", "25% 0.000966\n", "50% 0.023847\n", "75% 0.214528\n", "max 1.000000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF2['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 92, "id": "educational-thickness", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 2 - Violation Ratios')" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF2['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 2 - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 93, "id": "latin-mitchell", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 2 - Violation Ratios <= 0.5')" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF2[codepConstDF2['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 2 - Violation Ratios <= 0.5\")" ] }, { "cell_type": "code", "execution_count": 94, "id": "asian-forwarding", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of properties whose violation ratio is greater than mean: 0/475\n" ] } ], "source": [ "print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF2['violation_ratio'] >= 2.290915)}/{len(codepConstDF2)}\")" ] }, { "cell_type": "markdown", "id": "destroyed-flash", "metadata": {}, "source": [ "#### Version 3 - Mand" ] }, { "cell_type": "code", "execution_count": 95, "id": "consecutive-plenty", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "codepConstDF3 = pd.DataFrame(codepConstViolations['Mand']).T" ] }, { "cell_type": "code", "execution_count": 96, "id": "digital-mileage", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpaths
P564188875[../../allConstraintsAnalysis_WRemoved_Final/c...
P1081126930[../../allConstraintsAnalysis_WRemoved_Final/c...
P598213280[../../allConstraintsAnalysis_WRemoved_Final/c...
P108737746351210[../../allConstraintsAnalysis_WRemoved_Final/c...
P613706085[../../allConstraintsAnalysis_WRemoved_Final/c...
............
P510520600[../../allConstraintsAnalysis_WRemoved_Final/c...
P5172480[../../allConstraintsAnalysis_WRemoved_Final/c...
P52117570[../../allConstraintsAnalysis_WRemoved_Final/c...
P555173952[../../allConstraintsAnalysis_WRemoved_Final/c...
P562314740[../../allConstraintsAnalysis_WRemoved_Final/c...
\n", "

79 rows × 3 columns

\n", "
" ], "text/plain": [ " correct incorrect paths\n", "P564 18887 5 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P1081 12693 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P5982 1328 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P1087 3774635 1210 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P613 70608 5 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "... ... ... ...\n", "P5105 2060 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P517 248 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P521 1757 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P555 17395 2 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P5623 1474 0 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "\n", "[79 rows x 3 columns]" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF3" ] }, { "cell_type": "code", "execution_count": 97, "id": "formed-battle", "metadata": {}, "outputs": [], "source": [ "codepConstDF3['violation_ratio'] = codepConstDF3.apply(lambda p: p.incorrect / p.correct if p.correct != 0 else p.incorrect/100, axis=1)" ] }, { "cell_type": "code", "execution_count": 98, "id": "numerous-construction", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P5051279[../../allConstraintsAnalysis_WRemoved_Final/c...39.500000
P434181[../../allConstraintsAnalysis_WRemoved_Final/c...0.125000
P2095383[../../allConstraintsAnalysis_WRemoved_Final/c...0.078947
P990108944[../../allConstraintsAnalysis_WRemoved_Final/c...0.040404
P3931231668[../../allConstraintsAnalysis_WRemoved_Final/c...0.029361
P2461745[../../allConstraintsAnalysis_WRemoved_Final/c...0.028736
P1713293579[../../allConstraintsAnalysis_WRemoved_Final/c...0.026917
P1411312323270[../../allConstraintsAnalysis_WRemoved_Final/c...0.024918
P17313828[../../allConstraintsAnalysis_WRemoved_Final/c...0.020942
P2009103617[../../allConstraintsAnalysis_WRemoved_Final/c...0.016409
P826401[../../allConstraintsAnalysis_WRemoved_Final/c...0.010000
P284201[../../allConstraintsAnalysis_WRemoved_Final/c...0.010000
P1560345933[../../allConstraintsAnalysis_WRemoved_Final/c...0.009540
P16359228[../../allConstraintsAnalysis_WRemoved_Final/c...0.008677
P9448517[../../allConstraintsAnalysis_WRemoved_Final/c...0.008226
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P5051 2 79 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P4341 8 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2095 38 3 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P990 1089 44 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P3931 2316 68 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P246 174 5 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1713 2935 79 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P141 131232 3270 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1731 382 8 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2009 1036 17 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P8264 0 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2842 0 1 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1560 3459 33 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1635 922 8 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P944 851 7 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P5051 39.500000 \n", "P4341 0.125000 \n", "P2095 0.078947 \n", "P990 0.040404 \n", "P3931 0.029361 \n", "P246 0.028736 \n", "P1713 0.026917 \n", "P141 0.024918 \n", "P1731 0.020942 \n", "P2009 0.016409 \n", "P8264 0.010000 \n", "P2842 0.010000 \n", "P1560 0.009540 \n", "P1635 0.008677 \n", "P944 0.008226 " ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 102, "id": "imposed-bibliography", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P1411312323270[../../allConstraintsAnalysis_WRemoved_Final/c...0.024918
P108737746351210[../../allConstraintsAnalysis_WRemoved_Final/c...0.000321
P7959657006322[../../allConstraintsAnalysis_WRemoved_Final/c...0.000490
P5051279[../../allConstraintsAnalysis_WRemoved_Final/c...39.500000
P1713293579[../../allConstraintsAnalysis_WRemoved_Final/c...0.026917
P3931231668[../../allConstraintsAnalysis_WRemoved_Final/c...0.029361
P4511216750[../../allConstraintsAnalysis_WRemoved_Final/c...0.004109
P9152896647[../../allConstraintsAnalysis_WRemoved_Final/c...0.001623
P19717488844[../../allConstraintsAnalysis_WRemoved_Final/c...0.000252
P990108944[../../allConstraintsAnalysis_WRemoved_Final/c...0.040404
P1560345933[../../allConstraintsAnalysis_WRemoved_Final/c...0.009540
P29622922025[../../allConstraintsAnalysis_WRemoved_Final/c...0.000856
P2009103617[../../allConstraintsAnalysis_WRemoved_Final/c...0.016409
P2364970517[../../allConstraintsAnalysis_WRemoved_Final/c...0.001752
P2365185110[../../allConstraintsAnalysis_WRemoved_Final/c...0.005402
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P141 131232 3270 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1087 3774635 1210 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P7959 657006 322 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P5051 2 79 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1713 2935 79 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P3931 2316 68 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P451 12167 50 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P915 28966 47 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P197 174888 44 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P990 1089 44 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1560 3459 33 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2962 29220 25 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2009 1036 17 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2364 9705 17 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2365 1851 10 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P141 0.024918 \n", "P1087 0.000321 \n", "P7959 0.000490 \n", "P5051 39.500000 \n", "P1713 0.026917 \n", "P3931 0.029361 \n", "P451 0.004109 \n", "P915 0.001623 \n", "P197 0.000252 \n", "P990 0.040404 \n", "P1560 0.009540 \n", "P2962 0.000856 \n", "P2009 0.016409 \n", "P2364 0.001752 \n", "P2365 0.005402 " ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF3.sort_values(by=['incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 103, "id": "emotional-crown", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "count 79.000000\n", "mean 0.506010\n", "std 4.443448\n", "min 0.000000\n", "25% 0.000000\n", "50% 0.000260\n", "75% 0.002110\n", "max 39.500000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF3['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 104, "id": "certain-freeze", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 3 - Violation Ratios')" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF3['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 3 - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 105, "id": "cooperative-ownership", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 3 - Violation Ratios <= 0.0005')" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF3[codepConstDF3['violation_ratio'] <= 0.0005].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 3 - Violation Ratios <= 0.0005\")" ] }, { "cell_type": "code", "execution_count": 106, "id": "studied-inclusion", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of properties whose violation ratio is greater than mean: 1/79\n" ] } ], "source": [ "print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF3['violation_ratio'] >= 0.922928)}/{len(codepConstDF3)}\")" ] }, { "cell_type": "markdown", "id": "protective-brazil", "metadata": {}, "source": [ "#### Version 4 - Normal" ] }, { "cell_type": "code", "execution_count": 107, "id": "laughing-pressing", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "codepConstDF4 = pd.DataFrame(codepConstViolations['Normal']).T" ] }, { "cell_type": "code", "execution_count": 108, "id": "loving-swift", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpaths
P101818616[../../allConstraintsAnalysis_WRemoved_Final/c...
P1539243577551[../../allConstraintsAnalysis_WRemoved_Final/c...
P2091631[../../allConstraintsAnalysis_WRemoved_Final/c...
P574552492[../../allConstraintsAnalysis_WRemoved_Final/c...
P746941325[../../allConstraintsAnalysis_WRemoved_Final/c...
............
P410138058813[../../allConstraintsAnalysis_WRemoved_Final/c...
P41176295541[../../allConstraintsAnalysis_WRemoved_Final/c...
P41338914535536[../../allConstraintsAnalysis_WRemoved_Final/c...
P4189611[../../allConstraintsAnalysis_WRemoved_Final/c...
P42134265514[../../allConstraintsAnalysis_WRemoved_Final/c...
\n", "

424 rows × 3 columns

\n", "
" ], "text/plain": [ " correct incorrect paths\n", "P1018 186 16 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P1539 243577 551 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P209 163 1 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P574 5524 92 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P746 941 325 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "... ... ... ...\n", "P410 138058 813 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P411 7629 5541 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P413 389145 35536 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P418 96 11 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "P4213 42655 14 [../../allConstraintsAnalysis_WRemoved_Final/c...\n", "\n", "[424 rows x 3 columns]" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF4" ] }, { "cell_type": "code", "execution_count": 109, "id": "north-christian", "metadata": {}, "outputs": [], "source": [ "codepConstDF4['violation_ratio'] = codepConstDF4.apply(lambda p: p.incorrect / p.correct if p.correct != 0 else p.incorrect/100, axis=1)" ] }, { "cell_type": "code", "execution_count": 110, "id": "closing-causing", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P1111146803[../../allConstraintsAnalysis_WRemoved_Final/c...46803.000000
P19958911360[../../allConstraintsAnalysis_WRemoved_Final/c...127.640449
P450142522684[../../allConstraintsAnalysis_WRemoved_Final/c...53.374118
P76829715346[../../allConstraintsAnalysis_WRemoved_Final/c...51.670034
P2757295163856[../../allConstraintsAnalysis_WRemoved_Final/c...22.461412
P2306115[../../allConstraintsAnalysis_WRemoved_Final/c...15.000000
P39123123775[../../allConstraintsAnalysis_WRemoved_Final/c...12.099359
P2248402541608[../../allConstraintsAnalysis_WRemoved_Final/c...10.337391
P2303440[../../allConstraintsAnalysis_WRemoved_Final/c...10.000000
P2325407940619[../../allConstraintsAnalysis_WRemoved_Final/c...9.958078
P272015140[../../allConstraintsAnalysis_WRemoved_Final/c...9.333333
P2243403536870[../../allConstraintsAnalysis_WRemoved_Final/c...9.137546
P2244403636801[../../allConstraintsAnalysis_WRemoved_Final/c...9.118186
P34485794620[../../allConstraintsAnalysis_WRemoved_Final/c...7.979275
P11836835394[../../allConstraintsAnalysis_WRemoved_Final/c...7.897511
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P1111 1 46803 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1995 89 11360 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P4501 425 22684 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P768 297 15346 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P275 7295 163856 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2306 1 15 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P3912 312 3775 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2248 4025 41608 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2303 4 40 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2325 4079 40619 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2720 15 140 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2243 4035 36870 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2244 4036 36801 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P3448 579 4620 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1183 683 5394 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P1111 46803.000000 \n", "P1995 127.640449 \n", "P4501 53.374118 \n", "P768 51.670034 \n", "P275 22.461412 \n", "P2306 15.000000 \n", "P3912 12.099359 \n", "P2248 10.337391 \n", "P2303 10.000000 \n", "P2325 9.958078 \n", "P2720 9.333333 \n", "P2243 9.137546 \n", "P2244 9.118186 \n", "P3448 7.979275 \n", "P1183 7.897511 " ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF4.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 112, "id": "brief-effect", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P22142989348721476[../../allConstraintsAnalysis_WRemoved_Final/c...0.241349
P43331113458436995[../../allConstraintsAnalysis_WRemoved_Final/c...0.014045
P2757295163856[../../allConstraintsAnalysis_WRemoved_Final/c...22.461412
P2860174842113152425[../../allConstraintsAnalysis_WRemoved_Final/c...0.000872
P1435212163792401[../../allConstraintsAnalysis_WRemoved_Final/c...0.043552
P7084571857276[../../allConstraintsAnalysis_WRemoved_Final/c...1.252811
P19712201852917[../../allConstraintsAnalysis_WRemoved_Final/c...0.433682
P15984060049329[../../allConstraintsAnalysis_WRemoved_Final/c...1.215000
P1111146803[../../allConstraintsAnalysis_WRemoved_Final/c...46803.000000
P856145194944006[../../allConstraintsAnalysis_WRemoved_Final/c...0.030308
P2248402541608[../../allConstraintsAnalysis_WRemoved_Final/c...10.337391
P2325407940619[../../allConstraintsAnalysis_WRemoved_Final/c...9.958078
P2243403536870[../../allConstraintsAnalysis_WRemoved_Final/c...9.137546
P2244403636801[../../allConstraintsAnalysis_WRemoved_Final/c...9.118186
P41338914535536[../../allConstraintsAnalysis_WRemoved_Final/c...0.091318
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2214 2989348 721476 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P433 31113458 436995 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P275 7295 163856 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2860 174842113 152425 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1435 2121637 92401 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P708 45718 57276 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P197 122018 52917 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1598 40600 49329 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P1111 1 46803 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P856 1451949 44006 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2248 4025 41608 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2325 4079 40619 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2243 4035 36870 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P2244 4036 36801 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "P413 389145 35536 [../../allConstraintsAnalysis_WRemoved_Final/c... \n", "\n", " violation_ratio \n", "P2214 0.241349 \n", "P433 0.014045 \n", "P275 22.461412 \n", "P2860 0.000872 \n", "P1435 0.043552 \n", "P708 1.252811 \n", "P197 0.433682 \n", "P1598 1.215000 \n", "P1111 46803.000000 \n", "P856 0.030308 \n", "P2248 10.337391 \n", "P2325 9.958078 \n", "P2243 9.137546 \n", "P2244 9.118186 \n", "P413 0.091318 " ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF4.sort_values(by=['incorrect'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 113, "id": "wireless-passenger", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "count 424.000000\n", "mean 111.550177\n", "std 2272.909916\n", "min 0.000000\n", "25% 0.001966\n", "50% 0.036278\n", "75% 0.260204\n", "max 46803.000000\n", "Name: violation_ratio, dtype: float64" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "codepConstDF4['violation_ratio'].describe()" ] }, { "cell_type": "code", "execution_count": 114, "id": "civilian-arnold", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 4 - Violation Ratios')" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF4['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 4 - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 115, "id": "threaded-cooler", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Co-Dependency Constraint - Version 4 - Violation Ratios <= 0.5')" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "codepConstDF4[codepConstDF4['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 4 - Violation Ratios <= 0.5\")" ] }, { "cell_type": "code", "execution_count": 116, "id": "olympic-charlotte", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No. of properties whose violation ratio is greater than mean: 29/424\n" ] } ], "source": [ "print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF4['violation_ratio'] >= 2.414703)}/{len(codepConstDF4)}\")" ] }, { "cell_type": "markdown", "id": "published-affiliate", "metadata": {}, "source": [ "### Find out time required" ] }, { "cell_type": "code", "execution_count": null, "id": "aggregate-conservative", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from tqdm.notebook import tqdm\n", "\n", "codepConstViolations = {}\n", "\n", "codepConstViolations = {}\n", "codepConstPropList = set()\n", "\n", "def extractTimes(filename):\n", " times = []\n", " with open(filename) as f:\n", " for line in f:\n", " if \"real\" in line:\n", " line = line.strip()\n", " time1 = line.split(\"\\t\")[1]\n", " mins, sec = time1.split(\"m\")\n", " mins = int(mins)\n", " sec = float(sec[:-1])\n", " times.append(60 * mins + sec)\n", " return times\n", "\n", "# codepConstViolationsSummary = {}\n", "times = []\n", "timesVersion = {\"MSN\": [], \"MN\": [], \"M\": [], \"N\": [], \"S\": []}\n", "filePath = '/data/wd-correctness/propertiesSplit_WRemoved_Final/checkViolations/exec_logs/'\n", "for filename in tqdm(os.listdir(filePath)):\n", " if filename.startswith(\"timeLog_codepConst_\"):\n", " ver = filename.split('_')[2]\n", " tempTimes = extractTimes(filePath + filename)\n", " times += tempTimes\n", " timesVersion[ver] += tempTimes\n", "print(pd.Series(times).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "hearing-treasury", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(timesVersion['MSN']).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "animal-vocabulary", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(timesVersion['MN']).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "gentle-accessory", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(timesVersion['M']).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "fresh-namibia", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(timesVersion['N']).describe())" ] }, { "cell_type": "markdown", "id": "industrial-parcel", "metadata": {}, "source": [ "## Symmetric Constraint (Q21510862)\n", "\n", "This constraint says, if node1 has a property with this constraint, then both `(node1)-[prop]->(node2)` and `(node2)-[prop]->(node1)` must be present with few exceptions" ] }, { "cell_type": "markdown", "id": "silent-fundamentals", "metadata": {}, "source": [ "### Constraints File" ] }, { "cell_type": "code", "execution_count": 25, "id": "known-wednesday", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2021-04-15 07:17:19 query]: SQL Translation:\n", "---------------------------------------------\n", " SELECT *\n", " FROM graph_1 AS graph_1_c1\n", " WHERE graph_1_c1.\"label\"=?\n", " AND graph_1_c1.\"node2\"=?\n", " PARAS: ['P2302', 'Q21510862']\n", "---------------------------------------------\n" ] } ], "source": [ "!kgtk --debug query -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz \\\n", " ../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz \\\n", " --match \"p: (nodeProp1)-[nodePropEdge:P2302]->(:Q21510862)\" \\\n", " -o ../../constraintsOP/symmetricConstraint/claims.constraints_list.tsv \\\n", " --graph-cache ~/sqlite3_caches/temp1345.valuetype.sqlite3.db" ] }, { "cell_type": "code", "execution_count": 26, "id": "legal-diamond", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "qualiDF = pd.read_csv(\"../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz\",sep='\\t')\n", "constDF = pd.read_csv(\"../../constraintsOP/symmetricConstraint/claims.constraints_list.tsv\",sep='\\t')" ] }, { "cell_type": "code", "execution_count": 27, "id": "exceptional-morris", "metadata": {}, "outputs": [], "source": [ "constDF2 = constDF.set_index('id').join(qualiDF.set_index('node1'),rsuffix='_qualifier').drop(columns=['id', 'node2;wikidatatype_qualifier', 'rank', 'node2', 'label', 'node2;wikidatatype']).rename(columns={'label_qualifier':'label', 'node2_qualifier': 'node2'})\n", "constDF2 = constDF2.reset_index()\n", "constDF2 = constDF2.rename(columns={'index':'id'})\n", "constDF2['label'] = constDF2.label.fillna(\"P2316\")\n", "constDF2['node2'] = constDF2.node2.fillna(\"Normal\")" ] }, { "cell_type": "code", "execution_count": 28, "id": "burning-involvement", "metadata": {}, "outputs": [], "source": [ "constDF2.to_csv(\"../../constraintsOP/symmetricConstraint/claims.constraints_all.tsv\",sep=\"\\t\",index=False)" ] }, { "cell_type": "code", "execution_count": 29, "id": "naval-identification", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import math\n", "dfItemRequires = pd.read_csv('../../constraintsOP/symmetricConstraint/claims.constraints_all.tsv',sep='\\t')" ] }, { "cell_type": "code", "execution_count": 30, "id": "considered-madison", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()" ] }, { "cell_type": "code", "execution_count": 31, "id": "alone-cattle", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['P2316', 'P2303'], dtype=object)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires['label'].unique()" ] }, { "cell_type": "code", "execution_count": 33, "id": "sensitive-alliance", "metadata": {}, "outputs": [], "source": [ "#Reference: https://stackoverflow.com/a/17298454\n", "# dfItemRequires.pivot_table('node2', ['node1', 'id'], 'label')\n", "dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')" ] }, { "cell_type": "code", "execution_count": 34, "id": "tender-valley", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2316
node1id
P1322P1322-P2302-Q21510862-85dea891-0NaN[Normal]
P1327P1327-P2302-Q21510862-a3c3a094-0NaN[Normal]
P1382P1382-P2302-Q21510862-f6bcfecf-0NaN[Normal]
P1560P1560-P2302-Q21510862-fabecaeb-0NaN[Q21502408]
P1639P1639-P2302-Q21510862-384edcd4-0NaN[Q21502408]
\n", "
" ], "text/plain": [ "label P2303 P2316\n", "node1 id \n", "P1322 P1322-P2302-Q21510862-85dea891-0 NaN [Normal]\n", "P1327 P1327-P2302-Q21510862-a3c3a094-0 NaN [Normal]\n", "P1382 P1382-P2302-Q21510862-f6bcfecf-0 NaN [Normal]\n", "P1560 P1560-P2302-Q21510862-fabecaeb-0 NaN [Q21502408]\n", "P1639 P1639-P2302-Q21510862-384edcd4-0 NaN [Q21502408]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "code", "execution_count": 35, "id": "cellular-canal", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.droplevel(1)" ] }, { "cell_type": "code", "execution_count": 36, "id": "desperate-poster", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2316
node1
P1322NaN[Normal]
P1327NaN[Normal]
P1382NaN[Normal]
P1560NaN[Q21502408]
P1639NaN[Q21502408]
\n", "
" ], "text/plain": [ "label P2303 P2316\n", "node1 \n", "P1322 NaN [Normal]\n", "P1327 NaN [Normal]\n", "P1382 NaN [Normal]\n", "P1560 NaN [Q21502408]\n", "P1639 NaN [Q21502408]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "markdown", "id": "primary-netherlands", "metadata": {}, "source": [ "### Query Generator" ] }, { "cell_type": "code", "execution_count": 37, "id": "pointed-haven", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from tqdm.notebook import tqdm\n", "import os.path\n", "import os\n", "\n", "cnt = 0\n", "fCnt = 0\n", "\n", "folderName = 'symmetricConstraint'\n", "shellFileSuffix = 'symmConst_Validator_'\n", "graph_cache_prefix = 'symm_new_11_1_'\n", "\n", "for row in tqdm(dfItemRequires.iterrows()):\n", "# try:\n", " prop = row[0]\n", " constraint = row[1]\n", " mandatory = []\n", " suggestion = []\n", " normal = []\n", " prop = str(prop)\n", " \n", " if type(constraint['P2316']) == list:\n", " if constraint['P2316'][0] == 'Q21502408':\n", " sfname = 'mandatory'\n", " elif constraint['P2316'][0] == 'Q62026391':\n", " sfname = 'suggestion'\n", " elif constraint['P2316'][0] == 'Normal':\n", " sfname = 'normal'\n", " else:\n", " sfname = 'normal'\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv\")):\n", " continue\n", " \n", " command = \"{ time ( kgtk --debug query -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".copy2.tsv \\\n", " --match 'tsv: (node1)-[nodeProp]->(node2), copy2: (node2)-[]->(node1)' \"\n", " \n", " os.system(\"cp ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".copy2.tsv\")\n", " \n", " if cnt % 60 == 0:\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " command\n", " if type(constraint['P2303']) != list: # Exceptions not present\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", "# print(command)\n", " fOP.write(command)\n", " else:\n", " excptns = constraint['P2303']\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv; \"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".correct_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".correct_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)" ] }, { "cell_type": "code", "execution_count": 38, "id": "polar-canada", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "39" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 59, "id": "virtual-disney", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,3):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/symmConst_Validator_\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "coral-cheese", "metadata": {}, "source": [ "### Analyze Violations" ] }, { "cell_type": "code", "execution_count": 117, "id": "governmental-backup", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d0e1a54c683248f285687ab061bf42a0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3810b55aa13b4555b826a68f7b829338", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/13 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P2152801[../../allConstraintsAnalysis_WRemoved_Final/s...0.012346
P1639209426[../../allConstraintsAnalysis_WRemoved_Final/s...0.012264
P1560345933[../../allConstraintsAnalysis_WRemoved_Final/s...0.009450
P336418061[../../allConstraintsAnalysis_WRemoved_Final/s...0.000553
P61852810[../../allConstraintsAnalysis_WRemoved_Final/s...0.000000
\n", "" ], "text/plain": [ " correct incorrect paths \\\n", "P2152 80 1 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1639 2094 26 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1560 3459 33 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P3364 1806 1 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P6185 281 0 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "\n", " violation_ratio \n", "P2152 0.012346 \n", "P1639 0.012264 \n", "P1560 0.009450 \n", "P3364 0.000553 \n", "P6185 0.000000 " ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symmConstDF1 = pd.DataFrame(symmConstViolations['mandatory']).T\n", "symmConstDF1['violation_ratio'] = symmConstDF1.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n", "symmConstDF1.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 123, "id": "gross-extraction", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P278910455124812[../../allConstraintsAnalysis_WRemoved_Final/s...0.191801
P188953023430928[../../allConstraintsAnalysis_WRemoved_Final/s...0.055114
P1971713943538[../../allConstraintsAnalysis_WRemoved_Final/s...0.020225
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P2789 104551 24812 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1889 530234 30928 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P197 171394 3538 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "\n", " violation_ratio \n", "P2789 0.191801 \n", "P1889 0.055114 \n", "P197 0.020225 " ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symmConstDF2 = pd.DataFrame(symmConstViolations['suggestion']).T\n", "symmConstDF2['violation_ratio'] = symmConstDF2.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n", "symmConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 124, "id": "heavy-scout", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P597401[../../allConstraintsAnalysis_WRemoved_Final/s...1.000000
P518805[../../allConstraintsAnalysis_WRemoved_Final/s...1.000000
P17061297[../../allConstraintsAnalysis_WRemoved_Final/s...0.889908
P5214211336[../../allConstraintsAnalysis_WRemoved_Final/s...0.760387
P2652498911[../../allConstraintsAnalysis_WRemoved_Final/s...0.646558
P68475231787524749[../../allConstraintsAnalysis_WRemoved_Final/s...0.500052
P870262[../../allConstraintsAnalysis_WRemoved_Final/s...0.250000
P1382108372911[../../allConstraintsAnalysis_WRemoved_Final/s...0.211740
P30321730358[../../allConstraintsAnalysis_WRemoved_Final/s...0.171456
P2293124922321[../../allConstraintsAnalysis_WRemoved_Final/s...0.156687
P451109351285[../../allConstraintsAnalysis_WRemoved_Final/s...0.105155
P13277908860[../../allConstraintsAnalysis_WRemoved_Final/s...0.098084
P4545464[../../allConstraintsAnalysis_WRemoved_Final/s...0.080000
P491532828[../../allConstraintsAnalysis_WRemoved_Final/s...0.078652
P5306730484[../../allConstraintsAnalysis_WRemoved_Final/s...0.067092
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P5974 0 1 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P5188 0 5 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1706 12 97 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P521 421 1336 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P2652 498 911 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P684 7523178 7524749 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P8702 6 2 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1382 10837 2911 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P3032 1730 358 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P2293 12492 2321 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P451 10935 1285 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P1327 7908 860 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P4545 46 4 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P4915 328 28 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "P530 6730 484 [../../allConstraintsAnalysis_WRemoved_Final/s... \n", "\n", " violation_ratio \n", "P5974 1.000000 \n", "P5188 1.000000 \n", "P1706 0.889908 \n", "P521 0.760387 \n", "P2652 0.646558 \n", "P684 0.500052 \n", "P8702 0.250000 \n", "P1382 0.211740 \n", "P3032 0.171456 \n", "P2293 0.156687 \n", "P451 0.105155 \n", "P1327 0.098084 \n", "P4545 0.080000 \n", "P4915 0.078652 \n", "P530 0.067092 " ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symmConstDF3 = pd.DataFrame(symmConstViolations['normal']).T\n", "symmConstDF3['violation_ratio'] = symmConstDF3.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n", "symmConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 126, "id": "legitimate-aspect", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Symmetric Normal Constraint - Violation Ratios')" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "symmConstDF3.sort_values(by=['violation_ratio'],ascending=False)['violation_ratio'].plot.hist(bins=100).set_title(\"Symmetric Normal Constraint - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 127, "id": "junior-marketing", "metadata": {}, "outputs": [], "source": [ "pd.concat([symmConstDF1, symmConstDF2, symmConstDF3]).to_csv('../../allConstraintsAnalysis_WRemoved_Final/symmConstDFAnalysis.csv')" ] }, { "cell_type": "markdown", "id": "unlikely-sewing", "metadata": {}, "source": [ "### Find out time required" ] }, { "cell_type": "code", "execution_count": null, "id": "southern-reasoning", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from tqdm.notebook import tqdm\n", "\n", "codepConstViolations = {}\n", "\n", "codepConstViolations = {}\n", "codepConstPropList = set()\n", "\n", "def extractTimes(filename):\n", " times = []\n", " with open(filename) as f:\n", " for line in f:\n", " if \"real\" in line:\n", " line = line.strip()\n", " time1 = line.split(\"\\t\")[1]\n", " mins, sec = time1.split(\"m\")\n", " mins = int(mins)\n", " sec = float(sec[:-1])\n", " times.append(60 * mins + sec)\n", " return times\n", "\n", "# codepConstViolationsSummary = {}\n", "times = []\n", "filePath = '/data/wd-correctness/propertiesSplit_WRemoved_Final/checkViolations/exec_logs/'\n", "for filename in tqdm(os.listdir(filePath)):\n", " if filename.startswith(\"symmConst_Validator_\"):\n", " tempTimes = extractTimes(filePath + filename)\n", " times += tempTimes" ] }, { "cell_type": "code", "execution_count": null, "id": "classical-updating", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(times).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "fundamental-bottle", "metadata": {}, "outputs": [], "source": [ "import seaborn as sns\n", "sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for symmetric constraint checks\")" ] }, { "cell_type": "markdown", "id": "informed-animal", "metadata": {}, "source": [ "## Inverse Constraint (Q21510855)\n", "\n", "This constraint says, if node1 has a property with this constraint, then node2 must have the specified property and the value must be node1." ] }, { "cell_type": "markdown", "id": "dramatic-manchester", "metadata": {}, "source": [ "### Constraints File" ] }, { "cell_type": "code", "execution_count": 39, "id": "leading-server", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2021-04-15 07:17:37 query]: SQL Translation:\r\n", "---------------------------------------------\r\n", " SELECT *\r\n", " FROM graph_1 AS graph_1_c1\r\n", " WHERE graph_1_c1.\"label\"=?\r\n", " AND graph_1_c1.\"node2\"=?\r\n", " PARAS: ['P2302', 'Q21510855']\r\n", "---------------------------------------------\r\n" ] } ], "source": [ "!kgtk --debug query -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz \\\n", " ../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz \\\n", " --match \"p: (nodeProp1)-[nodePropEdge:P2302]->(:Q21510855)\" \\\n", " -o ../../constraintsOP/inverseConstraint/claims.constraints_list.tsv \\\n", " --graph-cache ~/sqlite3_caches/temp1345.valuetype.sqlite3.db" ] }, { "cell_type": "code", "execution_count": 40, "id": "offshore-sudan", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "id\tnode1\tlabel\tnode2\trank\tnode2;wikidatatype\r\n", "P1026-P2302-Q21510855-adc83b86-0\tP1026\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1029-P2302-Q21510855-6b55e057-0\tP1029\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P115-P2302-Q21510855-f7aa0b78-0\tP115\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1151-P2302-Q21510855-0d9aa9c6-0\tP1151\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1204-P2302-Q21510855-e3d53bb6-0\tP1204\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1283-P2302-Q21510855-0e7699bb-0\tP1283\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1308-P2302-Q21510855-2aba96b7-0\tP1308\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1365-P2302-Q21510855-c809b758-0\tP1365\tP2302\tQ21510855\tnormal\twikibase-item\r\n", "P1366-P2302-Q21510855-eee12ef8-0\tP1366\tP2302\tQ21510855\tnormal\twikibase-item\r\n" ] } ], "source": [ "!head ../../constraintsOP/inverseConstraint/claims.constraints_list.tsv" ] }, { "cell_type": "code", "execution_count": 41, "id": "received-colonial", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "qualiDF = pd.read_csv(\"../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz\",sep='\\t')\n", "constDF = pd.read_csv(\"../../constraintsOP/inverseConstraint/claims.constraints_list.tsv\",sep='\\t')" ] }, { "cell_type": "code", "execution_count": 42, "id": "overall-expense", "metadata": {}, "outputs": [], "source": [ "constDF2 = constDF.set_index('id').join(qualiDF.set_index('node1'),rsuffix='_qualifier').drop(columns=['id', 'node2;wikidatatype_qualifier', 'rank', 'node2', 'label', 'node2;wikidatatype']).rename(columns={'label_qualifier':'label', 'node2_qualifier': 'node2'})\n", "constDF2 = constDF2.reset_index()\n", "constDF2 = constDF2.rename(columns={'index':'id'})\n", "constDF2['label'] = constDF2.label.fillna(\"P2316\")\n", "constDF2['node2'] = constDF2.node2.fillna(\"Normal\")" ] }, { "cell_type": "code", "execution_count": 43, "id": "valid-throat", "metadata": {}, "outputs": [], "source": [ "constDF2.to_csv(\"../../constraintsOP/inverseConstraint/claims.constraints_all.tsv\",sep=\"\\t\",index=False)" ] }, { "cell_type": "code", "execution_count": 44, "id": "focused-pennsylvania", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import math\n", "dfItemRequires = pd.read_csv('../../constraintsOP/inverseConstraint/claims.constraints_all.tsv',sep='\\t')" ] }, { "cell_type": "code", "execution_count": 45, "id": "moved-rental", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()" ] }, { "cell_type": "code", "execution_count": 46, "id": "attached-rings", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['P2306', 'P2316', 'P4155', 'P2303'], dtype=object)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires['label'].unique()" ] }, { "cell_type": "code", "execution_count": 48, "id": "local-forty", "metadata": {}, "outputs": [], "source": [ "#Reference: https://stackoverflow.com/a/17298454\n", "# dfItemRequires.pivot_table('node2', ['node1', 'id'], 'label')\n", "dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')" ] }, { "cell_type": "code", "execution_count": 49, "id": "pressed-upset", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2306P2316P4155
node1id
P1026P1026-P2302-Q21510855-adc83b86-0NaN[P50]NaNNaN
P1029P1029-P2302-Q21510855-6b55e057-0NaN[P5096]NaNNaN
P115P115-P2302-Q21510855-f7aa0b78-0NaN[P466]NaNNaN
P1151P1151-P2302-Q21510855-0d9aa9c6-0NaN[P1204][Q21502408]NaN
P1204P1204-P2302-Q21510855-e3d53bb6-0NaN[P1151]NaNNaN
\n", "
" ], "text/plain": [ "label P2303 P2306 P2316 P4155\n", "node1 id \n", "P1026 P1026-P2302-Q21510855-adc83b86-0 NaN [P50] NaN NaN\n", "P1029 P1029-P2302-Q21510855-6b55e057-0 NaN [P5096] NaN NaN\n", "P115 P115-P2302-Q21510855-f7aa0b78-0 NaN [P466] NaN NaN\n", "P1151 P1151-P2302-Q21510855-0d9aa9c6-0 NaN [P1204] [Q21502408] NaN\n", "P1204 P1204-P2302-Q21510855-e3d53bb6-0 NaN [P1151] NaN NaN" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "code", "execution_count": 50, "id": "extra-stomach", "metadata": {}, "outputs": [], "source": [ "dfItemRequires = dfItemRequires.droplevel(1)" ] }, { "cell_type": "code", "execution_count": 51, "id": "seeing-marine", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelP2303P2306P2316P4155
node1
P1026NaN[P50]NaNNaN
P1029NaN[P5096]NaNNaN
P115NaN[P466]NaNNaN
P1151NaN[P1204][Q21502408]NaN
P1204NaN[P1151]NaNNaN
\n", "
" ], "text/plain": [ "label P2303 P2306 P2316 P4155\n", "node1 \n", "P1026 NaN [P50] NaN NaN\n", "P1029 NaN [P5096] NaN NaN\n", "P115 NaN [P466] NaN NaN\n", "P1151 NaN [P1204] [Q21502408] NaN\n", "P1204 NaN [P1151] NaN NaN" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfItemRequires.head()" ] }, { "cell_type": "markdown", "id": "composite-cutting", "metadata": {}, "source": [ "### Query Generator" ] }, { "cell_type": "code", "execution_count": 52, "id": "acoustic-belarus", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "13b5b09ee42643d687f6eff8bf93dfcd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from tqdm.notebook import tqdm\n", "import os.path\n", "import os\n", "\n", "cnt = 0\n", "fCnt = 0\n", "fOP = None\n", "\n", "folderName = 'inverseConstraint'\n", "shellFileSuffix = 'invConst_Validator_'\n", "graph_cache_file_prefix = \"inv_new_11_1_\"\n", "\n", "for prop, constraint in tqdm(dfItemRequires.iterrows()):\n", "# try:\n", " \n", " if type(constraint['P2316']) == list:\n", " if constraint['P2316'][0] == 'Q21502408':\n", " subFolderName = \"mandatory\"\n", " elif constraint['P2316'][0] == 'Q62026391':\n", " subFolderName = \"suggestion\"\n", " else:\n", " subFolderName = \"normal\"\n", " \n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv\")):\n", " continue\n", " \n", " prop2 = constraint['P2306']\n", "\n", " if type(prop2) != list:\n", " continue\n", " prop2 = prop2[0]\n", "\n", " if not(os.path.isfile(\"../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv\")):\n", " print(f\"File: ../../propertiesSplit_WRemoved_Final/claims.{prop2}.tsv does not exist\")\n", " continue\n", " \n", " if cnt % 60 == 0:\n", " if fOP:\n", " fOP.close()\n", " fCnt += 1\n", " fOP = open(\"../../propertiesSplit_WRemoved_Final/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n", " \n", " \n", " command = \"{ time ( kgtk --debug query -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " ../../propertiesSplit_WRemoved_Final/claims.\"+ prop2 +\".tsv \\\n", " --match '\"+ \\\n", " f\"{prop}: (node1)-[nodeProp]->(node2), {prop2}: (node2)-[]->(node1)' \"\n", "\n", " if type(constraint['P2303']) != list: # Exceptions not present\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n", "# print(command)\n", " fOP.write(command)\n", " else:\n", " excptns = set(constraint['P2303'])\n", " commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n", " kgtk --debug ifnotexists -i ../../propertiesSplit_WRemoved_Final/claims.\"+ prop +\".tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \"\n", " \n", " commandOPFile = \"-o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n", " \n", " command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv; \"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug query -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n", "# print(command) \n", " fOP.write(command)\n", " \n", " command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n", " --filter-on ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " command = \" kgtk cat -i ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n", " ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n", " -o ../../allConstraintsAnalysis_WRemoved_Final/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplit_WRemoved_Final/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n", "# print(command)\n", " fOP.write(command)\n", " \n", " \n", " cnt += 1\n", "# except:\n", "# print(\"Something failed for prop:\",prop)\n", "if fOP:\n", " fOP.close()" ] }, { "cell_type": "code", "execution_count": 53, "id": "large-climb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "110" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cnt" ] }, { "cell_type": "code", "execution_count": 60, "id": "involved-vietnamese", "metadata": {}, "outputs": [], "source": [ "# import os\n", "# for i in range(1,7):\n", "# os.system(\"screen -dm sh ../../propertiesSplit_WRemoved_Final/checkViolations/invConst_Validator_\"+str(i)+\".sh\")" ] }, { "cell_type": "markdown", "id": "retired-audio", "metadata": {}, "source": [ "### Analyze Violations" ] }, { "cell_type": "code", "execution_count": 129, "id": "specified-evanescence", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e5f9d7c3cc9b4c5bb69fa64c89494ed0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "10896285c1ae44658231d4707c063b4a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/12 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P267383970[../../allConstraintsAnalysis_WRemoved_Final/i...0.077008
P41472868[../../allConstraintsAnalysis_WRemoved_Final/i...0.027211
P450177930[../../allConstraintsAnalysis_WRemoved_Final/i...0.016584
P1151180330[../../allConstraintsAnalysis_WRemoved_Final/i...0.016367
P2033187928[../../allConstraintsAnalysis_WRemoved_Final/i...0.014683
P41492864[../../allConstraintsAnalysis_WRemoved_Final/i...0.013793
\n", "" ], "text/plain": [ " correct incorrect paths \\\n", "P2673 839 70 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P4147 286 8 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P450 1779 30 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P1151 1803 30 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P2033 1879 28 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P4149 286 4 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "\n", " violation_ratio \n", "P2673 0.077008 \n", "P4147 0.027211 \n", "P450 0.016584 \n", "P1151 0.016367 \n", "P2033 0.014683 \n", "P4149 0.013793 " ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invConstDF1 = pd.DataFrame(invConstViolations['mandatory']).T\n", "invConstDF1['violation_ratio'] = invConstDF1.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n", "invConstDF1.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 135, "id": "valid-symposium", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P143436775071[../../allConstraintsAnalysis_WRemoved_Final/i...0.579675
P155103664756650[../../allConstraintsAnalysis_WRemoved_Final/i...0.051816
P156103663644187[../../allConstraintsAnalysis_WRemoved_Final/i...0.040883
P629740301108[../../allConstraintsAnalysis_WRemoved_Final/i...0.014746
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P1434 3677 5071 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P155 1036647 56650 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P156 1036636 44187 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P629 74030 1108 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "\n", " violation_ratio \n", "P1434 0.579675 \n", "P155 0.051816 \n", "P156 0.040883 \n", "P629 0.014746 " ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invConstDF2 = pd.DataFrame(invConstViolations['suggestion']).T\n", "invConstDF2['violation_ratio'] = invConstDF2.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n", "invConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 136, "id": "resident-mustang", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
correctincorrectpathsviolation_ratio
P160513191[../../allConstraintsAnalysis_WRemoved_Final/i...0.936275
P34486054595[../../allConstraintsAnalysis_WRemoved_Final/i...0.883654
P92616[../../allConstraintsAnalysis_WRemoved_Final/i...0.857143
P10294902662[../../allConstraintsAnalysis_WRemoved_Final/i...0.844543
P92515[../../allConstraintsAnalysis_WRemoved_Final/i...0.833333
P115694825081[../../allConstraintsAnalysis_WRemoved_Final/i...0.783072
P51342354[../../allConstraintsAnalysis_WRemoved_Final/i...0.701299
P38161427[../../allConstraintsAnalysis_WRemoved_Final/i...0.658537
P128314052479[../../allConstraintsAnalysis_WRemoved_Final/i...0.638260
P8625915[../../allConstraintsAnalysis_WRemoved_Final/i...0.625000
P42527413337[../../allConstraintsAnalysis_WRemoved_Final/i...0.549029
P51328190[../../allConstraintsAnalysis_WRemoved_Final/i...0.526316
P2512221172[../../allConstraintsAnalysis_WRemoved_Final/i...0.437659
P167764[../../allConstraintsAnalysis_WRemoved_Final/i...0.400000
P25781111723[../../allConstraintsAnalysis_WRemoved_Final/i...0.394220
\n", "
" ], "text/plain": [ " correct incorrect paths \\\n", "P1605 13 191 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P3448 605 4595 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P926 1 6 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P1029 490 2662 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P925 1 5 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P115 6948 25081 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P5134 23 54 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P3816 14 27 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P1283 1405 2479 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P8625 9 15 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P425 2741 3337 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P5132 81 90 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P2512 221 172 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P1677 6 4 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "P2578 1111 723 [../../allConstraintsAnalysis_WRemoved_Final/i... \n", "\n", " violation_ratio \n", "P1605 0.936275 \n", "P3448 0.883654 \n", "P926 0.857143 \n", "P1029 0.844543 \n", "P925 0.833333 \n", "P115 0.783072 \n", "P5134 0.701299 \n", "P3816 0.658537 \n", "P1283 0.638260 \n", "P8625 0.625000 \n", "P425 0.549029 \n", "P5132 0.526316 \n", "P2512 0.437659 \n", "P1677 0.400000 \n", "P2578 0.394220 " ] }, "execution_count": 136, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invConstDF3 = pd.DataFrame(invConstViolations['normal']).T\n", "invConstDF3['violation_ratio'] = invConstDF3.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n", "invConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)" ] }, { "cell_type": "code", "execution_count": 138, "id": "entire-gauge", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Symmetric Normal Constraint - Violation Ratios')" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "invConstDF3.sort_values(by=['violation_ratio'],ascending=False)['violation_ratio'].plot.hist(bins=100).set_title(\"Symmetric Normal Constraint - Violation Ratios\")" ] }, { "cell_type": "code", "execution_count": 139, "id": "infectious-clothing", "metadata": {}, "outputs": [], "source": [ "pd.concat([invConstDF1, invConstDF2, invConstDF3]).to_csv('../../allConstraintsAnalysis_WRemoved_Final/invConstDFAnalysis.csv')" ] }, { "cell_type": "markdown", "id": "working-stable", "metadata": {}, "source": [ "### Find out time required" ] }, { "cell_type": "code", "execution_count": null, "id": "saved-twelve", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from tqdm.notebook import tqdm\n", "\n", "codepConstViolations = {}\n", "\n", "codepConstViolations = {}\n", "codepConstPropList = set()\n", "\n", "def extractTimes(filename):\n", " times = []\n", " with open(filename) as f:\n", " for line in f:\n", " if \"real\" in line:\n", " line = line.strip()\n", " time1 = line.split(\"\\t\")[1]\n", " mins, sec = time1.split(\"m\")\n", " mins = int(mins)\n", " sec = float(sec[:-1])\n", " times.append(60 * mins + sec)\n", " return times\n", "\n", "# codepConstViolationsSummary = {}\n", "times = []\n", "filePath = '/data/wd-correctness/propertiesSplit_WRemoved_Final/checkViolations/exec_logs/'\n", "for filename in tqdm(os.listdir(filePath)):\n", " if filename.startswith(\"invConst_Validator\"):\n", " tempTimes = extractTimes(filePath + filename)\n", " times += tempTimes" ] }, { "cell_type": "code", "execution_count": null, "id": "caroline-observation", "metadata": {}, "outputs": [], "source": [ "print(pd.Series(times).describe())" ] }, { "cell_type": "code", "execution_count": null, "id": "static-conclusion", "metadata": {}, "outputs": [], "source": [ "import seaborn as sns\n", "sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for symmetric constraint checks\")" ] }, { "cell_type": "markdown", "id": "mature-suite", "metadata": {}, "source": [ "# Combine Plots for constraints" ] }, { "cell_type": "code", "execution_count": 30, "id": "behind-nurse", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import seaborn as sns\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "typeConstDF = pd.read_csv(\"../../allConstraintsAnalysis_WRemoved_Final/typeConstDFAnalysis.csv\")\n", "typeConstDF = typeConstDF.set_index(typeConstDF.iloc[:, 0])\n", "\n", "valTypeConstDF = pd.read_csv(\"../../allConstraintsAnalysis_WRemoved_Final/valueTypeConstDFAnalysis.csv\")\n", "valTypeConstDF = valTypeConstDF.set_index(valTypeConstDF.iloc[:, 0])\n", "\n", "codepConstDF1 = pd.read_csv(\"../../allConstraintsAnalysis_WRemoved_Final/codepConstDFAnalysis.csv\")\n", "codepConstDF1 = codepConstDF1.set_index(codepConstDF1.iloc[:, 0])\n", "\n", "symmConstDF = pd.read_csv(\"../../allConstraintsAnalysis_WRemoved_Final/symmConstDFAnalysis.csv\")\n", "symmConstDF = symmConstDF.set_index(symmConstDF.iloc[:, 0])\n", "\n", "invConstDF = pd.read_csv(\"../../allConstraintsAnalysis_WRemoved_Final/invConstDFAnalysis.csv\")\n", "invConstDF = invConstDF.set_index(invConstDF.iloc[:, 0])" ] }, { "cell_type": "code", "execution_count": 3, "id": "ultimate-chorus", "metadata": {}, "outputs": [], "source": [ "typeConstDF1 = typeConstDF.add_suffix(\"_type_const\")['violation_ratio_type_const'].rename().sort_values()" ] }, { "cell_type": "code", "execution_count": 4, "id": "dynamic-castle", "metadata": {}, "outputs": [], "source": [ "valTypeConstDF1 = valTypeConstDF.add_suffix(\"_valuetype_const\")['violation_ratio_valuetype_const'].sort_values()" ] }, { "cell_type": "code", "execution_count": 5, "id": "global-performer", "metadata": {}, "outputs": [], "source": [ "codepConstDF1_1 = codepConstDF1.add_suffix(\"_codep_const\")['violation_ratio_codep_const'].sort_values()" ] }, { "cell_type": "code", "execution_count": 6, "id": "enabling-instrumentation", "metadata": {}, "outputs": [], "source": [ "symmConstDF1_1 = symmConstDF.add_suffix(\"_symm_const\")['violation_ratio_symm_const'].sort_values()" ] }, { "cell_type": "code", "execution_count": 7, "id": "realistic-cannon", "metadata": {}, "outputs": [], "source": [ "invConstDF1_1 = invConstDF.add_suffix(\"_inv_const\")['violation_ratio_inv_const'].sort_values()" ] }, { "cell_type": "code", "execution_count": 8, "id": "about-coalition", "metadata": {}, "outputs": [], "source": [ "typeConstDF1.index.names = ['property']\n", "typeConstDF1 = typeConstDF1.reset_index().reset_index()\n", "typeConstDF1['index'] = typeConstDF1['index'].apply(lambda p: (p+1) * 100/len(typeConstDF1))\n", "typeConstDF1 = typeConstDF1.set_index('index')[0]" ] }, { "cell_type": "code", "execution_count": 9, "id": "hidden-anaheim", "metadata": {}, "outputs": [], "source": [ "valTypeConstDF1.index.names = ['property']\n", "valTypeConstDF1 = valTypeConstDF1.reset_index().reset_index()\n", "valTypeConstDF1['index'] = valTypeConstDF1['index'].apply(lambda p: (p+1) * 100/len(valTypeConstDF1))\n", "valTypeConstDF1 = valTypeConstDF1.set_index('index')['violation_ratio_valuetype_const']" ] }, { "cell_type": "code", "execution_count": 10, "id": "toxic-straight", "metadata": {}, "outputs": [], "source": [ "codepConstDF1_1.index.names = ['property']\n", "codepConstDF1_1 = codepConstDF1_1.reset_index().reset_index()\n", "codepConstDF1_1['index'] = codepConstDF1_1['index'].apply(lambda p: (p+1) * 100/len(codepConstDF1_1))\n", "codepConstDF1_1 = codepConstDF1_1.set_index('index')['violation_ratio_codep_const']" ] }, { "cell_type": "code", "execution_count": 11, "id": "legal-socket", "metadata": {}, "outputs": [], "source": [ "symmConstDF1_1.index.names = ['property']\n", "symmConstDF1_1 = symmConstDF1_1.reset_index().reset_index()\n", "symmConstDF1_1['index'] = symmConstDF1_1['index'].apply(lambda p: (p+1) * 100/len(symmConstDF1_1))\n", "symmConstDF1_1 = symmConstDF1_1.set_index('index')['violation_ratio_symm_const']" ] }, { "cell_type": "code", "execution_count": 12, "id": "dietary-attack", "metadata": {}, "outputs": [], "source": [ "invConstDF1_1.index.names = ['property']\n", "invConstDF1_1 = invConstDF1_1.reset_index().reset_index()\n", "invConstDF1_1['index'] = invConstDF1_1['index'].apply(lambda p: (p+1) * 100/len(invConstDF1_1))\n", "invConstDF1_1 = invConstDF1_1.set_index('index')['violation_ratio_inv_const']" ] }, { "cell_type": "code", "execution_count": 23, "id": "familiar-packing", "metadata": {}, "outputs": [], "source": [ "typeConstDF2 = [np.percentile(typeConstDF1,i)*100 for i in range(1, 101)]\n", "valTypeConstDF2 = [np.percentile(valTypeConstDF1,i)*100 for i in range(1, 101)]\n", "codepConstDF1_2 = [np.percentile(codepConstDF1_1,i)*100 for i in range(1, 101)]\n", "symmConstDF1_2 = [np.percentile(symmConstDF1_1,i)*100 for i in range(1, 101)]\n", "invConstDF1_2 = [np.percentile(invConstDF1_1,i)*100 for i in range(1, 101)]" ] }, { "cell_type": "code", "execution_count": 24, "id": "forward-tutorial", "metadata": {}, "outputs": [], "source": [ "constAnalysisDF = pd.DataFrame({'index':list(range(1, 101)), 'type': typeConstDF2, 'value type': valTypeConstDF2, 'irs': codepConstDF1_2, 'symmetric': symmConstDF1_2, 'inverse': invConstDF1_2})" ] }, { "cell_type": "code", "execution_count": 25, "id": "mobile-rings", "metadata": {}, "outputs": [], "source": [ "constAnalysisDF = constAnalysisDF.melt('index', var_name='constraint', value_name='VR')" ] }, { "cell_type": "code", "execution_count": 26, "id": "contrary-conviction", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexconstraintVR
01type0.0
12type0.0
23type0.0
34type0.0
45type0.0
\n", "
" ], "text/plain": [ " index constraint VR\n", "0 1 type 0.0\n", "1 2 type 0.0\n", "2 3 type 0.0\n", "3 4 type 0.0\n", "4 5 type 0.0" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "constAnalysisDF.head()" ] }, { "cell_type": "code", "execution_count": 33, "id": "ruled-rough", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Text(0.5, 0, 'Proportion of properties (in %)'),\n", " Text(0, 0.5, 'Violation Ratio (in %)')]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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0y9+SmJ4In878W/Eh8cf8bUKqlvoFxeOJW8t7joHsbOPOeg5Po+fsryGbtFdCZKQ9SqSkAkhhOgJipqKuGHhDTgsDp476TlSI49u3uaCmhYGJkXRuPALAGJPPfiDAWU7GvD7jG7RXQmSkHW6u+66i6eeeqr9/f3338+jjz5Kc3Mz8+bNY9KkSYwdO5YPPvhgn3MXLVrEGWec0f7+5z//OS+//DIAq1atYvbs2UyePJmTTz55nwr+y5cv58MPP2TBggVMmDCBHTt2MGnSpPb927dvb38/cOBA7rjjDsaOHcu0adPIy8sDoKqqivPOO4+pU6cydepUvv766077uQghhBAATZ4mfrLwJ3gMD8+d+BzZMdlHfc2CGicDk6No+not4Yke7MMnHvSc4i21WKyKfkO6R53Q3l2H7NO7oHxD514zfSyc+uB+d1900UXccsst3HTTTQD861//4r///S/h4eG89957xMbGUl1dzfTp0znrrLMO6TFbr9fLL37xCz744ANSUlJ46623uPvuu3nxxRfbjzn22GM566yzOOOMMzj//PMBiIuLY+3atUyYMIGXXnppr+mb4uLi2LBhA6+++iq33HILH330ETfffDO33norxx13HIWFhZx88sls3rz5SH9SQgghxF601ty3/D5Kmkt48eQXj6gA7A81tHqpbfEwQjfi2lVN6hQFjoOPRSvaXEf6oDgc4d0jFeoeUfQiEydOpLKyktLSUqqqqkhISCA7Oxuv18uvf/1rlixZgsVioaSkhIqKCtIPUiMFYOvWrWzcuJETTzwRAL/fT79+/Q563nXXXcdLL73En//8Z9566y2+//779n1tUzldcskl3HrrrYA5s8CeXZ6NjY00Nzd32hg3IYQQfdtbW99i4a6F3DLpFialTTr4CYegoLoFgKFbVgAQM/bg3Z+tzR6qipqYdkZOp8TQGXp3QnaAlqxguuCCC3jnnXcoLy9vn5fy9ddfp6qqilWrVmG32xk4cCAul2uv82w2G4ZhtL9v26+1ZvTo0XzzzTeHFcd5553Hb3/7W+bOncvkyZNJSkpq37dny1zbumEYfPvtt4SHhx/eBxZCCCEOYnPNZh5e8TDHZR7H1WOuPvgJh6igxkzIElYsJTzViqP/wIOeU7K1HnT3KHfRRsaQBcFFF13Em2++yTvvvMMFF1wAQENDA6mpqdjtdr76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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 6))\n", "ax = sns.lineplot(x='index', y='VR', hue='constraint', data=constAnalysisDF)\n", "ax.set(xlabel=\"Proportion of properties (in %)\", ylabel = \"Violation Ratio (in %)\")" ] }, { "cell_type": "markdown", "id": "eleven-album", "metadata": {}, "source": [ "Fin." ] }, { "cell_type": "code", "execution_count": null, "id": "brilliant-drawing", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "kgtkEnv", "language": "python", "name": "kgtkenv" }, "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.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "318px" }, "toc_section_display": true, "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "oldHeight": 122, "position": { "height": "40px", "left": "1170px", "right": "20px", "top": "120px", "width": "250px" }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "varInspector_section_display": "none", "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }