{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"id": "da0cc1f9",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from collections import Counter\n",
"import seaborn as sns\n",
"import matplotlib\n",
"font = {'family' : 'Arial',\n",
" 'weight' : 'normal',\n",
" 'size' : 12}\n",
"matplotlib.rc('font', **font)\n",
"import altair as alt\n",
"pd.set_option('display.max_rows', 500)\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "b87e11fb",
"metadata": {},
"outputs": [],
"source": [
"author = pd.read_csv('../data/ht_class/ht_cleaned_author_df.csv')\n",
"paper = pd.read_csv('../data/ht_class/ht_cleaned_paper_df.csv')"
]
},
{
"cell_type": "markdown",
"id": "c86de97a",
"metadata": {},
"source": [
"### Number of publications by year"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "877f7f98",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" Number of Publications | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1990-01-01 | \n",
" 52 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1991-01-01 | \n",
" 50 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1992-01-01 | \n",
" 53 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1993-01-01 | \n",
" 55 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1994-01-01 | \n",
" 53 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year Number of Publications\n",
"0 1990-01-01 52\n",
"1 1991-01-01 50\n",
"2 1992-01-01 53\n",
"3 1993-01-01 55\n",
"4 1994-01-01 53"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pub_num_df = paper.groupby(\n",
" 'Year').size().reset_index(name = 'Number of Publications')\n",
"pub_num_df['Year'] = pd.to_datetime(\n",
" pub_num_df['Year'], format=\"%Y\"\n",
")\n",
"pub_num_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2508935e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" Number of Publications | \n",
"
\n",
" \n",
" \n",
" \n",
" | 27 | \n",
" 2017-01-01 | \n",
" 114 | \n",
"
\n",
" \n",
" | 28 | \n",
" 2018-01-01 | \n",
" 127 | \n",
"
\n",
" \n",
" | 29 | \n",
" 2019-01-01 | \n",
" 129 | \n",
"
\n",
" \n",
" | 30 | \n",
" 2020-01-01 | \n",
" 157 | \n",
"
\n",
" \n",
" | 31 | \n",
" 2021-01-01 | \n",
" 170 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year Number of Publications\n",
"27 2017-01-01 114\n",
"28 2018-01-01 127\n",
"29 2019-01-01 129\n",
"30 2020-01-01 157\n",
"31 2021-01-01 170"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pub_num_df.tail()"
]
},
{
"cell_type": "markdown",
"id": "bae056e1",
"metadata": {},
"source": [
"### Number of unique authors"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "2c94bd33",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"110"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# how many rows miss openalex author id\n",
"author[author['OpenAlex Author ID'].isnull()].shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "1eb832d6",
"metadata": {},
"outputs": [],
"source": [
"author_with_author_id = author[\n",
" author['OpenAlex Author ID'].notnull()]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "72e1818e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" Number of Unique Authors | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1990-01-01 | \n",
" 118 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1991-01-01 | \n",
" 126 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1992-01-01 | \n",
" 121 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1993-01-01 | \n",
" 117 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1994-01-01 | \n",
" 130 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year Number of Unique Authors\n",
"0 1990-01-01 118\n",
"1 1991-01-01 126\n",
"2 1992-01-01 121\n",
"3 1993-01-01 117\n",
"4 1994-01-01 130"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unique_author_num_df = author_with_author_id.groupby(\n",
" 'Year')['OpenAlex Author ID'].nunique().reset_index(\n",
" name = 'Number of Unique Authors')\n",
"unique_author_num_df['Year'] = pd.to_datetime(\n",
" unique_author_num_df['Year'], format=\"%Y\",\n",
")\n",
"unique_author_num_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "004e5d73",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" Number of Unique Authors | \n",
"
\n",
" \n",
" \n",
" \n",
" | 27 | \n",
" 2017-01-01 | \n",
" 455 | \n",
"
\n",
" \n",
" | 28 | \n",
" 2018-01-01 | \n",
" 494 | \n",
"
\n",
" \n",
" | 29 | \n",
" 2019-01-01 | \n",
" 551 | \n",
"
\n",
" \n",
" | 30 | \n",
" 2020-01-01 | \n",
" 640 | \n",
"
\n",
" \n",
" | 31 | \n",
" 2021-01-01 | \n",
" 670 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year Number of Unique Authors\n",
"27 2017-01-01 455\n",
"28 2018-01-01 494\n",
"29 2019-01-01 551\n",
"30 2020-01-01 640\n",
"31 2021-01-01 670"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unique_author_num_df.tail()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "63f9aede",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"467.79661016949154"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"((670 - 118)/118)*100"
]
},
{
"cell_type": "markdown",
"id": "27788fa4",
"metadata": {},
"source": [
"### Non-VIS VS VIS citations"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "5c4a95fb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# VIS PAPERS' OPENALEX IDS\n",
"ids = paper['OpenAlex ID'].tolist()\n",
"len(list(set(ids))) == paper.shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "d1b3ed04",
"metadata": {},
"outputs": [],
"source": [
"# Yes, I should not use the unique paper df\n",
"ref = pd.read_csv('../data/processed/openalex_reference_paper_df.csv')\n",
"ref = ref[ref['OpenAlex ID'].notnull()]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "0452502d",
"metadata": {},
"outputs": [],
"source": [
"cit = pd.read_csv('../data/processed/openalex_citation_paper_df.csv')\n",
"cit = cit[cit['Citation Paper OpenAlex ID'].notnull()]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "b959806d",
"metadata": {},
"outputs": [],
"source": [
"ref['VIS'] = ref['OpenAlex ID'].apply(\n",
" lambda x: 'Yes' if x in ids else 'No'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "e2cdf5fa",
"metadata": {},
"outputs": [],
"source": [
"cit['VIS'] = cit['Citation Paper OpenAlex ID'].apply(\n",
" lambda x: 'Yes' if x in ids else 'No'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "2dfd8a64",
"metadata": {},
"outputs": [],
"source": [
"tuples = []\n",
"for group in cit.groupby('OpenAlex Year'):\n",
" year = group[0]\n",
" total = group[1].shape[0]\n",
" for subgroup in group[1].groupby('VIS'):\n",
" type_of_paper = subgroup[0] # true or false\n",
" count = subgroup[1].shape[0]\n",
" ratio = count / total\n",
" tuples.append((year, type_of_paper, count, ratio))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "1b298589",
"metadata": {},
"outputs": [],
"source": [
"cit_df = pd.DataFrame(list(tuples), columns=['year', 'type', 'count', 'ratio']) "
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "3dffe128",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
" Year | \n",
"
\n",
" \n",
" \n",
" \n",
" | 3 | \n",
" 1990.0 | \n",
" Non-VIS | \n",
" 6 | \n",
" 0.750000 | \n",
" 1990-01-01 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1990.0 | \n",
" VIS | \n",
" 2 | \n",
" 0.250000 | \n",
" 1990-01-01 | \n",
"
\n",
" \n",
" | 5 | \n",
" 1991.0 | \n",
" Non-VIS | \n",
" 56 | \n",
" 0.736842 | \n",
" 1991-01-01 | \n",
"
\n",
" \n",
" | 6 | \n",
" 1991.0 | \n",
" VIS | \n",
" 20 | \n",
" 0.263158 | \n",
" 1991-01-01 | \n",
"
\n",
" \n",
" | 7 | \n",
" 1992.0 | \n",
" Non-VIS | \n",
" 113 | \n",
" 0.710692 | \n",
" 1992-01-01 | \n",
"
\n",
" \n",
" | 8 | \n",
" 1992.0 | \n",
" VIS | \n",
" 46 | \n",
" 0.289308 | \n",
" 1992-01-01 | \n",
"
\n",
" \n",
" | 9 | \n",
" 1993.0 | \n",
" Non-VIS | \n",
" 202 | \n",
" 0.801587 | \n",
" 1993-01-01 | \n",
"
\n",
" \n",
" | 10 | \n",
" 1993.0 | \n",
" VIS | \n",
" 50 | \n",
" 0.198413 | \n",
" 1993-01-01 | \n",
"
\n",
" \n",
" | 11 | \n",
" 1994.0 | \n",
" Non-VIS | \n",
" 285 | \n",
" 0.789474 | \n",
" 1994-01-01 | \n",
"
\n",
" \n",
" | 12 | \n",
" 1994.0 | \n",
" VIS | \n",
" 76 | \n",
" 0.210526 | \n",
" 1994-01-01 | \n",
"
\n",
" \n",
" | 13 | \n",
" 1995.0 | \n",
" Non-VIS | \n",
" 454 | \n",
" 0.809269 | \n",
" 1995-01-01 | \n",
"
\n",
" \n",
" | 14 | \n",
" 1995.0 | \n",
" VIS | \n",
" 107 | \n",
" 0.190731 | \n",
" 1995-01-01 | \n",
"
\n",
" \n",
" | 15 | \n",
" 1996.0 | \n",
" Non-VIS | \n",
" 485 | \n",
" 0.822034 | \n",
" 1996-01-01 | \n",
"
\n",
" \n",
" | 16 | \n",
" 1996.0 | \n",
" VIS | \n",
" 105 | \n",
" 0.177966 | \n",
" 1996-01-01 | \n",
"
\n",
" \n",
" | 17 | \n",
" 1997.0 | \n",
" Non-VIS | \n",
" 766 | \n",
" 0.829004 | \n",
" 1997-01-01 | \n",
"
\n",
" \n",
" | 18 | \n",
" 1997.0 | \n",
" VIS | \n",
" 158 | \n",
" 0.170996 | \n",
" 1997-01-01 | \n",
"
\n",
" \n",
" | 19 | \n",
" 1998.0 | \n",
" Non-VIS | \n",
" 809 | \n",
" 0.788499 | \n",
" 1998-01-01 | \n",
"
\n",
" \n",
" | 20 | \n",
" 1998.0 | \n",
" VIS | \n",
" 217 | \n",
" 0.211501 | \n",
" 1998-01-01 | \n",
"
\n",
" \n",
" | 21 | \n",
" 1999.0 | \n",
" Non-VIS | \n",
" 1079 | \n",
" 0.839689 | \n",
" 1999-01-01 | \n",
"
\n",
" \n",
" | 22 | \n",
" 1999.0 | \n",
" VIS | \n",
" 206 | \n",
" 0.160311 | \n",
" 1999-01-01 | \n",
"
\n",
" \n",
" | 23 | \n",
" 2000.0 | \n",
" Non-VIS | \n",
" 1355 | \n",
" 0.847935 | \n",
" 2000-01-01 | \n",
"
\n",
" \n",
" | 24 | \n",
" 2000.0 | \n",
" VIS | \n",
" 243 | \n",
" 0.152065 | \n",
" 2000-01-01 | \n",
"
\n",
" \n",
" | 25 | \n",
" 2001.0 | \n",
" Non-VIS | \n",
" 1664 | \n",
" 0.891747 | \n",
" 2001-01-01 | \n",
"
\n",
" \n",
" | 26 | \n",
" 2001.0 | \n",
" VIS | \n",
" 202 | \n",
" 0.108253 | \n",
" 2001-01-01 | \n",
"
\n",
" \n",
" | 27 | \n",
" 2002.0 | \n",
" Non-VIS | \n",
" 2159 | \n",
" 0.889576 | \n",
" 2002-01-01 | \n",
"
\n",
" \n",
" | 28 | \n",
" 2002.0 | \n",
" VIS | \n",
" 268 | \n",
" 0.110424 | \n",
" 2002-01-01 | \n",
"
\n",
" \n",
" | 29 | \n",
" 2003.0 | \n",
" Non-VIS | \n",
" 2746 | \n",
" 0.898854 | \n",
" 2003-01-01 | \n",
"
\n",
" \n",
" | 30 | \n",
" 2003.0 | \n",
" VIS | \n",
" 309 | \n",
" 0.101146 | \n",
" 2003-01-01 | \n",
"
\n",
" \n",
" | 31 | \n",
" 2004.0 | \n",
" Non-VIS | \n",
" 3354 | \n",
" 0.892021 | \n",
" 2004-01-01 | \n",
"
\n",
" \n",
" | 32 | \n",
" 2004.0 | \n",
" VIS | \n",
" 406 | \n",
" 0.107979 | \n",
" 2004-01-01 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio Year\n",
"3 1990.0 Non-VIS 6 0.750000 1990-01-01\n",
"4 1990.0 VIS 2 0.250000 1990-01-01\n",
"5 1991.0 Non-VIS 56 0.736842 1991-01-01\n",
"6 1991.0 VIS 20 0.263158 1991-01-01\n",
"7 1992.0 Non-VIS 113 0.710692 1992-01-01\n",
"8 1992.0 VIS 46 0.289308 1992-01-01\n",
"9 1993.0 Non-VIS 202 0.801587 1993-01-01\n",
"10 1993.0 VIS 50 0.198413 1993-01-01\n",
"11 1994.0 Non-VIS 285 0.789474 1994-01-01\n",
"12 1994.0 VIS 76 0.210526 1994-01-01\n",
"13 1995.0 Non-VIS 454 0.809269 1995-01-01\n",
"14 1995.0 VIS 107 0.190731 1995-01-01\n",
"15 1996.0 Non-VIS 485 0.822034 1996-01-01\n",
"16 1996.0 VIS 105 0.177966 1996-01-01\n",
"17 1997.0 Non-VIS 766 0.829004 1997-01-01\n",
"18 1997.0 VIS 158 0.170996 1997-01-01\n",
"19 1998.0 Non-VIS 809 0.788499 1998-01-01\n",
"20 1998.0 VIS 217 0.211501 1998-01-01\n",
"21 1999.0 Non-VIS 1079 0.839689 1999-01-01\n",
"22 1999.0 VIS 206 0.160311 1999-01-01\n",
"23 2000.0 Non-VIS 1355 0.847935 2000-01-01\n",
"24 2000.0 VIS 243 0.152065 2000-01-01\n",
"25 2001.0 Non-VIS 1664 0.891747 2001-01-01\n",
"26 2001.0 VIS 202 0.108253 2001-01-01\n",
"27 2002.0 Non-VIS 2159 0.889576 2002-01-01\n",
"28 2002.0 VIS 268 0.110424 2002-01-01\n",
"29 2003.0 Non-VIS 2746 0.898854 2003-01-01\n",
"30 2003.0 VIS 309 0.101146 2003-01-01\n",
"31 2004.0 Non-VIS 3354 0.892021 2004-01-01\n",
"32 2004.0 VIS 406 0.107979 2004-01-01"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cit_df = cit_df[(cit_df.year >= 1990) & (cit_df.year <= 2021)]\n",
"cit_df['Year'] = pd.to_datetime(cit_df['year'], format='%Y')\n",
"cit_df.replace({'Yes': 'VIS', 'No': 'Non-VIS'}, inplace=True)\n",
"cit_df.head(30)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "79af1c1f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
" Year | \n",
"
\n",
" \n",
" \n",
" \n",
" | 45 | \n",
" 2011.0 | \n",
" Non-VIS | \n",
" 6091 | \n",
" 0.888938 | \n",
" 2011-01-01 | \n",
"
\n",
" \n",
" | 46 | \n",
" 2011.0 | \n",
" VIS | \n",
" 761 | \n",
" 0.111062 | \n",
" 2011-01-01 | \n",
"
\n",
" \n",
" | 65 | \n",
" 2021.0 | \n",
" Non-VIS | \n",
" 11309 | \n",
" 0.843703 | \n",
" 2021-01-01 | \n",
"
\n",
" \n",
" | 66 | \n",
" 2021.0 | \n",
" VIS | \n",
" 2095 | \n",
" 0.156297 | \n",
" 2021-01-01 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio Year\n",
"45 2011.0 Non-VIS 6091 0.888938 2011-01-01\n",
"46 2011.0 VIS 761 0.111062 2011-01-01\n",
"65 2021.0 Non-VIS 11309 0.843703 2021-01-01\n",
"66 2021.0 VIS 2095 0.156297 2021-01-01"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cit_df[cit_df.year.isin([2021, 2011])]"
]
},
{
"cell_type": "markdown",
"id": "a1495e00",
"metadata": {},
"source": [
"### Average number of authors"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "89b8c7e0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" Number of Authors | \n",
"
\n",
" \n",
" \n",
" \n",
" | 22 | \n",
" 2012 | \n",
" 4.310345 | \n",
"
\n",
" \n",
" | 23 | \n",
" 2013 | \n",
" 4.128713 | \n",
"
\n",
" \n",
" | 24 | \n",
" 2014 | \n",
" 4.609023 | \n",
"
\n",
" \n",
" | 25 | \n",
" 2015 | \n",
" 4.519685 | \n",
"
\n",
" \n",
" | 26 | \n",
" 2016 | \n",
" 4.686957 | \n",
"
\n",
" \n",
" | 27 | \n",
" 2017 | \n",
" 4.728070 | \n",
"
\n",
" \n",
" | 28 | \n",
" 2018 | \n",
" 4.629921 | \n",
"
\n",
" \n",
" | 29 | \n",
" 2019 | \n",
" 5.255814 | \n",
"
\n",
" \n",
" | 30 | \n",
" 2020 | \n",
" 5.050955 | \n",
"
\n",
" \n",
" | 31 | \n",
" 2021 | \n",
" 4.970588 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year Number of Authors\n",
"22 2012 4.310345\n",
"23 2013 4.128713\n",
"24 2014 4.609023\n",
"25 2015 4.519685\n",
"26 2016 4.686957\n",
"27 2017 4.728070\n",
"28 2018 4.629921\n",
"29 2019 5.255814\n",
"30 2020 5.050955\n",
"31 2021 4.970588"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"author_num_df = paper.groupby(\n",
" 'Year')['Number of Authors'].mean().to_frame().reset_index()\n",
"author_num_df.tail(10)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "d941030c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"g = sns.lineplot(x='Year', \n",
" y='Number of Authors', \n",
" data = author_num_df)\n",
"g.set_ylim(0,)\n",
"g.set_ylabel('Average Number of Authors')\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"id": "097d8acd",
"metadata": {},
"source": [
"### Number of participating countries"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "f0613595",
"metadata": {},
"outputs": [],
"source": [
"year_1990_paper = paper[paper.Year == 1990]\n",
"year_1990_cross_country = year_1990_paper[\n",
" year_1990_paper['Cross-country Collaboration']==True]\n",
"year_1990_cross_country_dois = year_1990_cross_country.DOI.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "8c696d1f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Conference | \n",
" Year | \n",
" Title | \n",
" DOI | \n",
" FirstPage | \n",
" LastPage | \n",
" PaperType | \n",
" OpenAlex Year | \n",
" OpenAlex Publication Date | \n",
" OpenAlex ID | \n",
" ... | \n",
" Number of Authors | \n",
" Cross-type Collaboration | \n",
" Cross-country Collaboration | \n",
" With US Authors | \n",
" Both Cross-type and Cross-country Collaboration | \n",
" IEEE Title | \n",
" Citation Counts on Google Scholar | \n",
" Award | \n",
" Award Name | \n",
" Award Track | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1042 | \n",
" Vis | \n",
" 1990 | \n",
" Methods for surface interrogation | \n",
" 10.1109/VISUAL.1990.146381 | \n",
" 187.0 | \n",
" 193, 472 | \n",
" C | \n",
" 1990 | \n",
" 1990-10-23 | \n",
" W2103253409 | \n",
" ... | \n",
" 3.0 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" Methods for surface interrogation | \n",
" 55 | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2155 | \n",
" Vis | \n",
" 1990 | \n",
" A journey into the fourth dimension | \n",
" 10.1109/VISUAL.1990.146385 | \n",
" 219.0 | \n",
" 229, 476-477 | \n",
" C | \n",
" 1990 | \n",
" 1990-10-23 | \n",
" W2149054233 | \n",
" ... | \n",
" 2.0 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" A journey into the fourth dimension (visualiza... | \n",
" 16 | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
2 rows × 27 columns
\n",
"
"
],
"text/plain": [
" Conference Year Title \\\n",
"1042 Vis 1990 Methods for surface interrogation \n",
"2155 Vis 1990 A journey into the fourth dimension \n",
"\n",
" DOI FirstPage LastPage PaperType \\\n",
"1042 10.1109/VISUAL.1990.146381 187.0 193, 472 C \n",
"2155 10.1109/VISUAL.1990.146385 219.0 229, 476-477 C \n",
"\n",
" OpenAlex Year OpenAlex Publication Date OpenAlex ID ... \\\n",
"1042 1990 1990-10-23 W2103253409 ... \n",
"2155 1990 1990-10-23 W2149054233 ... \n",
"\n",
" Number of Authors Cross-type Collaboration Cross-country Collaboration \\\n",
"1042 3.0 True True \n",
"2155 2.0 False True \n",
"\n",
" With US Authors Both Cross-type and Cross-country Collaboration \\\n",
"1042 True True \n",
"2155 True False \n",
"\n",
" IEEE Title \\\n",
"1042 Methods for surface interrogation \n",
"2155 A journey into the fourth dimension (visualiza... \n",
"\n",
" Citation Counts on Google Scholar Award Award Name Award Track \n",
"1042 55 False NaN NaN \n",
"2155 16 False NaN NaN \n",
"\n",
"[2 rows x 27 columns]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"year_1990_cross_country"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "219cc3eb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Year | \n",
" DOI | \n",
" Title | \n",
" Number of Authors | \n",
" Author Position | \n",
" Author Name | \n",
" OpenAlex Author ID | \n",
" Affiliation Name | \n",
" Affiliation Country Code | \n",
" Affiliation Type | \n",
" Binary Type | \n",
" Cross-type Collaboration | \n",
" International Collaboration | \n",
"
\n",
" \n",
" \n",
" \n",
" | 3614 | \n",
" 1990 | \n",
" 10.1109/VISUAL.1990.146381 | \n",
" Methods for surface interrogation | \n",
" 3.0 | \n",
" 1.0 | \n",
" H. Hagen | \n",
" https://openalex.org/A2237445521 | \n",
" FB-Informatik, Universität Kaiserslautern | \n",
" DE | \n",
" education | \n",
" education | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" | 3615 | \n",
" 1990 | \n",
" 10.1109/VISUAL.1990.146381 | \n",
" Methods for surface interrogation | \n",
" 3.0 | \n",
" 2.0 | \n",
" T. Schreiber | \n",
" https://openalex.org/A2973511128 | \n",
" FB-Informatik, Universität Kaiserslautern | \n",
" DE | \n",
" education | \n",
" education | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" | 3616 | \n",
" 1990 | \n",
" 10.1109/VISUAL.1990.146381 | \n",
" Methods for surface interrogation | \n",
" 3.0 | \n",
" 3.0 | \n",
" E. Gschwind | \n",
" https://openalex.org/A1980220218 | \n",
" Mechanical Design Division, Hewlett-Packard GmbH | \n",
" US | \n",
" company | \n",
" non-education | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" | 7745 | \n",
" 1990 | \n",
" 10.1109/VISUAL.1990.146385 | \n",
" A journey into the fourth dimension | \n",
" 2.0 | \n",
" 1.0 | \n",
" Y. Ke | \n",
" https://openalex.org/A2684845787 | \n",
" Department of Computational Science, Universit... | \n",
" CA | \n",
" education | \n",
" education | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" | 7746 | \n",
" 1990 | \n",
" 10.1109/VISUAL.1990.146385 | \n",
" A journey into the fourth dimension | \n",
" 2.0 | \n",
" 2.0 | \n",
" E.S. Panduranga | \n",
" https://openalex.org/A2302757246 | \n",
" Department of Computer Sciences, Johns Hopkins... | \n",
" US | \n",
" education | \n",
" education | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year DOI Title \\\n",
"3614 1990 10.1109/VISUAL.1990.146381 Methods for surface interrogation \n",
"3615 1990 10.1109/VISUAL.1990.146381 Methods for surface interrogation \n",
"3616 1990 10.1109/VISUAL.1990.146381 Methods for surface interrogation \n",
"7745 1990 10.1109/VISUAL.1990.146385 A journey into the fourth dimension \n",
"7746 1990 10.1109/VISUAL.1990.146385 A journey into the fourth dimension \n",
"\n",
" Number of Authors Author Position Author Name \\\n",
"3614 3.0 1.0 H. Hagen \n",
"3615 3.0 2.0 T. Schreiber \n",
"3616 3.0 3.0 E. Gschwind \n",
"7745 2.0 1.0 Y. Ke \n",
"7746 2.0 2.0 E.S. Panduranga \n",
"\n",
" OpenAlex Author ID \\\n",
"3614 https://openalex.org/A2237445521 \n",
"3615 https://openalex.org/A2973511128 \n",
"3616 https://openalex.org/A1980220218 \n",
"7745 https://openalex.org/A2684845787 \n",
"7746 https://openalex.org/A2302757246 \n",
"\n",
" Affiliation Name \\\n",
"3614 FB-Informatik, Universität Kaiserslautern \n",
"3615 FB-Informatik, Universität Kaiserslautern \n",
"3616 Mechanical Design Division, Hewlett-Packard GmbH \n",
"7745 Department of Computational Science, Universit... \n",
"7746 Department of Computer Sciences, Johns Hopkins... \n",
"\n",
" Affiliation Country Code Affiliation Type Binary Type \\\n",
"3614 DE education education \n",
"3615 DE education education \n",
"3616 US company non-education \n",
"7745 CA education education \n",
"7746 US education education \n",
"\n",
" Cross-type Collaboration International Collaboration \n",
"3614 True True \n",
"3615 True True \n",
"3616 True True \n",
"7745 False True \n",
"7746 False True "
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"author[author.DOI.isin(year_1990_cross_country.DOI)]"
]
},
{
"cell_type": "markdown",
"id": "c804332e",
"metadata": {},
"source": [
"### Cross country collaboration"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "56b08142",
"metadata": {},
"outputs": [],
"source": [
"def get_total_and_ratio_by_year(DF, BY, subgroup_par):\n",
" tuples = []\n",
" for group in DF.groupby(BY):\n",
" year = group[0]\n",
" total = group[1].shape[0]\n",
" for subgroup in group[1].groupby(subgroup_par):\n",
" subtype = 'Yes' if subgroup[0] else 'No'\n",
" count = subgroup[1].shape[0]\n",
" ratio = count / total\n",
" tuples.append((year, subtype, count, ratio))\n",
" dff = pd.DataFrame(\n",
" list(tuples), columns=['year', 'type', 'count', 'ratio']) \n",
" return dff"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "4a55728f",
"metadata": {},
"outputs": [],
"source": [
"cross_country = get_total_and_ratio_by_year(\n",
" paper, \n",
" 'Year',\n",
" 'Cross-country Collaboration'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "576469ee",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1990 | \n",
" No | \n",
" 50 | \n",
" 0.961538 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1990 | \n",
" Yes | \n",
" 2 | \n",
" 0.038462 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1991 | \n",
" No | \n",
" 49 | \n",
" 0.980000 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1991 | \n",
" Yes | \n",
" 1 | \n",
" 0.020000 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1992 | \n",
" No | \n",
" 47 | \n",
" 0.886792 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio\n",
"0 1990 No 50 0.961538\n",
"1 1990 Yes 2 0.038462\n",
"2 1991 No 49 0.980000\n",
"3 1991 Yes 1 0.020000\n",
"4 1992 No 47 0.886792"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cross_country.head()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "24c13637",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
"
\n",
" \n",
" \n",
" \n",
" | 26 | \n",
" 2003 | \n",
" No | \n",
" 91 | \n",
" 0.892157 | \n",
"
\n",
" \n",
" | 27 | \n",
" 2003 | \n",
" Yes | \n",
" 11 | \n",
" 0.107843 | \n",
"
\n",
" \n",
" | 28 | \n",
" 2004 | \n",
" No | \n",
" 79 | \n",
" 0.814433 | \n",
"
\n",
" \n",
" | 29 | \n",
" 2004 | \n",
" Yes | \n",
" 18 | \n",
" 0.185567 | \n",
"
\n",
" \n",
" | 30 | \n",
" 2005 | \n",
" No | \n",
" 98 | \n",
" 0.823529 | \n",
"
\n",
" \n",
" | 31 | \n",
" 2005 | \n",
" Yes | \n",
" 21 | \n",
" 0.176471 | \n",
"
\n",
" \n",
" | 32 | \n",
" 2006 | \n",
" No | \n",
" 90 | \n",
" 0.796460 | \n",
"
\n",
" \n",
" | 33 | \n",
" 2006 | \n",
" Yes | \n",
" 23 | \n",
" 0.203540 | \n",
"
\n",
" \n",
" | 44 | \n",
" 2012 | \n",
" No | \n",
" 74 | \n",
" 0.637931 | \n",
"
\n",
" \n",
" | 45 | \n",
" 2012 | \n",
" Yes | \n",
" 42 | \n",
" 0.362069 | \n",
"
\n",
" \n",
" | 46 | \n",
" 2013 | \n",
" No | \n",
" 75 | \n",
" 0.742574 | \n",
"
\n",
" \n",
" | 47 | \n",
" 2013 | \n",
" Yes | \n",
" 26 | \n",
" 0.257426 | \n",
"
\n",
" \n",
" | 48 | \n",
" 2014 | \n",
" No | \n",
" 85 | \n",
" 0.639098 | \n",
"
\n",
" \n",
" | 49 | \n",
" 2014 | \n",
" Yes | \n",
" 48 | \n",
" 0.360902 | \n",
"
\n",
" \n",
" | 62 | \n",
" 2021 | \n",
" No | \n",
" 94 | \n",
" 0.552941 | \n",
"
\n",
" \n",
" | 63 | \n",
" 2021 | \n",
" Yes | \n",
" 76 | \n",
" 0.447059 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio\n",
"26 2003 No 91 0.892157\n",
"27 2003 Yes 11 0.107843\n",
"28 2004 No 79 0.814433\n",
"29 2004 Yes 18 0.185567\n",
"30 2005 No 98 0.823529\n",
"31 2005 Yes 21 0.176471\n",
"32 2006 No 90 0.796460\n",
"33 2006 Yes 23 0.203540\n",
"44 2012 No 74 0.637931\n",
"45 2012 Yes 42 0.362069\n",
"46 2013 No 75 0.742574\n",
"47 2013 Yes 26 0.257426\n",
"48 2014 No 85 0.639098\n",
"49 2014 Yes 48 0.360902\n",
"62 2021 No 94 0.552941\n",
"63 2021 Yes 76 0.447059"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cross_country[cross_country.year.isin([2004, 2005, 2006, 2003, 2013, 2012, 2014, 2021])]"
]
},
{
"cell_type": "markdown",
"id": "7919afca",
"metadata": {},
"source": [
"#### Author chord"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "406cc349",
"metadata": {},
"outputs": [],
"source": [
"author_chord = pd.read_csv('../data/plots/author_chord/author_chord_df.csv')\n",
"node1, node2 = author_chord.source, author_chord.target\n",
"unique_cntry = list(set(node1.append(node2).tolist()))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "1b939b92",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1218"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"author_chord.value.sum()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "c345c76e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" source | \n",
" target | \n",
" value | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" CN | \n",
" US | \n",
" 123 | \n",
"
\n",
" \n",
" | 1 | \n",
" DE | \n",
" US | \n",
" 112 | \n",
"
\n",
" \n",
" | 2 | \n",
" CA | \n",
" US | \n",
" 70 | \n",
"
\n",
" \n",
" | 3 | \n",
" US | \n",
" FR | \n",
" 59 | \n",
"
\n",
" \n",
" | 4 | \n",
" US | \n",
" AT | \n",
" 43 | \n",
"
\n",
" \n",
" | 5 | \n",
" GB | \n",
" US | \n",
" 33 | \n",
"
\n",
" \n",
" | 6 | \n",
" CN | \n",
" DE | \n",
" 31 | \n",
"
\n",
" \n",
" | 7 | \n",
" DE | \n",
" AT | \n",
" 29 | \n",
"
\n",
" \n",
" | 8 | \n",
" KR | \n",
" US | \n",
" 28 | \n",
"
\n",
" \n",
" | 9 | \n",
" US | \n",
" GB | \n",
" 25 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" source target value\n",
"0 CN US 123\n",
"1 DE US 112\n",
"2 CA US 70\n",
"3 US FR 59\n",
"4 US AT 43\n",
"5 GB US 33\n",
"6 CN DE 31\n",
"7 DE AT 29\n",
"8 KR US 28\n",
"9 US GB 25"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"author_chord.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "72f07485",
"metadata": {},
"outputs": [],
"source": [
"tuples = []\n",
"for i in unique_cntry:\n",
" dff = author_chord[(author_chord.source == i) | (author_chord.target == i)]\n",
" total = dff.value.sum()\n",
" tuples.append((i, total))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "11dce8cd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1197"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"collab_df = pd.DataFrame(list(tuples), columns = ['country', 'value']).sort_values(\n",
" by=['value'], ascending = False).reset_index(drop=True)\n",
"collab_df.value.sum()\n",
"most_active_cntry = collab_df.head(10).country.tolist()\n",
"# Number of pairs where the most active countries appeared\n",
"author_chord[(\n",
" author_chord.source.isin(most_active_cntry)) | (\n",
" author_chord.target.isin(most_active_cntry))].value.sum()\n",
"# most_active_cntry"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "e1affcf5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['US', 'DE', 'CN', 'AT', 'GB', 'FR', 'CA', 'NL', 'CH', 'AU']"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"most_active_cntry"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "344840c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9827586206896551"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1197/1218"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "83ff6383",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"862"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Number of pairs made up by collaborations between most active countries\n",
"author_chord[(\n",
" author_chord.source.isin(most_active_cntry)) & (\n",
" author_chord.target.isin(most_active_cntry))].value.sum()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "38ea4da7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7077175697865353"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"862/1218"
]
},
{
"cell_type": "markdown",
"id": "f5cad371",
"metadata": {},
"source": [
"### Cross-type collaboration"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "03c91bed",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1990 | \n",
" No | \n",
" 47 | \n",
" 0.903846 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1990 | \n",
" Yes | \n",
" 5 | \n",
" 0.096154 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1991 | \n",
" No | \n",
" 43 | \n",
" 0.860000 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1991 | \n",
" Yes | \n",
" 7 | \n",
" 0.140000 | \n",
"
\n",
" \n",
" | 4 | \n",
" 1992 | \n",
" No | \n",
" 43 | \n",
" 0.811321 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio\n",
"0 1990 No 47 0.903846\n",
"1 1990 Yes 5 0.096154\n",
"2 1991 No 43 0.860000\n",
"3 1991 Yes 7 0.140000\n",
"4 1992 No 43 0.811321"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cross_type = get_total_and_ratio_by_year(\n",
" paper, \n",
" 'Year',\n",
" 'Cross-type Collaboration'\n",
")\n",
"cross_type.head()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "fd56c478",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" year | \n",
" type | \n",
" count | \n",
" ratio | \n",
"
\n",
" \n",
" \n",
" \n",
" | 32 | \n",
" 2006 | \n",
" No | \n",
" 90 | \n",
" 0.796460 | \n",
"
\n",
" \n",
" | 33 | \n",
" 2006 | \n",
" Yes | \n",
" 23 | \n",
" 0.203540 | \n",
"
\n",
" \n",
" | 34 | \n",
" 2007 | \n",
" No | \n",
" 69 | \n",
" 0.644860 | \n",
"
\n",
" \n",
" | 35 | \n",
" 2007 | \n",
" Yes | \n",
" 38 | \n",
" 0.355140 | \n",
"
\n",
" \n",
" | 56 | \n",
" 2018 | \n",
" No | \n",
" 69 | \n",
" 0.543307 | \n",
"
\n",
" \n",
" | 57 | \n",
" 2018 | \n",
" Yes | \n",
" 58 | \n",
" 0.456693 | \n",
"
\n",
" \n",
" | 62 | \n",
" 2021 | \n",
" No | \n",
" 116 | \n",
" 0.682353 | \n",
"
\n",
" \n",
" | 63 | \n",
" 2021 | \n",
" Yes | \n",
" 54 | \n",
" 0.317647 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year type count ratio\n",
"32 2006 No 90 0.796460\n",
"33 2006 Yes 23 0.203540\n",
"34 2007 No 69 0.644860\n",
"35 2007 Yes 38 0.355140\n",
"56 2018 No 69 0.543307\n",
"57 2018 Yes 58 0.456693\n",
"62 2021 No 116 0.682353\n",
"63 2021 Yes 54 0.317647"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cross_type[cross_type.year.isin([2006, 2007, 2018, 2021])]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "652fe9e3",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}