In[]:=
object=CloudImport[CloudObject["user:aarone@wolfram.com/MathematicsGenealogyProjectEntityStoreBeta"]]
Out[]=
ResourceObject
Name: Mathematics Genealogy Project EntityStore
Type: DataResource
Description:
EntityStore of people, their degrees, advisees, and advisors from the Mathematic

In[]:=
store=ResourceData["https://www.wolframcloud.com/objects/aarone@wolfram.com/MathematicsGenealogyProjectEntityStoreBeta"]
Out[]=
EntityStore

Types:
MGPPerson
MGPDegree
Entity count:
209599
210446
Property count:
15
12
Data not in notebook. Store now

In[]:=
EntityRegister[store]
Out[]=
{MGPPerson,MGPDegree}
In[]:=
mscnames=
List
;
In[]:=
WordCloudDeleteMissingEntityValueEntityListEntityClass"MGPDegree","SchoolEntity"
University of Oxford
UNIVERSITY
,"MSCDescription",ImageSizeLarge
Out[]=
In[]:=
msctransition[person_]:=Module[{msc="MSCNumber",d="Degrees",advisermsc,adviseemscs,dm=DeleteMissing},​​advisermsc=#[msc]&/@person[d];​​adviseemscs=#[msc]&/@Flatten[#[d]&/@dm[Flatten[{person["Advised"]}]]];​​dm[{advisermsc,{#}}&/@DeleteCases[adviseemscs,Alternatives@@advisermsc],1,2]]
In[]:=
transitiondata=msctransition/@Select[DeleteMissing[​​EntityValue["MGPPerson",{"Entity","DegreeDates"}],1,2],Min[#["Year"]&/@#[[2]]]>1988&][[All,1]];
In[]:=
Length[EntityList["MGPPerson"]]
Out[]=
209599
In[]:=
RandomEntity["MGPPerson",50]
Out[]=

James Henshaw Osborn
,
Alexander Gothe
,
Ting Gao
,
Ronald Taylor Locke
,
Yvan Saint-Aubin
,
Francisco Balibrea Gallego
,
Stephan Fackler
,
Damir Vukičević
,
Hwa Kil Kim
,
Christian Reinsch
,
Alfredo Sánchez-R.-Navarro
,
Alimdjan Khalmukhamedov
,
Jose Perea
,
Martin Raič
,
Shih-Liang Wen
,
Peter Collingbourne
,
Asmamaw Yimer
,
Te-Shing Wang
,
Herbert Stanley Bear, Jr.
,
Mohammad Abu Tabenjeh
,
Diego Andres Vela
,
Donald D. James
,
Lambert Herman Koopmans
,
Levi Nyagura
,
Adrian Iosif Nachman
,
William Webb Johnson
,
Lisa Schreiber
,
Alireza Tamaddoni Nezhad
,
William S. Kimball
,
Wing Kai Hon
,
Minsuk Suh
,
Aleksandr Nikolaevich Shelkovoi
,
G. Silcock
,
David Forbes Hendry
,
Daniel Bruynooghe
,
Glen Bruns
,
Elisabetta Allevi
,
Robert M. Sardis
,
Alexandr Buryak
,
Kathrin Schlafmann
,
Liliana Siretchi
,
Upke-Walther Schmincke
,
Jakob Karszt
,
Daniel Dvorkin
,
Michael David Hirsch
,
Steven Tesser
,
M. Sarybaev
,
Atilla Dogan
,
Andrey Babichev
,
Zhanpan Zhang

In[]:=
msctransition/@%
Out[]=
{{},{},{},{},{{{35},{82}},{{35},{82}}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{{{91},{62}}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}}
In[]:=
alltransitions=msctransition/@EntityList["MGPPerson"];
Out[]=
$Aborted
In[]:=
Jose Perea
MGPPERSON
["Properties"]
Out[]=

ID
,
advised
,
advised by
,
degree dates
,
degrees
,
school Entities
,
school names
,
descendant count
,
given name
,
label
,
MacTutor URL
,
Mathematics Genealogy Project URL
,
name
,
other names
,
surname

In[]:=
Yvan Saint-Aubin
MGPPERSON
["Degrees"]
Out[]=

Yvan Saint-Aubin Ph.D. 1982

In[]:=
Yvan Saint-Aubin Ph.D. 1982
MGPDEGREE
["MSCNumber"]
Out[]=
35
In[]:=
personMap[person_]:=(#["MSCNumber"]&/@person["Degrees"])->(#["MSCNumber"]&/@#["Degrees"])&/@person
advised

In[]:=
personMap
Yvan Saint-Aubin
MGPPERSON

Out[]=
{{35}{82},{35}{82}}
In[]:=
Select[personMap/@%34,FreeQ[_Missing]]
Out[]=
{{{35}{82},{35}{82}},{{35}{35}},{{91}{62},{91}{91},{91}{91},{91}{91},{91}{91},{91}{91}}}
In[]:=
mgpMap=Association[Rule@@@Select[EntityValue[EntityList["MGPDegree"],{"MSCNumber","MSCDescription"}],FreeQ[_Missing]]];
In[]:=
mgpMap=
;
personMap = EntityList["MGPPerson"] //​​ (* get degrees/advised *)​​ EntityValue[#, {"Degrees", "Advised"}] & //​​ (* remove bugged entities (see above) *)​​ DeleteCases[{_Missing, _}] //​​ (* remove studentless *)​​ DeleteCases[{_, _Missing}] //​​ (* get MSC *)​​ MapAt[DeleteMissing @ EntityValue[#, "MSCNumber"] &, {All, 1}] //​​ (* remove missing MSCs *)​​ DeleteCases[{{}, _}] //​​ (* get MSCs for students *)​​ MapAt[​​ Union @ DeleteMissing @ EntityValue[Union @@ EntityValue[#, "Degrees"], "MSCNumber"] &,​​ {All, 2}​​ ] //​​ (* remove empty student result *)​​ DeleteCases[{_, {}}];
In[]:=
personMap=
;
In[]:=
edgeWeights=Counts[DirectedEdge@@@Catenate[Tuples/@personMap]];

Fields vs Time

Across all people: {year, field}
Across all advisors and advisees: {year, field1 -> field2}
In[]:=
EntityList["MGPDegree"]//Length
Out[]=
210446
In[]:=
RandomEntity["MGPDegree",20]
Out[]=

Alexandra Louise Hanlon Ph.D. 1998
,
Jerod J. Weinman Ph.D. 2008
,
Bing Wang Ph.D. 2008
,
Hannu Hakaahti Ph.D. 1985
,
Osvaldo Miguel Ph.D. 1982
,
Paulo Antonio Liboni Filho Ph.D. 2012
,
209171
,
Charles Arthur Ingene Ph.D. 1975
,
David /Dev Anand Rana Ph.D. 1987
,
Stephen Francis Bush Ph.D. 1997
,
Mohammad Salmassi Ph.D. 1979
,
Dr. rer. nat. 1958
,
John Crews Ph.D. 1969
,
Barry Lynn Piazza Ph.D. 1985
,
Erwan Rousseau Ph.D. 2004
,
Dejan Depalov Ph.D. 2007
,
Peter Sperner Ph.D. 1971
,
Malik Utepbergenov Ph.D. 1975
,
Charles Moverly Mitchell Ph.D. 2010
,
Grant Douglas Swensen Ph.D. 2000

In[]:=
Cases[{#["Date"],#["MSCNumber"]}&/@%65,Except[{_,_Missing}]]
Out[]=

Year: 2008
,68,
Year: 2008
,53,
Year: 2012
,32,
Year: 1975
,91,
Year: 1987
,37,
Year: 1997
,68,
Year: 1969
,74,
Year: 2004
,32,
Year: 2007
,68,
Year: 1975
,34

Exponential increase in number of mathematicians