Skip to content

Instantly share code, notes, and snippets.

@fperez
Last active July 1, 2021 04:43
Show Gist options
  • Save fperez/5b49246af4e340c37549265a90894ce6 to your computer and use it in GitHub Desktop.
Save fperez/5b49246af4e340c37549265a90894ce6 to your computer and use it in GitHub Desktop.
Polyglot Data Science with IPython

Polyglot Data Science with IPython & friends

Author: Fernando Pérez.

A demonstration of how to use Python, Julia, Fortran and R cooperatively to analyze data, in the same process.

This is supported by the IPython kernel and a few extensions that take advantage of IPython's magic system to provide low-level integration between Python and other languages.

See the companion notebook for data preparation and setup.

Used for a lecture at the Berkeley Institute for Data Science. The lecture video has a live demo of this material.

License: CC-BY.

x y
0.0 0.09428703274649862
0.02101399768287487 -0.21682787079387694
0.04202799536574974 0.32998247004803666
0.06304199304862461 0.0036910376779959175
0.08405599073149948 -0.0544094870632954
0.10506998841437436 0.29133411420559346
0.12608398609724922 0.310718736500297
0.1470979837801241 0.03710184794855739
0.16811198146299897 0.19385680449502704
0.18912597914587384 -0.23080372945059743
0.21013997682874871 0.4754598194444005
0.2311539745116236 0.47226348579069954
0.25216797219449844 0.4936609017425528
0.2731819698773733 -0.07143553645414097
0.2941959675602482 0.2965134877139408
0.31520996524312306 0.39495610271631554
0.33622396292599793 0.5075112614675588
0.3572379606088728 0.5168053860493421
0.3782519582917477 0.7564556008394825
0.39926595597462256 0.216741161143698
0.42027995365749743 0.520141808615399
0.4412939513403723 0.46466381308230564
0.4623079490232472 0.6703516636116772
0.48332194670612205 0.7787710470956681
0.5043359443889969 0.9687162726597178
0.5253499420718718 0.6487924421695102
0.5463639397547466 0.9158718710835747
0.5673779374376215 0.4559752998461058
0.5883919351204964 0.821859705782694
0.6094059328033713 1.1098222426034332
0.6304199304862461 0.8584153034108905
0.651433928169121 1.0457914750281228
0.6724479258519959 1.2284594600580687
0.6934619235348707 1.2690396077874566
0.7144759212177456 1.2737166912460058
0.7354899189006204 1.1178291771613955
0.7565039165834954 1.2085523305960715
0.7775179142663702 1.160430948324203
0.7985319119492451 1.4346476634879184
0.8195459096321199 1.7856896638059545
0.8405599073149949 1.363698304252134
0.8615739049978697 1.2758144742466853
0.8825879026807446 1.436564698288517
0.9036019003636194 1.054058214396473
0.9246158980464944 1.5577062715745673
0.9456298957293692 1.3670737307877898
0.9666438934122441 1.5566477333034936
0.9876578910951189 1.6241865931574329
1.0086718887779937 1.8070252562351916
1.0296858864608687 1.7331681488676631
1.0506998841437436 1.891108813605713
1.0717138818266183 1.4650168717924723
1.0927278795094932 1.5033905033420423
1.1137418771923682 1.7913946882131335
1.134755874875243 1.7277602211222844
1.1557698725581178 1.8322012987848455
1.1767838702409927 1.9533801227508665
1.1977978679238677 1.894507174191391
1.2188118656067426 2.0312237287401396
1.2398258632896173 2.2409586168192526
1.2608398609724922 1.74787016968533
1.2818538586553672 1.9365386844626173
1.302867856338242 2.016956985811513
1.3238818540211168 1.915157228352737
1.3448958517039917 2.1617305993411757
1.3659098493868667 1.4695044990462909
1.3869238470697414 2.346755263624674
1.4079378447526163 1.6994786100038657
1.4289518424354912 1.9540142243834207
1.4499658401183662 2.0324245533593643
1.4709798378012409 1.7104125016036007
1.4919938354841158 1.932092715157879
1.5130078331669907 1.9488771044291837
1.5340218308498657 1.8772836619419955
1.5550358285327404 1.5481368188707556
1.5760498262156153 2.092098081216662
1.5970638238984902 1.689508668821579
1.6180778215813651 1.363753243257729
1.6390918192642399 1.6675992701153861
1.6601058169471148 1.4929715328232587
1.6811198146299897 1.518989678972056
1.7021338123128644 0.6518879009250004
1.7231478099957394 1.5650234771609497
1.7441618076786143 1.2655960185446726
1.7651758053614892 1.200656774373136
1.786189803044364 1.0132139672164098
1.8072038007272389 1.1834080615728857
1.8282177984101138 1.1572844700428722
1.8492317960929887 0.9449712689069361
1.8702457937758634 1.1003388751867371
1.8912597914587383 0.770199436323397
1.9122737891416133 0.6082151664471259
1.9332877868244882 0.41885326004336676
1.954301784507363 0.4464939140061885
1.9753157821902378 0.6691358626736834
1.9963297798731128 0.43573967652613405
2.0173437775559875 0.3339828126398665
2.0383577752388624 0.4644473825618527
2.0593717729217373 0.1064277237776948
2.0803857706046123 0.1853789263188848
2.101399768287487 0.3201020224385418
2.122413765970362 0.35629474266753264
2.1434277636532366 0.33225605736934366
2.1644417613361115 0.28491959796611266
2.1854557590189865 0.32910631521731204
2.2064697567018614 0.5176262662892887
2.2274837543847363 0.109839296007394
2.2484977520676113 0.20211465878039475
2.269511749750486 0.5788131607716548
2.290525747433361 0.1242850987814677
2.3115397451162356 0.6104516455738529
2.3325537427991105 0.156020816657225
2.3535677404819855 0.4783926051674913
2.3745817381648604 0.7958505276164087
2.3955957358477353 0.6892085463329622
2.4166097335306103 0.7833572716310165
2.437623731213485 1.0507576396020168
2.4586377288963597 0.6499207994695929
2.4796517265792346 1.1252241650348074
2.5006657242621095 1.2991169459684497
2.5216797219449845 1.275830668753998
2.5426937196278594 1.307195313270599
2.5637077173107343 1.3980001489560312
2.5847217149936093 1.7230235994943333
2.605735712676484 1.3924326262625255
2.6267497103593587 1.903817084872605
2.6477637080422336 1.8147486062636935
2.6687777057251085 1.928601211864948
2.6897917034079835 2.196074272466092
2.7108057010908584 2.251763766706309
2.7318196987737333 2.211637113563625
2.7528336964566082 2.2296439602321607
2.7738476941394827 2.385493920800681
2.7948616918223577 2.6104054328620516
2.8158756895052326 2.3551468077571522
2.8368896871881075 2.01614367546487
2.8579036848709825 1.758547230062079
2.8789176825538574 2.5145466583995195
2.8999316802367323 1.7205136112646957
2.9209456779196072 2.2355028033020905
2.9419596756024817 2.0663062219935857
2.9629736732853567 1.7328187304433138
2.9839876709682316 1.8410605026462201
3.0050016686511065 1.41349631197623
3.0260156663339814 1.6948342491959802
3.0470296640168564 1.225211982275375
3.0680436616997313 1.3375325966658254
3.089057659382606 1.2602107474366946
3.1100716570654807 0.9059763417450576
3.1310856547483557 1.27358315157639
3.1520996524312306 0.7751719459170574
3.1731136501141055 0.7184056838930605
3.1941276477969804 0.35720962825103025
3.2151416454798554 0.3454266842065717
3.2361556431627303 0.5467853336586905
3.257169640845605 0.04810795996137804
3.2781836385284797 -0.2649760702592041
3.2991976362113546 0.06169584132449482
3.3202116338942296 -0.06149482697996339
3.3412256315771045 0.18942219160248575
3.3622396292599794 0.25605182400139126
3.3832536269428544 0.04512111749786685
3.404267624625729 0.19341064591789695
3.425281622308604 0.15502940992435946
3.4462956199914787 0.2628837343218484
3.4673096176743536 0.5903816234688343
3.4883236153572286 0.7928516146939639
3.5093376130401035 0.8352510045541296
3.5303516107229784 1.1253646232783057
3.5513656084058534 1.272364619510003
3.572379606088728 1.199760718896991
3.5933936037716028 1.2400157196887907
3.6144076014544777 1.291281705897311
3.6354215991373526 1.349471635900479
3.6564355968202276 1.7300156091830594
3.6774495945031025 1.7457385690681717
3.6984635921859774 2.284177744394171
3.719477589868852 1.9315785622203046
3.740491587551727 1.6497267465629497
3.7615055852346018 2.2162488056706726
3.7825195829174767 1.4769937904058161
3.8035335806003516 1.586792806741044
3.8245475782832266 1.854161812692901
3.8455615759661015 1.6803133942079087
3.8665755736489764 1.8181215829541293
3.887589571331851 1.135191939572346
3.908603569014726 1.03164339714643
3.9296175666976008 0.9858069759360137
3.9506315643804757 0.8465371945050578
3.9716455620633506 0.46573563542895974
3.9926595597462256 0.6150177958199532
4.0136735574291 0.28227854040030514
4.034687555111975 -0.05593170482163062
4.05570155279485 -0.08820050185328651
4.076715550477725 0.18315078126159096
4.0977295481606 -0.23042439222793287
4.118743545843475 -0.2571793298707865
4.13975754352635 -0.0999819260172232
4.1607715412092245 -0.24340398263360863
4.1817855388920995 -0.50431617492975
4.202799536574974 -0.3207044398109188
4.223813534257849 -0.3145809051772469
4.244827531940724 -0.0660875532158049
4.265841529623599 -0.09482847989385279
4.286855527306473 0.36790855403938516
4.307869524989348 0.15033179677285174
4.328883522672223 0.36601183355486666
4.349897520355098 0.6519416287238422
4.370911518037973 1.184636801781128
4.391925515720848 1.1171617441775716
4.412939513403723 1.2054237787691973
4.433953511086598 1.1172360264040786
4.454967508769473 1.534353101017178
4.475981506452348 1.8171007670521293
4.4969955041352225 1.7249702922535741
4.5180095018180975 1.6385770810646945
4.539023499500972 1.5517279928683787
4.560037497183847 1.1971680468803079
4.581051494866722 1.3161222409555393
4.602065492549596 1.2298207684545746
4.623079490232471 0.8728156511447843
4.644093487915346 1.1264733882736175
4.665107485598221 0.6206552292833607
4.686121483281096 0.5037364158453278
4.707135480963971 0.15576837933202337
4.728149478646846 -0.5149011882433355
4.749163476329721 -0.3733926583803232
4.770177474012596 -0.4895766398570291
4.791191471695471 -0.3963229001074472
4.812205469378346 -0.6890871939218315
4.8332194670612205 -0.7942286766222939
4.8542334647440954 -0.7986849132828343
4.87524746242697 -0.8886178465483747
4.896261460109845 -0.9630569221353825
4.917275457792719 -0.9834146007334708
4.938289455475594 -0.5678948714845939
4.959303453158469 -0.3558829333325443
4.980317450841344 0.249107365558437
5.001331448524219 -0.040608009173703025
5.022345446207094 0.20233845146527824
5.043359443889969 0.1992400765938189
5.064373441572844 0.5275485354884621
5.085387439255719 0.7514618756521231
5.106401436938594 0.49009426874379936
5.127415434621469 0.5067880624234495
5.148429432304344 1.0585654272835328
5.1694434299872185 1.0610109488693784
5.190457427670093 0.8525357584534238
5.211471425352968 0.5012416534838943
5.232485423035842 0.5961987692083116
5.253499420718717 0.7313663909072938
5.274513418401592 -0.1936178203876623
5.295527416084467 -0.3647565438145515
5.316541413767342 -0.3025037023803415
5.337555411450217 -0.5730997131866751
5.358569409133092 -1.0639608138195455
5.379583406815967 -1.1936870927698648
5.400597404498842 -1.1003121867771797
5.421611402181717 -1.4578695062400544
5.442625399864592 -1.6147443297379096
5.463639397547467 -1.2007321839904823
5.484653395230342 -1.4627527499991468
5.5056673929132165 -1.3870180706182835
5.526681390596091 -1.1742923901910507
5.5476953882789655 -1.1442703154821237
5.56870938596184 -0.8124758234383467
5.589723383644715 -0.7567307076700628
5.61073738132759 -0.24219862383124224
5.631751379010465 -0.5125378280491243
5.65276537669334 -0.14817757149732258
5.673779374376215 -0.059543461085104284
5.69479337205909 -0.07404084969062283
5.715807369741965 0.06838207045207122
5.73682136742484 0.00720846773340722
5.757835365107715 0.14904174929020586
5.77884936279059 0.21429843688006844
5.799863360473465 -0.12806012166224962
5.8208773581563396 -0.22006598530250332
5.8418913558392145 -0.49618236638574853
5.8629053535220885 -0.8841193381431568
5.8839193512049635 -1.2012248534668872
5.904933348887838 -1.4493445088282495
5.925947346570713 -2.1075446008438767
5.946961344253588 -1.541582498748978
5.967975341936463 -2.0147229289823425
5.988989339619338 -2.2078045542029896
6.010003337302213 -2.467111374682806
6.031017334985088 -1.8561933450948547
6.052031332667963 -2.222459733873345
6.073045330350838 -2.0535376309771367
6.094059328033713 -1.7887028848220365
6.115073325716588 -1.4994796532579218
6.136087323399463 -1.5785104619899815
6.1571013210823375 -1.0042099198350283
6.178115318765212 -0.9964468106577317
6.1991293164480865 -0.5511365331477565
6.220143314130961 -0.6913880447173069
6.241157311813836 -0.6721482997464577
6.262171309496711 -0.8929737091096578
6.283185307179586 -0.6980172227961545
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Data generation for polyglot data science example\n",
"\n",
"In order to run the full [Polyglot Data Science with IPython notebook](polyglot-ds.ipynb), you will need to install [Julia](https://julialang.org/downloads), and then the following (assuming a conda-based deployment that will automatically pull in R, otherwise you also need ot install R):\n",
"\n",
"```\n",
"conda install jupyter cython pandas matplotlib seaborn\n",
"conda install rpy2\n",
"pip install julia fortran-magic \n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We generate synthetic data according to\n",
"\n",
"$$\n",
"y(x) = a x + b x^2 + c \\sin(x^2) + \\cal{N}(0, \\epsilon)\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"npts = 300\n",
"eps = 0.2 # noise\n",
"a, b, c = 1, -0.2, 1 # model coefficients\n",
"\n",
"np.random.seed(1234)\n",
"x = np.linspace(0, 2*np.pi, npts)\n",
"y = a*x + b*x**2 + c*np.sin(x**2) + np.random.normal(scale=eps, size=npts)\n",
"plt.plot(x, y, 'o');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Write it to a CSV file for convenient retrieval in a \"typical\" workflow, Pandas does the job nicely:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.000000</td>\n",
" <td>0.094287</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.021014</td>\n",
" <td>-0.216828</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.042028</td>\n",
" <td>0.329982</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"0 0.000000 0.094287\n",
"1 0.021014 -0.216828\n",
"2 0.042028 0.329982"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.DataFrame({'x':x, 'y':y})\n",
"data.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x,y\n",
"0.0,0.09428703274649862\n",
"0.02101399768287487,-0.21682787079387694\n"
]
}
],
"source": [
"data.to_csv('data.csv', index=False)\n",
"!head -3 data.csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sanity check"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.000000</td>\n",
" <td>0.094287</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.021014</td>\n",
" <td>-0.216828</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.042028</td>\n",
" <td>0.329982</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"0 0.000000 0.094287\n",
"1 0.021014 -0.216828\n",
"2 0.042028 0.329982"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data2 = pd.read_csv('data.csv')\n",
"data2.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"x 5.894937e-14\n",
"y 1.431537e-14\n",
"dtype: float64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(data2-data).abs().sum()"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernel_info": {
"name": "python3"
},
"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.6.5"
},
"nteract": {
"version": "0.8.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@fperez
Copy link
Author

fperez commented Apr 22, 2018

@teoliphant
Copy link

This is really nice work! I look forward to more of this kind of interoperability.

@pnavaro
Copy link

pnavaro commented Apr 22, 2018

Nice work, thanks !

  • I had to install PyCall in julia with Pkg.add("PyCall")
  • Minor error in cell [25] sin(x**2) instead of sin(xx**2)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment