sshoc-skosmapping/TAPoRCheck.ipynb

3409 lines
295 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Review of data ingested from TAPoR (draft)\n",
"\n",
"This is document cheks the TAPoR dataset using the python library Pandas.\n",
"\n",
"Reference to ticket: https://gitlab.gwdg.de/sshoc/data-ingestion/-/issues/7\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Preamble"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"import ast\n",
"import sys\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from bokeh.io import output_notebook, show\n",
"from bokeh.plotting import figure\n",
"\n",
"from im_tutorials.data import *\n",
"from im_tutorials.utilities import flatten_lists\n",
"from im_tutorials.features.text_preprocessing import *\n",
"from im_tutorials.features.document_vectors import document_vector\n",
"from im_tutorials.features.dim_reduction import WrapTSNE, GaussianMixtureEval\n",
"# for db\n",
"import sqlalchemy as db\n",
"from sqlalchemy import *"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"engine = create_engine(\n",
" \"connection_string\")\n",
"connection = engine.connect()\n",
"metadata = db.MetaData()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Import data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Query the DB to get TAPoR data\n",
"\n",
"The TAPoR dataset used in this document is the sql dump published by Education and Research Archive (ERA) University of Alberta: \n",
"\n",
"https://era.library.ualberta.ca/items/f2da0666-f523-44d4-a83c-fa06351a1e94 \n",
"\n",
"(creation date: 2020-01-01).\n",
"The table *tool* contains 1504 records, each one describing a tool. \n",
"Records have been filtered according the value of the field *tool.is_approved*, there are 1363 *approved* records.\n",
"In this document this dataset will be called the **TAPoR dataset**.\n",
"\n",
"*Note that the TAPoR dataset reviewed here is not the same that has been used for the MP ingestion, this document will be update when we'll have it*\n"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RangeIndex(start=0, stop=1363, step=1)"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools=pd.read_sql_query('SELECT * FROM TaPOR.tools where is_approved=1 order by last_updated', connection)\n",
"df_db_tools.index"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### An example of TAPoR item\n",
"Let's take a look at a random TAPoR dataset entry.\n",
"(The database schema of the TAPoR dataset is described here: https://era.library.ualberta.ca/items/f2da0666-f523-44d4-a83c-fa06351a1e94/download/8057eae2-3fae-4afa-bc8e-6dcc2a257b6f.)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"id 254\n",
"user_id NaN\n",
"name TextQuest\n",
"detail <p>TextQuest is a text analysis program availa...\n",
"url http://www.textquest.de/pages/en/general-infor...\n",
"is_approved 1\n",
"creators_name Social Science Consulting\n",
"creators_email info@textquest.de\n",
"creators_url http://www.textquest.de/\n",
"image_url images/tools/0/254.png\n",
"star_average 0\n",
"is_hidden 0\n",
"last_updated 2013-05-13\n",
"documentation_url http://www.textquest.de/pages/en/analysis-of-t...\n",
"code None\n",
"repository \n",
"language NaN\n",
"nature 0\n",
"created_at 2013-05-13 18:57:27\n",
"updated_at 2017-10-31 14:25:28\n",
"recipes \n",
"Name: 500, dtype: object"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#df_db_tools.dtypes\n",
"df_db_tools.iloc[500]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following table shows 5 records of the TAPoR dataset."
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>user_id</th>\n",
" <th>name</th>\n",
" <th>detail</th>\n",
" <th>url</th>\n",
" <th>is_approved</th>\n",
" <th>creators_name</th>\n",
" <th>creators_email</th>\n",
" <th>creators_url</th>\n",
" <th>image_url</th>\n",
" <th>...</th>\n",
" <th>is_hidden</th>\n",
" <th>last_updated</th>\n",
" <th>documentation_url</th>\n",
" <th>code</th>\n",
" <th>repository</th>\n",
" <th>language</th>\n",
" <th>nature</th>\n",
" <th>created_at</th>\n",
" <th>updated_at</th>\n",
" <th>recipes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>906</th>\n",
" <td>937</td>\n",
" <td>1.0</td>\n",
" <td>140kit</td>\n",
" <td>&lt;p&gt;140kit provides a management layer for twee...</td>\n",
" <td>https://github.com/WebEcologyProject/140kit</td>\n",
" <td>1</td>\n",
" <td>Ian Pearce, Devin Gaffney</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>images/tools/1/937.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2018-10-05</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2015-05-24 00:00:00</td>\n",
" <td>2018-10-05 04:43:34</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>334</th>\n",
" <td>1229</td>\n",
" <td>1.0</td>\n",
" <td>3DVIA Virtools</td>\n",
" <td>&lt;p&gt;A software tool for the creation of 3D inte...</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>Dassault Systemes</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2014-12-29 00:00:00</td>\n",
" <td>2014-12-29 00:00:00</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>688</th>\n",
" <td>783</td>\n",
" <td>1.0</td>\n",
" <td>4th Dimension</td>\n",
" <td>4th Dimension is a graphic environment for dev...</td>\n",
" <td>http://www.4d.com/products/4d2004/4dstandarded...</td>\n",
" <td>1</td>\n",
" <td>4D</td>\n",
" <td>None</td>\n",
" <td>http://www.4d.com/</td>\n",
" <td>images/tools/1/783.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2018-09-18</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2015-05-24 00:00:00</td>\n",
" <td>2018-09-18 20:39:31</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>1156</th>\n",
" <td>648</td>\n",
" <td>937.0</td>\n",
" <td>80legs</td>\n",
" <td>80legs is a web crawling service. You need to ...</td>\n",
" <td>http://80legs.com/</td>\n",
" <td>1</td>\n",
" <td>80legs</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>images/tools/1/648.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2018-10-30</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2017-10-15 23:04:46</td>\n",
" <td>2018-10-30 16:03:45</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>770</th>\n",
" <td>1454</td>\n",
" <td>1.0</td>\n",
" <td>960 Grid System</td>\n",
" <td>&lt;p&gt;960 Grid System is a CSS template that come...</td>\n",
" <td>https://960.gs/</td>\n",
" <td>1</td>\n",
" <td>Nathan Smith</td>\n",
" <td>None</td>\n",
" <td>http://sonspring.com/</td>\n",
" <td>images/tools/2/1454.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2018-09-27</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>https://github.com/nathansmith/960-Grid-System</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2014-12-29 00:00:00</td>\n",
" <td>2018-09-27 22:29:43</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" id user_id name \\\n",
"906 937 1.0 140kit \n",
"334 1229 1.0 3DVIA Virtools \n",
"688 783 1.0 4th Dimension \n",
"1156 648 937.0 80legs \n",
"770 1454 1.0 960 Grid System \n",
"\n",
" detail \\\n",
"906 <p>140kit provides a management layer for twee... \n",
"334 <p>A software tool for the creation of 3D inte... \n",
"688 4th Dimension is a graphic environment for dev... \n",
"1156 80legs is a web crawling service. You need to ... \n",
"770 <p>960 Grid System is a CSS template that come... \n",
"\n",
" url is_approved \\\n",
"906 https://github.com/WebEcologyProject/140kit 1 \n",
"334 None 1 \n",
"688 http://www.4d.com/products/4d2004/4dstandarded... 1 \n",
"1156 http://80legs.com/ 1 \n",
"770 https://960.gs/ 1 \n",
"\n",
" creators_name creators_email creators_url \\\n",
"906 Ian Pearce, Devin Gaffney None None \n",
"334 Dassault Systemes None None \n",
"688 4D None http://www.4d.com/ \n",
"1156 80legs \n",
"770 Nathan Smith None http://sonspring.com/ \n",
"\n",
" image_url ... is_hidden last_updated documentation_url \\\n",
"906 images/tools/1/937.png ... 0 2018-10-05 None \n",
"334 None ... 0 None None \n",
"688 images/tools/1/783.png ... 0 2018-09-18 None \n",
"1156 images/tools/1/648.png ... 0 2018-10-30 None \n",
"770 images/tools/2/1454.png ... 0 2018-09-27 None \n",
"\n",
" code repository language nature \\\n",
"906 None None NaN 0 \n",
"334 None None NaN 0 \n",
"688 None None NaN 0 \n",
"1156 None NaN 0 \n",
"770 None https://github.com/nathansmith/960-Grid-System NaN 0 \n",
"\n",
" created_at updated_at recipes \n",
"906 2015-05-24 00:00:00 2018-10-05 04:43:34 \n",
"334 2014-12-29 00:00:00 2014-12-29 00:00:00 \n",
"688 2015-05-24 00:00:00 2018-09-18 20:39:31 \n",
"1156 2017-10-15 23:04:46 2018-10-30 16:03:45 \n",
"770 2014-12-29 00:00:00 2018-09-27 22:29:43 \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools.sort_values('name').head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check for duplicates in TAPoR dataset\n",
"Considering the values for 'name' and 'url', it appears that in the TAPoR dataset there are 4 duplicated descriptions"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>user_id</th>\n",
" <th>name</th>\n",
" <th>detail</th>\n",
" <th>url</th>\n",
" <th>is_approved</th>\n",
" <th>creators_name</th>\n",
" <th>creators_email</th>\n",
" <th>creators_url</th>\n",
" <th>image_url</th>\n",
" <th>...</th>\n",
" <th>is_hidden</th>\n",
" <th>last_updated</th>\n",
" <th>documentation_url</th>\n",
" <th>code</th>\n",
" <th>repository</th>\n",
" <th>language</th>\n",
" <th>nature</th>\n",
" <th>created_at</th>\n",
" <th>updated_at</th>\n",
" <th>recipes</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1358</th>\n",
" <td>148</td>\n",
" <td>NaN</td>\n",
" <td>AntConc</td>\n",
" <td>AntConc is free concordance software. It is mu...</td>\n",
" <td>http://www.laurenceanthony.net/software/antconc/</td>\n",
" <td>1</td>\n",
" <td>Laurence Anthony</td>\n",
" <td>anthony@waseda.jp</td>\n",
" <td>http://www.antlab.sci.waseda.ac.jp/index.html</td>\n",
" <td>images/tools/0/148.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2019-08-19</td>\n",
" <td>http://www.laurenceanthony.net/software/antcon...</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2012-07-30 18:25:44</td>\n",
" <td>2019-08-19 00:37:45</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>1362</th>\n",
" <td>1565</td>\n",
" <td>1201.0</td>\n",
" <td>SentiStrength</td>\n",
" <td>SentiStrength is a sentiment analysis (opinion...</td>\n",
" <td>http://sentistrength.wlv.ac.uk/</td>\n",
" <td>1</td>\n",
" <td>Mike Thelwall</td>\n",
" <td>m.thelwall@wlv.ac.uk</td>\n",
" <td>http://sentistrength.wlv.ac.uk</td>\n",
" <td>images/tools/3/1565.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2019-09-27</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2019-09-20 05:03:47</td>\n",
" <td>2019-09-27 10:03:35</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>652</th>\n",
" <td>580</td>\n",
" <td>937.0</td>\n",
" <td>Voyant 2.0: Knots</td>\n",
" <td>Voyant Knots is a visualization where a line i...</td>\n",
" <td>http://voyant-tools.org/?view=knots</td>\n",
" <td>1</td>\n",
" <td>Stéfan Sinclair and Geoffrey Rockwell</td>\n",
" <td>stefan.sinclair@mcgill.ca</td>\n",
" <td>http://stefansinclair.name/</td>\n",
" <td>images/tools/1/580.png</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>2016-04-29</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2016-04-29 16:08:28</td>\n",
" <td>2017-10-31 14:26:36</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>653</th>\n",
" <td>581</td>\n",
" <td>937.0</td>\n",
" <td>Voyant 2.0: Knots</td>\n",
" <td>Voyant Knots is a visualization where a line i...</td>\n",
" <td>http://voyant-tools.org/?view=knots</td>\n",
" <td>1</td>\n",
" <td>Stéfan Sinclair and Geoffrey Rockwell</td>\n",
" <td>stefan.sinclair@mcgill.ca</td>\n",
" <td>http://stefansinclair.name/</td>\n",
" <td>images/tools/1/581.png</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>2016-04-29</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td></td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2016-04-29 16:11:55</td>\n",
" <td>2017-10-31 14:26:36</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" id user_id name \\\n",
"1358 148 NaN AntConc \n",
"1362 1565 1201.0 SentiStrength \n",
"652 580 937.0 Voyant 2.0: Knots \n",
"653 581 937.0 Voyant 2.0: Knots \n",
"\n",
" detail \\\n",
"1358 AntConc is free concordance software. It is mu... \n",
"1362 SentiStrength is a sentiment analysis (opinion... \n",
"652 Voyant Knots is a visualization where a line i... \n",
"653 Voyant Knots is a visualization where a line i... \n",
"\n",
" url is_approved \\\n",
"1358 http://www.laurenceanthony.net/software/antconc/ 1 \n",
"1362 http://sentistrength.wlv.ac.uk/ 1 \n",
"652 http://voyant-tools.org/?view=knots 1 \n",
"653 http://voyant-tools.org/?view=knots 1 \n",
"\n",
" creators_name creators_email \\\n",
"1358 Laurence Anthony anthony@waseda.jp \n",
"1362 Mike Thelwall m.thelwall@wlv.ac.uk \n",
"652 Stéfan Sinclair and Geoffrey Rockwell stefan.sinclair@mcgill.ca \n",
"653 Stéfan Sinclair and Geoffrey Rockwell stefan.sinclair@mcgill.ca \n",
"\n",
" creators_url image_url \\\n",
"1358 http://www.antlab.sci.waseda.ac.jp/index.html images/tools/0/148.png \n",
"1362 http://sentistrength.wlv.ac.uk images/tools/3/1565.png \n",
"652 http://stefansinclair.name/ images/tools/1/580.png \n",
"653 http://stefansinclair.name/ images/tools/1/581.png \n",
"\n",
" ... is_hidden last_updated \\\n",
"1358 ... 0 2019-08-19 \n",
"1362 ... 0 2019-09-27 \n",
"652 ... 1 2016-04-29 \n",
"653 ... 0 2016-04-29 \n",
"\n",
" documentation_url code repository \\\n",
"1358 http://www.laurenceanthony.net/software/antcon... None \n",
"1362 None None \n",
"652 None None \n",
"653 None None \n",
"\n",
" language nature created_at updated_at recipes \n",
"1358 NaN 0 2012-07-30 18:25:44 2019-08-19 00:37:45 \n",
"1362 NaN 0 2019-09-20 05:03:47 2019-09-27 10:03:35 \n",
"652 NaN 0 2016-04-29 16:08:28 2017-10-31 14:26:36 \n",
"653 NaN 0 2016-04-29 16:11:55 2017-10-31 14:26:36 \n",
"\n",
"[4 rows x 21 columns]"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"duplicateRowsDF0 = df_db_tools[df_db_tools.duplicated(['name', 'url'])].sort_values('name')\n",
"#print(\"The (possibly) duplicated items in TAPoR dataset:\")\n",
"duplicateRowsDF0.head(15)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get the ingested TAPoR data in the Market Place (using the API)\n",
"\n",
"The SSHOC Market Place API entry: \n",
"\n",
" https://sshoc-marketplace-api.acdh-dev.oeaw.ac.at/api/tools\n",
"\n",
"has been used to extract the TAPoR descriptions imported in the SSHOC Market Place. In the rest of the document this dataset will be called: **MP dataset**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RangeIndex(start=0, stop=1353, step=1)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#x = ('2','3','4','5')\n",
"x = pd.Series(range(2,69))\n",
"url = 'https://sshoc-marketplace-api.acdh-dev.oeaw.ac.at/api/tools?page=1&perpage=20'\n",
"df_tool_all = pd.read_json(url, orient='columns')\n",
"for var in x:\n",
" url = \"https://sshoc-marketplace-api.acdh-dev.oeaw.ac.at/api/tools?page=\"+str(var)+\"&perpage=20\"\n",
" df_tool_par=pd.read_json(url, orient='columns')\n",
" df_tool_all=df_tool_all.append(df_tool_par, ignore_index=True)\n",
" # print(\"url: \"+ url + \":\",var)\n",
"df_tool_all.index"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are 1353 tool descriptions in MP dataset. The following table shows 10 records of the MP dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take a look at row 500 of the MP dataset"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"id 1388\n",
"category tool\n",
"label InTEXT\n",
"version None\n",
"description InTEXT is a legacy, commercial suite of progra...\n",
"licenses []\n",
"contributors [{'actor': {'id': 956, 'name': 'InTEXT Systems...\n",
"properties [{'id': 14091, 'type': {'code': 'tadirah-metho...\n",
"accessibleAt http://intext.com/\n",
"sourceItemId 247\n",
"relatedItems []\n",
"informationContributors [{'id': 4, 'username': 'System importer', 'dis...\n",
"lastInfoUpdate 2020-06-28T18:25:58+0000\n",
"status ingested\n",
"comments []\n",
"olderVersions []\n",
"newerVersions []\n",
"repository None\n",
"source.id 1\n",
"source.label TAPoR\n",
"source.url http://tapor.ca\n",
"source.urlTemplate http://tapor.ca/tools/{source-item-id}\n",
"source NaN\n",
"Name: 500, dtype: object"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#descriptions are in JSON, create a dataframe\n",
"df_tool_flat = pd.json_normalize(df_tool_all['tools'])\n",
"df_tool_flat.iloc[500]\n",
"#df_tool_flat.sort_values('label').head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the MP dataset there are 1353 tool descriptions."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RangeIndex(start=0, stop=1353, step=1)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_tool_flat.index"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Considering the values for 'label' and 'accessibleAT', it appears that in the MP dataset there are 9 duplicated descriptions"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>category</th>\n",
" <th>label</th>\n",
" <th>version</th>\n",
" <th>description</th>\n",
" <th>licenses</th>\n",
" <th>contributors</th>\n",
" <th>properties</th>\n",
" <th>accessibleAt</th>\n",
" <th>sourceItemId</th>\n",
" <th>...</th>\n",
" <th>status</th>\n",
" <th>comments</th>\n",
" <th>olderVersions</th>\n",
" <th>newerVersions</th>\n",
" <th>repository</th>\n",
" <th>source.id</th>\n",
" <th>source.label</th>\n",
" <th>source.url</th>\n",
" <th>source.urlTemplate</th>\n",
" <th>source</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>326</th>\n",
" <td>335</td>\n",
" <td>tool</td>\n",
" <td>EVI-LINHD</td>\n",
" <td>None</td>\n",
" <td>EVI-LINHD is a free and open-source cloud plat...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 275, 'name': 'Elena González...</td>\n",
" <td>[{'id': 2702, 'type': {'code': 'thumbnail', 'l...</td>\n",
" <td>http://www.evilinhd.com/</td>\n",
" <td>594</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>532</th>\n",
" <td>776</td>\n",
" <td>tool</td>\n",
" <td>JSAN</td>\n",
" <td>None</td>\n",
" <td>The Integrated JStylo and Anonymouth Package. ...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 493, 'name': '18th Connect',...</td>\n",
" <td>[{'id': 7310, 'type': {'code': 'thumbnail', 'l...</td>\n",
" <td>https://github.com/psal/jstylo</td>\n",
" <td>1559</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>533</th>\n",
" <td>451</td>\n",
" <td>tool</td>\n",
" <td>JSAN</td>\n",
" <td>None</td>\n",
" <td>The Integrated JStylo and Anonymouth Package. ...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 493, 'name': '18th Connect',...</td>\n",
" <td>[{'id': 4037, 'type': {'code': 'keyword', 'lab...</td>\n",
" <td>https://github.com/psal/jstylo</td>\n",
" <td>1557</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>697</th>\n",
" <td>1186</td>\n",
" <td>tool</td>\n",
" <td>NodeXL</td>\n",
" <td>None</td>\n",
" <td>NodeXL is a free, open source tool for generat...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 832, 'name': 'M. Smith, N. M...</td>\n",
" <td>[{'id': 11766, 'type': {'code': 'license-type'...</td>\n",
" <td>http://nodexl.codeplex.com/</td>\n",
" <td>482</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>854</th>\n",
" <td>560</td>\n",
" <td>tool</td>\n",
" <td>Python Tools for Text-Analysis</td>\n",
" <td>None</td>\n",
" <td>This is a set of simple, free tools for analyz...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 424, 'name': 'David L. Hoove...</td>\n",
" <td>[{'id': 5060, 'type': {'code': 'thumbnail', 'l...</td>\n",
" <td>https://wp.nyu.edu/exceltextanalysis/python_to...</td>\n",
" <td>1507</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>947</th>\n",
" <td>1136</td>\n",
" <td>tool</td>\n",
" <td>SentiStrength</td>\n",
" <td>None</td>\n",
" <td>SentiStrength is a tool for sentiment analysis...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 799, 'name': 'Thelwall, M., ...</td>\n",
" <td>[{'id': 11290, 'type': {'code': 'keyword', 'la...</td>\n",
" <td>http://sentistrength.wlv.ac.uk/</td>\n",
" <td>453</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>948</th>\n",
" <td>378</td>\n",
" <td>tool</td>\n",
" <td>SentiStrength</td>\n",
" <td>None</td>\n",
" <td>It is a sentiment analysis program. Automatic ...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 493, 'name': '18th Connect',...</td>\n",
" <td>[{'id': 3210, 'type': {'code': 'thumbnail', 'l...</td>\n",
" <td>http://sentistrength.wlv.ac.uk/</td>\n",
" <td>1564</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1187</th>\n",
" <td>607</td>\n",
" <td>tool</td>\n",
" <td>UCINET</td>\n",
" <td>None</td>\n",
" <td>UCINET is a social media analysis set for soft...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 459, 'name': 'Borgatti, S.P....</td>\n",
" <td>[{'id': 5501, 'type': {'code': 'tadirah-method...</td>\n",
" <td>https://sites.google.com/site/ucinetsoftware/home</td>\n",
" <td>576</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>476</th>\n",
" <td>165</td>\n",
" <td>tool</td>\n",
" <td>igraph</td>\n",
" <td>None</td>\n",
" <td>igraph is an open source collection of network...</td>\n",
" <td>[]</td>\n",
" <td>[{'actor': {'id': 147, 'name': 'Gábor Csárdi, ...</td>\n",
" <td>[{'id': 771, 'type': {'code': 'tadirah-methods...</td>\n",
" <td>http://igraph.org/</td>\n",
" <td>623</td>\n",
" <td>...</td>\n",
" <td>ingested</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>[]</td>\n",
" <td>None</td>\n",
" <td>1.0</td>\n",
" <td>TAPoR</td>\n",
" <td>http://tapor.ca</td>\n",
" <td>http://tapor.ca/tools/{source-item-id}</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9 rows × 23 columns</p>\n",
"</div>"
],
"text/plain": [
" id category label version \\\n",
"326 335 tool EVI-LINHD None \n",
"532 776 tool JSAN None \n",
"533 451 tool JSAN None \n",
"697 1186 tool NodeXL None \n",
"854 560 tool Python Tools for Text-Analysis None \n",
"947 1136 tool SentiStrength None \n",
"948 378 tool SentiStrength None \n",
"1187 607 tool UCINET None \n",
"476 165 tool igraph None \n",
"\n",
" description licenses \\\n",
"326 EVI-LINHD is a free and open-source cloud plat... [] \n",
"532 The Integrated JStylo and Anonymouth Package. ... [] \n",
"533 The Integrated JStylo and Anonymouth Package. ... [] \n",
"697 NodeXL is a free, open source tool for generat... [] \n",
"854 This is a set of simple, free tools for analyz... [] \n",
"947 SentiStrength is a tool for sentiment analysis... [] \n",
"948 It is a sentiment analysis program. Automatic ... [] \n",
"1187 UCINET is a social media analysis set for soft... [] \n",
"476 igraph is an open source collection of network... [] \n",
"\n",
" contributors \\\n",
"326 [{'actor': {'id': 275, 'name': 'Elena González... \n",
"532 [{'actor': {'id': 493, 'name': '18th Connect',... \n",
"533 [{'actor': {'id': 493, 'name': '18th Connect',... \n",
"697 [{'actor': {'id': 832, 'name': 'M. Smith, N. M... \n",
"854 [{'actor': {'id': 424, 'name': 'David L. Hoove... \n",
"947 [{'actor': {'id': 799, 'name': 'Thelwall, M., ... \n",
"948 [{'actor': {'id': 493, 'name': '18th Connect',... \n",
"1187 [{'actor': {'id': 459, 'name': 'Borgatti, S.P.... \n",
"476 [{'actor': {'id': 147, 'name': 'Gábor Csárdi, ... \n",
"\n",
" properties \\\n",
"326 [{'id': 2702, 'type': {'code': 'thumbnail', 'l... \n",
"532 [{'id': 7310, 'type': {'code': 'thumbnail', 'l... \n",
"533 [{'id': 4037, 'type': {'code': 'keyword', 'lab... \n",
"697 [{'id': 11766, 'type': {'code': 'license-type'... \n",
"854 [{'id': 5060, 'type': {'code': 'thumbnail', 'l... \n",
"947 [{'id': 11290, 'type': {'code': 'keyword', 'la... \n",
"948 [{'id': 3210, 'type': {'code': 'thumbnail', 'l... \n",
"1187 [{'id': 5501, 'type': {'code': 'tadirah-method... \n",
"476 [{'id': 771, 'type': {'code': 'tadirah-methods... \n",
"\n",
" accessibleAt sourceItemId ... \\\n",
"326 http://www.evilinhd.com/ 594 ... \n",
"532 https://github.com/psal/jstylo 1559 ... \n",
"533 https://github.com/psal/jstylo 1557 ... \n",
"697 http://nodexl.codeplex.com/ 482 ... \n",
"854 https://wp.nyu.edu/exceltextanalysis/python_to... 1507 ... \n",
"947 http://sentistrength.wlv.ac.uk/ 453 ... \n",
"948 http://sentistrength.wlv.ac.uk/ 1564 ... \n",
"1187 https://sites.google.com/site/ucinetsoftware/home 576 ... \n",
"476 http://igraph.org/ 623 ... \n",
"\n",
" status comments olderVersions newerVersions repository source.id \\\n",
"326 ingested [] [] [] None 1.0 \n",
"532 ingested [] [] [] None 1.0 \n",
"533 ingested [] [] [] None 1.0 \n",
"697 ingested [] [] [] None 1.0 \n",
"854 ingested [] [] [] None 1.0 \n",
"947 ingested [] [] [] None 1.0 \n",
"948 ingested [] [] [] None 1.0 \n",
"1187 ingested [] [] [] None 1.0 \n",
"476 ingested [] [] [] None 1.0 \n",
"\n",
" source.label source.url source.urlTemplate \\\n",
"326 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"532 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"533 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"697 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"854 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"947 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"948 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"1187 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"476 TAPoR http://tapor.ca http://tapor.ca/tools/{source-item-id} \n",
"\n",
" source \n",
"326 NaN \n",
"532 NaN \n",
"533 NaN \n",
"697 NaN \n",
"854 NaN \n",
"947 NaN \n",
"948 NaN \n",
"1187 NaN \n",
"476 NaN \n",
"\n",
"[9 rows x 23 columns]"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_p_d=df_tool_flat[df_tool_flat.duplicated(['label', 'accessibleAt'])].sort_values('label')\n",
"test_p_d"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"#df_tool_flat.dtypes "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 https://github.com/WebEcologyProject/140kit\n",
"1 \n",
"2 http://www.4d.com/products/4d2004/4dstandarded...\n",
"3 http://80legs.com/\n",
"4 https://960.gs/\n",
" ... \n",
"1348 \n",
"1349 https://www.zotero.org/\n",
"1350 http://zotfile.com/\n",
"1351 https://wordpress.org/plugins/zotpress/\n",
"1352 http://www.zubrag.com/tools/html-tags-stripper...\n",
"Name: accessibleAt, Length: 1353, dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_tool_flat['accessibleAt'].replace(np.nan, \"\", inplace=True)\n",
"df_tool_flat['accessibleAt'].replace(r'^\\s*$', \"\", regex=True)\n",
"#df_tool_flat['accessibleAt'].isnull()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"#dataframe for MP properties\n",
"df_prop_data = pd.json_normalize(data=df_tool_all['tools'], record_path='properties', meta=['label'])\n",
"#df_prop_data.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"#dataframe for MP contributors\n",
"df_contr_data = pd.json_normalize(data=df_tool_all['tools'], record_path='contributors', meta=['label'])\n",
"#df_contr_data.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"df_mpdatasets=df_tool_flat.join(df_contr_data.set_index('label'), on='label')\n",
"#df_mpdatasets.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Comparing TAPoR dataset and MP datasets to find import issues"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"906 https://github.com/WebEcologyProject/140kit\n",
"334 \n",
"688 http://www.4d.com/products/4d2004/4dstandarded...\n",
"1156 http://80legs.com/\n",
"770 https://960.gs/\n",
" ... \n",
"816 http://www.jasondavies.com/wordtree/\n",
"520 http://code.google.com/p/word2vec/\n",
"815 https://code.google.com/p/wordsimilarity/\n",
"702 http://www.tei-c.org/Vault/MembersMeetings/200...\n",
"45 \n",
"Name: url, Length: 1359, dtype: object"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#create a dataframe with a subset of columns for the TAPoR dataset\n",
"df_tapor_worksub=df_db_tools.sort_values('name')[['name', 'url']].drop_duplicates()\n",
"df_tapor_worksub['url'].replace(np.nan, \"\", inplace=True)\n",
"df_tapor_worksub['url'].replace(r\"\\s+\", np.nan, regex=True)\n",
"#df_tapor_worksub['url'].isnull()\n",
"#df_tapor_worksub.tail(30)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"#create a dataframe with a subset of columns for the MP dataset and change column names to have homogenous formats\n",
"df_mp_taporsub= df_tool_flat[df_tool_flat['source.label'] == 'TAPoR']\n",
"df_mp_worksub=df_mp_taporsub.sort_values('label')[['label','accessibleAt']].drop_duplicates()\n",
"df_mp_worksub=df_mp_worksub.rename(columns={\"label\": \"name\", 'accessibleAt':'url'})\n",
"#df_mp_worksub['url'].isnull()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"# define a function that compares dataframes\n",
"def dataframe_difference(df1, df2, which):\n",
" \"\"\"Find rows which are different between two DataFrames.\"\"\"\n",
" comparison_df = df1.merge(df2,\n",
" indicator=True,\n",
" how='outer')\n",
" if which is None:\n",
" diff_df = comparison_df[comparison_df['_merge'] != 'both']\n",
" else:\n",
" diff_df = comparison_df[comparison_df['_merge'] == which]\n",
" diff_df.to_csv('data/diff.csv')\n",
" return diff_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Considering values for 'name' and 'url', there are 1260 tool descriptions in MP dataset that are identical to descriptions in TAPoR dataset"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342],\n",
" dtype='int64', length=1260)"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_both=dataframe_difference(df_mp_worksub, df_tapor_worksub, 'both')\n",
"df_both.index"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>url</th>\n",
" <th>_merge</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>140kit</td>\n",
" <td>https://github.com/WebEcologyProject/140kit</td>\n",
" <td>both</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3DVIA Virtools</td>\n",
" <td></td>\n",
" <td>both</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4th Dimension</td>\n",
" <td>http://www.4d.com/products/4d2004/4dstandarded...</td>\n",
" <td>both</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>80legs</td>\n",
" <td>http://80legs.com/</td>\n",
" <td>both</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>960 Grid System</td>\n",
" <td>https://960.gs/</td>\n",
" <td>both</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name url _merge\n",
"0 140kit https://github.com/WebEcologyProject/140kit both\n",
"1 3DVIA Virtools both\n",
"2 4th Dimension http://www.4d.com/products/4d2004/4dstandarded... both\n",
"3 80legs http://80legs.com/ both\n",
"4 960 Grid System https://960.gs/ both"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_both.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Considering values for 'name' and 'url', there are 83 tool descriptions in MP dataset but not in TAPoR dataset"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>url</th>\n",
" <th>_merge</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>142</th>\n",
" <td>CONDOR</td>\n",
" <td>http://www.ickn.org/ckntools.html</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>144</th>\n",
" <td>CQPweb</td>\n",
" <td>https://cqpweb.lancs.ac.uk/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>CSV Sort</td>\n",
" <td>https://bitbucket.org/richardpenman/csvsort</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>CasualConc</td>\n",
" <td>https://sites.google.com/site/casualconc/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>161</th>\n",
" <td>Chartle</td>\n",
" <td></td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>163</th>\n",
" <td>Chorus</td>\n",
" <td>http://chorusanalytics.co.uk/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>165</th>\n",
" <td>Chronos Timeline</td>\n",
" <td>http://hyperstudio.mit.edu/software/chronos-ti...</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>180</th>\n",
" <td>Code Bubbles</td>\n",
" <td>http://cs.brown.edu/~spr/codebubbles/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>184</th>\n",
" <td>Colaboratory</td>\n",
" <td>https://colab.research.google.com/notebooks/we...</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>ContaWords</td>\n",
" <td>http://contawords.iula.upf.edu/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>215</th>\n",
" <td>Contropedia</td>\n",
" <td>http://contropedia.net/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>220</th>\n",
" <td>Cowo</td>\n",
" <td>https://github.com/seinecle/Cowo/blob/master/R...</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>223</th>\n",
" <td>Critic Markup</td>\n",
" <td>http://criticmarkup.com/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>228</th>\n",
" <td>Cytoscape</td>\n",
" <td>http://www.cytoscape.org/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254</th>\n",
" <td>Density Design - Knot</td>\n",
" <td>http://www.densitydesign.org/research/knot/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>255</th>\n",
" <td>DfR Browser</td>\n",
" <td>https://agoldst.github.io/dfr-browser/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>300</th>\n",
" <td>EVI-LINHD</td>\n",
" <td>http://www.evilinhd.com/</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>307</th>\n",
" <td>EgoWeb 2.0</td>\n",
" <td>http://www.rand.org/methods/egoweb.html</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>332</th>\n",
" <td>Facepager</td>\n",
" <td>https://github.com/strohne/Facepager</td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>342</th>\n",
" <td>Find Locations from A Text (Named-Entity Recog...</td>\n",
" <td></td>\n",
" <td>left_only</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name \\\n",
"142 CONDOR \n",
"144 CQPweb \n",
"146 CSV Sort \n",
"156 CasualConc \n",
"161 Chartle \n",
"163 Chorus \n",
"165 Chronos Timeline \n",
"180 Code Bubbles \n",
"184 Colaboratory \n",
"214 ContaWords \n",
"215 Contropedia \n",
"220 Cowo \n",
"223 Critic Markup \n",
"228 Cytoscape \n",
"254 Density Design - Knot \n",
"255 DfR Browser \n",
"300 EVI-LINHD \n",
"307 EgoWeb 2.0 \n",
"332 Facepager \n",
"342 Find Locations from A Text (Named-Entity Recog... \n",
"\n",
" url _merge \n",
"142 http://www.ickn.org/ckntools.html left_only \n",
"144 https://cqpweb.lancs.ac.uk/ left_only \n",
"146 https://bitbucket.org/richardpenman/csvsort left_only \n",
"156 https://sites.google.com/site/casualconc/ left_only \n",
"161 left_only \n",
"163 http://chorusanalytics.co.uk/ left_only \n",
"165 http://hyperstudio.mit.edu/software/chronos-ti... left_only \n",
"180 http://cs.brown.edu/~spr/codebubbles/ left_only \n",
"184 https://colab.research.google.com/notebooks/we... left_only \n",
"214 http://contawords.iula.upf.edu/ left_only \n",
"215 http://contropedia.net/ left_only \n",
"220 https://github.com/seinecle/Cowo/blob/master/R... left_only \n",
"223 http://criticmarkup.com/ left_only \n",
"228 http://www.cytoscape.org/ left_only \n",
"254 http://www.densitydesign.org/research/knot/ left_only \n",
"255 https://agoldst.github.io/dfr-browser/ left_only \n",
"300 http://www.evilinhd.com/ left_only \n",
"307 http://www.rand.org/methods/egoweb.html left_only \n",
"332 https://github.com/strohne/Facepager left_only \n",
"342 left_only "
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#tools in TAPoR but not in MP datset\n",
"df_lo=dataframe_difference(df_mp_worksub.sort_values('name'), df_tapor_worksub.sort_values('name'), 'left_only')\n",
"# see 20 records in MP dataset but not in TAPoR\n",
"df_lo.head(20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Comparing values for 'name' and 'url', there are 99 tool descriptions in TAPoR dataset but not in MP dataset"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>url</th>\n",
" <th>_merge</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1343</th>\n",
" <td>ANNIS</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1344</th>\n",
" <td>Adobe Flash</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1345</th>\n",
" <td>Ainm.ie</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1346</th>\n",
" <td>Alpheios</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1347</th>\n",
" <td>Anastasia</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1348</th>\n",
" <td>ArcExplorer</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1349</th>\n",
" <td>AroniSmartIntelligence™</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1350</th>\n",
" <td>Aruspix</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1351</th>\n",
" <td>BASE</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1352</th>\n",
" <td>Basement Waterproofing: Tips and Instructions</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1353</th>\n",
" <td>Berkeley Parser</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1354</th>\n",
" <td>CATMA (Computer Aided Textual Markup and Analy...</td>\n",
" <td>http://www.catma.de/</td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1355</th>\n",
" <td>Canva \"The Amazingly Simple Graphic Design Sof...</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1356</th>\n",
" <td>Chicken</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1357</th>\n",
" <td>CloudConvert</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1358</th>\n",
" <td>Collocate</td>\n",
" <td>http://</td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1359</th>\n",
" <td>Commentpress</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1360</th>\n",
" <td>CoolTool NeuroLab</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1361</th>\n",
" <td>Datapress</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1362</th>\n",
" <td>Delicious</td>\n",
" <td></td>\n",
" <td>right_only</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name url \\\n",
"1343 ANNIS \n",
"1344 Adobe Flash \n",
"1345 Ainm.ie \n",
"1346 Alpheios \n",
"1347 Anastasia \n",
"1348 ArcExplorer \n",
"1349 AroniSmartIntelligence™ \n",
"1350 Aruspix \n",
"1351 BASE \n",
"1352 Basement Waterproofing: Tips and Instructions \n",
"1353 Berkeley Parser \n",
"1354 CATMA (Computer Aided Textual Markup and Analy... http://www.catma.de/ \n",
"1355 Canva \"The Amazingly Simple Graphic Design Sof... \n",
"1356 Chicken \n",
"1357 CloudConvert \n",
"1358 Collocate http:// \n",
"1359 Commentpress \n",
"1360 CoolTool NeuroLab \n",
"1361 Datapress \n",
"1362 Delicious \n",
"\n",
" _merge \n",
"1343 right_only \n",
"1344 right_only \n",
"1345 right_only \n",
"1346 right_only \n",
"1347 right_only \n",
"1348 right_only \n",
"1349 right_only \n",
"1350 right_only \n",
"1351 right_only \n",
"1352 right_only \n",
"1353 right_only \n",
"1354 right_only \n",
"1355 right_only \n",
"1356 right_only \n",
"1357 right_only \n",
"1358 right_only \n",
"1359 right_only \n",
"1360 right_only \n",
"1361 right_only \n",
"1362 right_only "
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Tools in MP dataset but not in TAPoR\n",
"df_ro=dataframe_difference(df_mp_worksub.sort_values('name'), df_tapor_worksub.sort_values('name'), 'right_only')\n",
"df_ro.head(20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Distribution of items in TAPoR dataset by 'last_updated' value\n",
"\n",
"Check the content of the field 'last_update' for TAPoR dataset descriptions. This value *seems* the date when a description of a tool has been updated the last time.\n"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>url</th>\n",
" <th>last_updated</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>423</th>\n",
" <td>List Words - HTML (TAPoRware)</td>\n",
" <td>http://taporware.ualberta.ca/~taporware/htmlTo...</td>\n",
" <td>2011-11-27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>424</th>\n",
" <td>List Words - XML (TAPoRware)</td>\n",
" <td>http://taporware.ualberta.ca/~taporware/xmlToo...</td>\n",
" <td>2011-11-27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>425</th>\n",
" <td>List Words - Plain Text (TAPoRware)</td>\n",
" <td>http://taporware.ualberta.ca/~taporware/textTo...</td>\n",
" <td>2011-11-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>426</th>\n",
" <td>List Tags - HTML (TAPoRware)</td>\n",
" <td>http://taporware.ualberta.ca/~taporware/htmlTo...</td>\n",
" <td>2011-11-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>427</th>\n",
" <td>List XML Elements (TAPoRware)</td>\n",
" <td>http://taporware.ualberta.ca/~taporware/xmlToo...</td>\n",
" <td>2011-11-28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name \\\n",
"423 List Words - HTML (TAPoRware) \n",
"424 List Words - XML (TAPoRware) \n",
"425 List Words - Plain Text (TAPoRware) \n",
"426 List Tags - HTML (TAPoRware) \n",
"427 List XML Elements (TAPoRware) \n",
"\n",
" url last_updated \n",
"423 http://taporware.ualberta.ca/~taporware/htmlTo... 2011-11-27 \n",
"424 http://taporware.ualberta.ca/~taporware/xmlToo... 2011-11-27 \n",
"425 http://taporware.ualberta.ca/~taporware/textTo... 2011-11-28 \n",
"426 http://taporware.ualberta.ca/~taporware/htmlTo... 2011-11-28 \n",
"427 http://taporware.ualberta.ca/~taporware/xmlToo... 2011-11-28 "
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools['correctdata']=pd.to_datetime(df_db_tools['last_updated'])\n",
"df_db_tools['justdata'] = df_db_tools['correctdata'].dt.year\n",
"df_reg_tm_sorted=df_db_tools.sort_values('last_updated')\n",
"df_reg_tools_sub=df_reg_tm_sorted[['name', 'url', 'last_updated']]\n",
"df_reg_tools_sub.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Number of tools by year their description has been updated')"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, ax1 = plt.subplots(nrows=1, figsize=(15,6))\n",
"df_reg_tm_sorted.justdata.value_counts().reindex(sorted(df_reg_tm_sorted.justdata.value_counts().index)).plot(ax=ax1)\n",
"ax1.set_title('Number of tools by year their description has been updated', fontsize=15)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check URL in TAPoR dataset\n",
"In TAPoR dataset there are descriptions where the URL of a Tool is not provided"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"name 136\n",
"url 136\n",
"last_updated 136\n",
"dtype: int64"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_reg_tools_sub_emurl=df_reg_tools_sub[df_reg_tools_sub['url'] == '']\n",
"#print(\"number of record with missed URL in TAPoR dataset:\")\n",
"df_reg_tools_sub_emurl.count()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Int64Index([423, 446, 444, 443, 442, 441, 440, 439, 438, 437,\n",
" ...\n",
" 413, 414, 415, 416, 417, 418, 419, 420, 421, 422],\n",
" dtype='int64', length=1227)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_reg_tools_sub_whurl=df_reg_tools_sub[df_reg_tools_sub['url'] != '']\n",
"df_reg_tools_sub_whurl.index"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"#df_reg_tools_sub.head()\n",
"#for column in df_reg_tools_sub[['name', 'url']]:\n",
"# # Select column contents by column name using [] operator\n",
"# columnSeriesObj = df_reg_tools_sub[column]\n",
"# print('Colunm Name : ', column)\n",
"# print('Column Contents : ', columnSeriesObj.values)\n",
"df_urls=df_reg_tools_sub_whurl.url.values\n",
"#df_urls"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>url</th>\n",
" <th>status</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>test</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>http://taporware.ualberta.ca/~taporware/htmlTo...</td>\n",
" <td>404.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>http://taporware.ualberta.ca/~taporware/textTo...</td>\n",
" <td>404.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>http://taporware.ualberta.ca/~taporware/htmlTo...</td>\n",
" <td>404.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>http://taporware.ualberta.ca/~taporware/textTo...</td>\n",
" <td>404.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" url status\n",
"0 test 1.0\n",
"1 http://taporware.ualberta.ca/~taporware/htmlTo... 404.0\n",
"2 http://taporware.ualberta.ca/~taporware/textTo... 404.0\n",
"3 http://taporware.ualberta.ca/~taporware/htmlTo... 404.0\n",
"4 http://taporware.ualberta.ca/~taporware/textTo... 404.0"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = {'url': ['test'],'status': [1]}\n",
"df_http_status = pd.DataFrame (data, columns = ['url','status'])\n",
"import requests\n",
"import re\n",
"regex = re.compile(\n",
" r'^(?:http|ftp)s?://' # http:// or https://\n",
" r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\\.)+(?:[A-Z]{2,6}\\.?|[A-Z0-9-]{2,}\\.?)|' #domain...\n",
" r'localhost|' #localhost...\n",
" r'\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})' # ...or ip\n",
" r'(?::\\d+)?' # optional port\n",
" r'(?:/?|[/?]\\S+)$', re.IGNORECASE)\n",
"\n",
"\n",
"for var in df_urls:\n",
" # print(var)\n",
" if ( var != \"\" and var!=None and re.match(regex, var)):\n",
" try:\n",
" r =requests.get(var,timeout=8)\n",
" #print(\"result: \"+var+ \" \",r.status_code)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(r.status_code)}, ignore_index=True)\n",
" except requests.exceptions.ConnectionError:\n",
" # print(var)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(503)}, ignore_index=True)\n",
" except requests.exceptions.ConnectTimeout:\n",
" # print(var)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(408)}, ignore_index=True)\n",
" except requests.exceptions.ReadTimeout:\n",
" # print(var)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(408)}, ignore_index=True)\n",
" except requests.exceptions.RequestException:\n",
" # print(var)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(500)}, ignore_index=True)\n",
" except TypeError:\n",
" # print(var)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(400)}, ignore_index=True)\n",
" else:\n",
" # print(var ,0)\n",
" df_http_status = df_http_status.append({'url': var, 'status': int(400)}, ignore_index=True)\n",
"df_http_status.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The HTTP result status values for URL in TAPoR dataset descriptions\n",
"\n",
"The table below shows the HTTP Status code (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) obtained when 'clicking' on URL of tool descriptions of TAPoR dataset.\n",
"\n",
"There is a significant number of URLs that seems not correct (status 404, 503, 500, 508....)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"200.0 652\n",
"400.0 442\n",
"404.0 83\n",
"503.0 25\n",
"403.0 11\n",
"406.0 7\n",
"408.0 3\n",
"500.0 2\n",
"502.0 1\n",
"420.0 1\n",
"Name: status, dtype: int64"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_http_status_sub=df_http_status[df_http_status['status'] != 1]\n",
"df_db_st = df_http_status_sub['status'].value_counts()\n",
"df_db_st.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## TAPoR dataset 'creators' \n",
"There are 164 descriptions in TAPoR dataset that don't have values in *creators_name* field, and there are 924 different creators. \n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Int64Index([649, 686, 697, 701, 706, 719, 733, 736, 746, 765,\n",
" ...\n",
" 405, 407, 408, 410, 412, 414, 416, 417, 420, 422],\n",
" dtype='int64', length=164)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools_na=df_db_tools[df_db_tools['creators_name'] == ''].sort_values('last_updated')\n",
"df_db_tools_na.index"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"924"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#the number of creators\n",
"len(df_db_tools['creators_name'].unique())-1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"df_db_tools.loc[df_db_tools['creators_name']=='','creators_name']='n/a'\n",
"df_db_tech_NoCoT = df_db_tools['creators_name'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"df_db_tech_NoCoT.head(20).plot.barh(figsize=(10,7), ax=ax)\n",
"ax.set_title('Number of tools by creators names (Top 10)')\n",
"ax.set_xlabel('N. of tools')\n",
"ax.set_ylabel('Creators');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of tool descriptions in TAPoR dataset that don't have the related creator email"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"382"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools_naem=df_db_tools[df_db_tools['creators_email'] == ''].sort_values('last_updated')\n",
"#df_db_tools_naem.index\n",
"len(df_db_tools_naem)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of tool description in TAPoR dataset that don't have the related creator URL"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"171"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools_nau=df_db_tools[df_db_tools['creators_url'] == ''].sort_values('last_updated')\n",
"len(df_db_tools_nau)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ------ "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"df_db_tech=pd.read_sql_query('select t.id, t.name, t.detail, t.creators_name, t.last_updated, at.name as \"attributetype\", av.name as\"attribute\", tags.text as \"tag\" from TaPOR.tools as t, TaPOR.attribute_values as av, TaPOR.tool_attributes as ta, TaPOR.attribute_types as at, TaPOR.tags as tags, TaPOR.tool_tags as tota where t.is_approved=1 and t.id=ta.tool_id and t.id=tota.tool_id and tags.id=tota.tag_id and ta.attribute_value_id=av.id and ta.attribute_type_id=at.id', connection)\n",
"#df_db_tech=pd.read_sql_table('tools', connection)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"#df_db_tech.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RangeIndex(start=0, stop=43845, step=1)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tech.index"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['id', 'name', 'detail', 'creators_name', 'last_updated',\n",
" 'attributetype', 'attribute', 'tag'],\n",
" dtype='object')"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tech.columns"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"df_items=df_db_tech[['id', 'name', 'detail', 'creators_name', 'last_updated']].drop_duplicates()\n",
"#df_items.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Attributes in TAPoR dataset items\n",
"\n",
"The following dataframe shows the list of attribute types defined in TaPOR dataset to charachterize tools"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Type of analysis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Type of license</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Background Processing</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Web Usable</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Ease of Use</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Warning</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Usage</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Tool Family</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Historic Tool (developed before 2005)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Compute Canada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Link to Recipe</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>TaDiRAH Goals</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>TaDiRAH Methods</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name\n",
"0 Type of analysis\n",
"1 Type of license\n",
"2 Background Processing\n",
"3 Web Usable\n",
"4 Ease of Use\n",
"5 Warning\n",
"6 Usage\n",
"7 Tool Family\n",
"8 Historic Tool (developed before 2005)\n",
"9 Compute Canada\n",
"10 Link to Recipe\n",
"11 TaDiRAH Goals\n",
"12 TaDiRAH Methods"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools_toa=pd.read_sql_query('SELECT distinct name FROM TaPOR.attribute_types', connection)\n",
"df_db_tools_toa.head(20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tools with no attribute in TAPoR dataset\n",
"\n",
"The following dataframe shows the main fields of tool descriptions in TAPoR dataset that do not have attribute values"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>creators_name</th>\n",
" <th>url</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>579</td>\n",
" <td>Voyant 2.0: Knots</td>\n",
" <td>Stéfan Sinclair and Geoffrey Rockwell</td>\n",
" <td>http://voyant-tools.org/?view=knots</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>591</td>\n",
" <td>Warc Extractor</td>\n",
" <td>Ryan Chartier &amp; Internet Archive</td>\n",
" <td>https://github.com/recrm/ArchiveTools/blob/mas...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>754</td>\n",
" <td>TAGS https://t.co/T007ezdZoA</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>755</td>\n",
" <td>Multiple enhancements to DiRT Directory (tools...</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>758</td>\n",
" <td>RT : Today's \"dirt\": DiRT now uses TaDiRAH ter...</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>823</td>\n",
" <td>Basement Waterproofing: Tips and Instructions</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1017</td>\n",
" <td>Datapress</td>\n",
" <td>MIT CSAIL</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1063</td>\n",
" <td>WordVenture</td>\n",
" <td>WordNet</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1174</td>\n",
" <td>VoiceThread</td>\n",
" <td>VoiceThread LLC</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1183</td>\n",
" <td>Purdue OWL</td>\n",
" <td>Purdue University Writing Lab, Purdue Universi...</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1352</td>\n",
" <td>Aruspix</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1369</td>\n",
" <td>MMax2</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1377</td>\n",
" <td>Lextek</td>\n",
" <td></td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name \\\n",
"0 579 Voyant 2.0: Knots \n",
"1 591 Warc Extractor \n",
"2 754 TAGS https://t.co/T007ezdZoA \n",
"3 755 Multiple enhancements to DiRT Directory (tools... \n",
"4 758 RT : Today's \"dirt\": DiRT now uses TaDiRAH ter... \n",
"5 823 Basement Waterproofing: Tips and Instructions \n",
"6 1017 Datapress \n",
"7 1063 WordVenture \n",
"8 1174 VoiceThread \n",
"9 1183 Purdue OWL \n",
"10 1352 Aruspix \n",
"11 1369 MMax2 \n",
"12 1377 Lextek \n",
"\n",
" creators_name \\\n",
"0 Stéfan Sinclair and Geoffrey Rockwell \n",
"1 Ryan Chartier & Internet Archive \n",
"2 \n",
"3 \n",
"4 \n",
"5 \n",
"6 MIT CSAIL \n",
"7 WordNet \n",
"8 VoiceThread LLC \n",
"9 Purdue University Writing Lab, Purdue Universi... \n",
"10 \n",
"11 \n",
"12 \n",
"\n",
" url \n",
"0 http://voyant-tools.org/?view=knots \n",
"1 https://github.com/recrm/ArchiveTools/blob/mas... \n",
"2 None \n",
"3 None \n",
"4 None \n",
"5 None \n",
"6 None \n",
"7 None \n",
"8 None \n",
"9 None \n",
"10 None \n",
"11 None \n",
"12 None "
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_tools_noatt=pd.read_sql_query('select distinct tools.id, tools.name, tools.creators_name, tools.url from TaPOR.tools where tools.is_approved=1 and tools.id not in (select distinct TaPOR.tool_attributes.tool_id from TaPOR.tool_attributes)', connection)\n",
"df_db_tools_noatt.head(19)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Type of Licenses in TAPoR dataset items"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Int64Index([ 8, 40, 44, 108, 170, 306, 330, 344, 362,\n",
" 380,\n",
" ...\n",
" 43679, 43728, 43730, 43751, 43762, 43779, 43814, 43816, 43821,\n",
" 43824],\n",
" dtype='int64', length=1024)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_sub=df_db_tech[['id', 'name', 'detail', 'creators_name', 'last_updated', 'attributetype', 'attribute']]\n",
"df_to=df_db_sub[df_db_sub['attributetype'] == 'Type of license'].drop_duplicates()\n",
"df_to.index"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Free 470\n",
"Open Source 256\n",
"Closed Source 195\n",
"Commercial 79\n",
"Creative Commons 22\n",
"Shareware 2\n",
"Name: attribute, dtype: int64"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_lic = df_to['attribute'].value_counts()\n",
"df_db_lic.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"df_db_lic.plot(kind='bar', figsize=(15,6), x='licences', y='tools',)\n",
"plt.grid(alpha=0.6)\n",
"ax.yaxis.set_label_text(\"\")\n",
"ax.set_title(\"Number of Tools by License\", fontsize=15)\n",
"ax.set_xlabel('License', fontsize=14)\n",
"ax.set_ylabel('N of Tools', fontsize=14);\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"#df_db_tech.loc[df_db_tech['country']=='', 'country']='N/A'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## *Type of analysis* in TAPoR dataset items\n",
"\n",
"A tool description can have more than one value for *Type of analysis* (i.e. a tool can perform one or more type of analysis)"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>detail</th>\n",
" <th>creators_name</th>\n",
" <th>last_updated</th>\n",
" <th>attributetype</th>\n",
" <th>attribute</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>43724</th>\n",
" <td>1499</td>\n",
" <td>iPhoto</td>\n",
" <td>&lt;p&gt;iPhoto is a digital photograph manipulation...</td>\n",
" <td>Apple</td>\n",
" <td>2018-10-12</td>\n",
" <td>Type of analysis</td>\n",
" <td>Organizing</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43726</th>\n",
" <td>1499</td>\n",
" <td>iPhoto</td>\n",
" <td>&lt;p&gt;iPhoto is a digital photograph manipulation...</td>\n",
" <td>Apple</td>\n",
" <td>2018-10-12</td>\n",
" <td>Type of analysis</td>\n",
" <td>Storage</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43748</th>\n",
" <td>1500</td>\n",
" <td>Google 3D Warehouse</td>\n",
" <td>&lt;p&gt;A collection of free-to-download 3D models ...</td>\n",
" <td>Google</td>\n",
" <td>2018-11-06</td>\n",
" <td>Type of analysis</td>\n",
" <td>Collaboration</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43749</th>\n",
" <td>1500</td>\n",
" <td>Google 3D Warehouse</td>\n",
" <td>&lt;p&gt;A collection of free-to-download 3D models ...</td>\n",
" <td>Google</td>\n",
" <td>2018-11-06</td>\n",
" <td>Type of analysis</td>\n",
" <td>Dissemination</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43750</th>\n",
" <td>1500</td>\n",
" <td>Google 3D Warehouse</td>\n",
" <td>&lt;p&gt;A collection of free-to-download 3D models ...</td>\n",
" <td>Google</td>\n",
" <td>2018-11-06</td>\n",
" <td>Type of analysis</td>\n",
" <td>Modeling</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43759</th>\n",
" <td>1501</td>\n",
" <td>SketchUp (Formerly Google SketchUp)</td>\n",
" <td>&lt;p&gt;Google SketchUp is easy-to-use free 3D mode...</td>\n",
" <td>Google</td>\n",
" <td>2018-10-26</td>\n",
" <td>Type of analysis</td>\n",
" <td>Creation</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43760</th>\n",
" <td>1501</td>\n",
" <td>SketchUp (Formerly Google SketchUp)</td>\n",
" <td>&lt;p&gt;Google SketchUp is easy-to-use free 3D mode...</td>\n",
" <td>Google</td>\n",
" <td>2018-10-26</td>\n",
" <td>Type of analysis</td>\n",
" <td>Interpretation</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43761</th>\n",
" <td>1501</td>\n",
" <td>SketchUp (Formerly Google SketchUp)</td>\n",
" <td>&lt;p&gt;Google SketchUp is easy-to-use free 3D mode...</td>\n",
" <td>Google</td>\n",
" <td>2018-10-26</td>\n",
" <td>Type of analysis</td>\n",
" <td>Modeling</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43790</th>\n",
" <td>1502</td>\n",
" <td>GIMP (GNU Image Manipulation Program)</td>\n",
" <td>&lt;p&gt;GIMP is image editing software, much like P...</td>\n",
" <td>GIMP Team</td>\n",
" <td>None</td>\n",
" <td>Type of analysis</td>\n",
" <td>Creation</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43818</th>\n",
" <td>1556</td>\n",
" <td>Reaper</td>\n",
" <td>REAPER is a complete digital audio production ...</td>\n",
" <td>Cockos</td>\n",
" <td>2019-03-24</td>\n",
" <td>Type of analysis</td>\n",
" <td>Creation</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name \\\n",
"43724 1499 iPhoto \n",
"43726 1499 iPhoto \n",
"43748 1500 Google 3D Warehouse \n",
"43749 1500 Google 3D Warehouse \n",
"43750 1500 Google 3D Warehouse \n",
"43759 1501 SketchUp (Formerly Google SketchUp) \n",
"43760 1501 SketchUp (Formerly Google SketchUp) \n",
"43761 1501 SketchUp (Formerly Google SketchUp) \n",
"43790 1502 GIMP (GNU Image Manipulation Program) \n",
"43818 1556 Reaper \n",
"\n",
" detail creators_name \\\n",
"43724 <p>iPhoto is a digital photograph manipulation... Apple \n",
"43726 <p>iPhoto is a digital photograph manipulation... Apple \n",
"43748 <p>A collection of free-to-download 3D models ... Google \n",
"43749 <p>A collection of free-to-download 3D models ... Google \n",
"43750 <p>A collection of free-to-download 3D models ... Google \n",
"43759 <p>Google SketchUp is easy-to-use free 3D mode... Google \n",
"43760 <p>Google SketchUp is easy-to-use free 3D mode... Google \n",
"43761 <p>Google SketchUp is easy-to-use free 3D mode... Google \n",
"43790 <p>GIMP is image editing software, much like P... GIMP Team \n",
"43818 REAPER is a complete digital audio production ... Cockos \n",
"\n",
" last_updated attributetype attribute \n",
"43724 2018-10-12 Type of analysis Organizing \n",
"43726 2018-10-12 Type of analysis Storage \n",
"43748 2018-11-06 Type of analysis Collaboration \n",
"43749 2018-11-06 Type of analysis Dissemination \n",
"43750 2018-11-06 Type of analysis Modeling \n",
"43759 2018-10-26 Type of analysis Creation \n",
"43760 2018-10-26 Type of analysis Interpretation \n",
"43761 2018-10-26 Type of analysis Modeling \n",
"43790 None Type of analysis Creation \n",
"43818 2019-03-24 Type of analysis Creation "
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_ta=df_db_sub[df_db_sub['attributetype'] == 'Type of analysis'].drop_duplicates()\n",
"df_to_ta.tail(10)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Analysis 434\n",
"Visualization 236\n",
"Content Analysis 185\n",
"Search 139\n",
"Natural Language Processing 125\n",
"Discovering 124\n",
"Capture 113\n",
"Gathering 97\n",
"Publishing 92\n",
"Dissemination 91\n",
"Enrichment 90\n",
"Annotating 83\n",
"Collaboration 80\n",
"Organizing 71\n",
"Creation 52\n",
"Uncategorized 49\n",
"Storage 40\n",
"Web development 39\n",
"Modeling 25\n",
"Programming 22\n",
"Interpretation 18\n",
"RDF 12\n",
"Name: attribute, dtype: int64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_db_a = df_to_ta['attribute'].value_counts()\n",
"df_db_a.head(25)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"df_db_a.plot(kind='bar', figsize=(15,6), x='analysys', y='tools',)\n",
"plt.grid(alpha=0.6)\n",
"ax.yaxis.set_label_text(\"\")\n",
"ax.set_title(\"Number of Tools by Type of Analysis\", fontsize=15)\n",
"ax.set_xlabel('Type of Analysis', fontsize=14)\n",
"ax.set_ylabel('N of Tools', fontsize=14);\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## *Tool families* in TAPoR dataset items"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"TAPoRware 55\n",
"Voyant 18\n",
"Digital Methods Initiative 12\n",
"Stanford NLP 11\n",
"SEASR 8\n",
"SIMILE Widgets 6\n",
"EURAC 5\n",
"CNRTL 5\n",
"Visualizing Literature 5\n",
"Book Genome Project 5\n",
"CHNM 4\n",
"Orlando 3\n",
"Laurence Anthony 3\n",
"Stanford HCI Group 2\n",
"Stanford Vis Group 2\n",
"Scholars' Lab 2\n",
"Name: attribute, dtype: int64"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_tf=df_db_sub[df_db_sub['attributetype'] == 'Tool Family'].drop_duplicates()\n",
"df_to_tf = df_to_tf['attribute'].value_counts()\n",
"df_to_tf.head(20)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"df_to_tf.plot(kind='bar', figsize=(15,6), x='analysys', y='tools',)\n",
"plt.grid(alpha=0.6)\n",
"ax.yaxis.set_label_text(\"\")\n",
"ax.set_title(\"Number of Tools by Tool Families\", fontsize=15)\n",
"ax.set_xlabel('Tool Family', fontsize=14)\n",
"ax.set_ylabel('N of Tools', fontsize=14);\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## *Web Usable* in TAPoR items"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>detail</th>\n",
" <th>creators_name</th>\n",
" <th>last_updated</th>\n",
" <th>attributetype</th>\n",
" <th>attribute</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1</td>\n",
" <td>List Words - HTML (TAPoRware)</td>\n",
" <td>&lt;p&gt;This tool lists words in an HTML document, ...</td>\n",
" <td>Geoffrey Rockwell et. al.</td>\n",
" <td>2011-11-27</td>\n",
" <td>Web Usable</td>\n",
" <td>Run in Browser</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>4</td>\n",
" <td>Wordle</td>\n",
" <td>&lt;p&gt;Wordle is an online toy for generating &lt;a h...</td>\n",
" <td>Jonathan Feinberg</td>\n",
" <td>2018-10-17</td>\n",
" <td>Web Usable</td>\n",
" <td>Run in Browser</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>5</td>\n",
" <td>OrlandoVision (OVis)</td>\n",
" <td>&lt;p&gt;An application for visualizing a specific c...</td>\n",
" <td>The Orlando Project</td>\n",
" <td>2018-11-01</td>\n",
" <td>Web Usable</td>\n",
" <td>Software you Download and Install</td>\n",
" </tr>\n",
" <tr>\n",
" <th>118</th>\n",
" <td>8</td>\n",
" <td>Voyant Cirrus</td>\n",
" <td>&lt;p&gt;Cirrus is a visualization tool that display...</td>\n",
" <td>Stéfan Sinclair and Geoffrey Rockwell</td>\n",
" <td>2018-10-05</td>\n",
" <td>Web Usable</td>\n",
" <td>Run in Browser</td>\n",
" </tr>\n",
" <tr>\n",
" <th>192</th>\n",
" <td>9</td>\n",
" <td>Voyant Links</td>\n",
" <td>&lt;p&gt;Links finds collocates for words and displa...</td>\n",
" <td>Stéfan Sinclair and Geoffrey Rockwell</td>\n",
" <td>2018-09-18</td>\n",
" <td>Web Usable</td>\n",
" <td>Run in Browser</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name \\\n",
"16 1 List Words - HTML (TAPoRware) \n",
"52 4 Wordle \n",
"82 5 OrlandoVision (OVis) \n",
"118 8 Voyant Cirrus \n",
"192 9 Voyant Links \n",
"\n",
" detail \\\n",
"16 <p>This tool lists words in an HTML document, ... \n",
"52 <p>Wordle is an online toy for generating <a h... \n",
"82 <p>An application for visualizing a specific c... \n",
"118 <p>Cirrus is a visualization tool that display... \n",
"192 <p>Links finds collocates for words and displa... \n",
"\n",
" creators_name last_updated attributetype \\\n",
"16 Geoffrey Rockwell et. al. 2011-11-27 Web Usable \n",
"52 Jonathan Feinberg 2018-10-17 Web Usable \n",
"82 The Orlando Project 2018-11-01 Web Usable \n",
"118 Stéfan Sinclair and Geoffrey Rockwell 2018-10-05 Web Usable \n",
"192 Stéfan Sinclair and Geoffrey Rockwell 2018-09-18 Web Usable \n",
"\n",
" attribute \n",
"16 Run in Browser \n",
"52 Run in Browser \n",
"82 Software you Download and Install \n",
"118 Run in Browser \n",
"192 Run in Browser "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_bp=df_db_sub[df_db_sub['attributetype'] == 'Web Usable'].drop_duplicates()\n",
"df_to_bp.head()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Run in Browser 503\n",
"Other 400\n",
"Software you Download and Install 187\n",
"Web Application you Launch 8\n",
"Name: attribute, dtype: int64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_to_bp = df_to_bp['attribute'].value_counts()\n",
"df_to_bp.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"df_to_bp.plot(kind='bar', figsize=(15,6), x='webusable', y='tools',)\n",
"plt.grid(alpha=0.6)\n",
"ax.yaxis.set_label_text(\"\")\n",
"ax.set_title(\"Number of Tools by Web usability\", fontsize=15)\n",
"ax.set_xlabel('Web usable', fontsize=14)\n",
"ax.set_ylabel('N of Tools', fontsize=14);\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ------"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}