<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing any discussions tagged with Data Science sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2593151" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1872608" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1432072" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1868945" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/842698" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1257547" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/326240" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2007434" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2825207" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/258719" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1167544" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/463721" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2051264" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1727272" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/942720" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3062832" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2380163" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/289856" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1407711" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/567757" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2593151">
    <title>⭐ [R&amp;amp;DL] Wolfram R&amp;amp;D Developers on LIVE Stream</title>
    <link>https://community.wolfram.com/groups/-/m/t/2593151</link>
    <description>**Introducing our brand new YouTube channel, [Wolfram R&amp;amp;D][1]! Our channel features livestreams, behind-the-scenes creator presentations, insider videos, and more.**&#xD;
&#xD;
----------&#xD;
&#xD;
Join us for the unique Wolfram R&amp;amp;D livestreams on [Twitch][2] and [YouTube][3] led by our developers! &#xD;
&#xD;
You will see **LIVE** stream indicators on these channels on the dates listed below. The live streams provide tutorials and behind the scenes look at Mathematica and the Wolfram Language directly from developers.&#xD;
&#xD;
Join our livestreams every Wednesday at 11 AM CST and interact with developers who work on data science, machine learning, image processing, visualization, geometry, and other areas.&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
⭕ **UPCOMING** EVENTS&#xD;
&#xD;
&#xD;
- Jan 29 -- Reinforcement Learning Applied to Feedback Control with [Suba Thomas][61]&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
✅ **PAST** EVENTS  &#xD;
&#xD;
&#xD;
- April 24 -- [FeynCalc][60]&#xD;
- April 3 -- [Explore the Total Solar Eclipse of April 2024][59]&#xD;
- Mar 22 -- [20 Years of xAct Tensor Computer Algebra][58] &#xD;
- Feb 28 -- [Zero Knowledge Authentication][57]&#xD;
- Jan 17 -- [Nutrients by the Numbers][56]&#xD;
- Dec 13 -- [Understanding Graphics][55]&#xD;
- Oct 18 -- [Overview of Number Theory][54]&#xD;
- Sep 27 -- [QMRITools: Processing Quantitative MRI Data][52]&#xD;
- Sep 13 -- [Make High Quality Graph Visualization][51]&#xD;
- Sep 6 -- [Insider&amp;#039;s View of Graphs &amp;amp; Networks][53]&#xD;
- Aug 30 -- [Labeling Everywhere][49]&#xD;
- Aug 22 -- [Equation Generator for Equation-of-Motion Coupled Cluster Assisted by CAS][48]&#xD;
- Aug 16 -- [Foreign Function Interface][4]&#xD;
- July 26 -- [Modeling Fluid Circuits][6]&#xD;
- July 19 -- [Geocomputation][5]&#xD;
- July 5 -- [Protein Visualization][7]&#xD;
- Jun 14 -- [Chat Notebooks bring the power of Notebooks to LLMs][8]&#xD;
- May 31-- [Probability and Statistics: Random Sampling][9]&#xD;
- May 24 -- [Problem Solving][10]&#xD;
- May 17 -- [The state of Optimization][11]&#xD;
- May 10 -- [Building a video game with Wolfram notebooks][12]&#xD;
- April 26 -- [Control Systems: An Overview][13]&#xD;
- April 19 -- [MaXrd: A crystallography package developed for research support][14]&#xD;
- April 5th -- [Relational database in the Wolfram Language][15]&#xD;
- Mar 29th -- [Build your first game in the Wolfram Language with Unity game engine] [16]&#xD;
- Mar 22nd -- [Everything to know about Mellin-Barnes Integrals - Part II][17]&#xD;
- Mar 15th -- [Building your own Shakespearean GPT - a ChatGPT like GPT model][18]&#xD;
- Mar 8th -- [Understand Time, Date and Calendars][19]&#xD;
- Mar 1st -- [Introducing Astro Computation][20]&#xD;
- Feb 22nd -- [Latest features in System Modeler][21]&#xD;
- Feb 15th -- [Everything to know about Mellin-Barnes Integrals][22]&#xD;
- Feb 8th -- [Dive into Video Processing][23]&#xD;
- Feb 1st -- [PDE Modeling][24]&#xD;
- Jan. 25th -- [Ask Integration Questions to Oleg Marichev][25]&#xD;
- Jan. 18th -- [My Developer Tools][26]&#xD;
- Jan. 11th -- [Principles of Dynamic Interfaces][27]&#xD;
- Dec. 14th -- [Wolfram Resource System: Repositories &amp;amp; Archives][28]&#xD;
- Dec. 7th -- [Inner Workings of ImageStitch: Image Registration, Projection and Blending][29]&#xD;
- Nov. 30th -- [Q&amp;amp;A for Calculus and Algebra][30]&#xD;
- Nov. 23rd -- [xAct: Efficient Tensor Computer Algebra][31]&#xD;
- Nov. 16th -- [Latest in Machine Learning][32]&#xD;
- Nov. 9th -- [Computational Geology][33]&#xD;
- Nov. 2nd -- [Behind the Scenes at the Wolfram Technology Conference 2022][34]&#xD;
- Oct 26th -- [Group Theory Package (GTPack) and Symmetry Principles in Condensed Matter][35]&#xD;
- Oct 12th -- [Tree Representation for XML, JSON and Symbolic Expressions][36]&#xD;
- Oct. 5th -- [A Computational Exploration of Alcoholic Beverages][37]&#xD;
- Sept. 28th -- [Q&amp;amp;A with Visualization &amp;amp; Graphics Developers][38]&#xD;
- Sept. 14th -- [Paclet Development][39]&#xD;
- Sept. 7th -- [Overview of Chemistry][40]&#xD;
- Aug. 24th -- [Dive into Visualization][41]  &#xD;
- Aug. 17th -- [Latest in Graphics &amp;amp; Shaders][42]   &#xD;
- Aug. 10th -- [What&amp;#039;s new in Calculus &amp;amp; Algebra][43]   &#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&amp;gt; **What are your interests? Leave a comment here on this post to share your favorite topic suggestions for our livestreams.**  &#xD;
**Follow us on our live broadcasting channels [Twitch][44] and [YouTube][45] and for the up-to-date announcements on our social media: [Facebook][46] and [Twitter][47].**&#xD;
&#xD;
&#xD;
  [1]: https://wolfr.am/1eatWLcDA&#xD;
  [2]: https://www.twitch.tv/wolfram&#xD;
  [3]: https://wolfr.am/1eatWLcDA&#xD;
  [4]: https://www.youtube.com/watch?v=C82NHpy7D6k&#xD;
  [5]: https://community.wolfram.com/groups/-/m/t/2985580&#xD;
  [6]: https://community.wolfram.com/groups/-/m/t/2982197&#xD;
  [7]: https://community.wolfram.com/groups/-/m/t/2982114&#xD;
  [8]: https://youtu.be/ZqawtrWwE0c&#xD;
  [9]: https://community.wolfram.com/groups/-/m/t/2946101&#xD;
  [10]: https://community.wolfram.com/groups/-/m/t/2925156&#xD;
  [11]: https://community.wolfram.com/groups/-/m/t/2921756&#xD;
  [12]: https://community.wolfram.com/groups/-/m/t/2918746&#xD;
  [13]: https://community.wolfram.com/groups/-/m/t/2917597&#xD;
  [14]: https://community.wolfram.com/groups/-/m/t/2911327&#xD;
  [15]: https://community.wolfram.com/groups/-/m/t/2907390&#xD;
  [16]: https://community.wolfram.com/groups/-/m/t/2921593&#xD;
  [17]: https://community.wolfram.com/groups/-/m/t/2861119&#xD;
  [18]: https://community.wolfram.com/groups/-/m/t/2847286&#xD;
  [19]: https://community.wolfram.com/groups/-/m/t/2851575&#xD;
  [20]: https://community.wolfram.com/groups/-/m/t/2852934&#xD;
  [21]: https://community.wolfram.com/groups/-/m/t/2842136&#xD;
  [22]: https://community.wolfram.com/groups/-/m/t/2838335&#xD;
  [23]: https://community.wolfram.com/groups/-/m/t/2827166&#xD;
  [24]: https://community.wolfram.com/groups/-/m/t/2823264&#xD;
  [25]: https://community.wolfram.com/groups/-/m/t/2821053&#xD;
  [26]: https://youtu.be/istKGqpDUsw&#xD;
  [27]: https://community.wolfram.com/groups/-/m/t/2777853&#xD;
  [28]: https://youtu.be/roCkXVkDuLA&#xD;
  [29]: https://youtu.be/pYHAz-NatXI&#xD;
  [30]: https://youtu.be/r7Hjdr_D7c4&#xD;
  [31]: https://community.wolfram.com/groups/-/m/t/2713818&#xD;
  [32]: https://community.wolfram.com/groups/-/m/t/2705779&#xD;
  [33]: https://community.wolfram.com/groups/-/m/t/2701172&#xD;
  [34]: https://youtu.be/UrM-OBu3H9o&#xD;
  [35]: https://community.wolfram.com/groups/-/m/t/2678940&#xD;
  [36]: https://community.wolfram.com/groups/-/m/t/2649407&#xD;
  [37]: https://community.wolfram.com/groups/-/m/t/2635049&#xD;
  [38]: https://community.wolfram.com/groups/-/m/t/2618033&#xD;
  [39]: https://community.wolfram.com/groups/-/m/t/2616863&#xD;
  [40]: https://community.wolfram.com/groups/-/m/t/2613617&#xD;
  [41]: https://community.wolfram.com/groups/-/m/t/2605432&#xD;
  [42]: https://community.wolfram.com/groups/-/m/t/2600997&#xD;
  [43]: https://community.wolfram.com/groups/-/m/t/2596451&#xD;
  [44]: https://www.twitch.tv/wolfram&#xD;
  [45]: https://wolfr.am/1eatWLcDA&#xD;
  [46]: https://www.facebook.com/wolframresearch&#xD;
  [47]: https://twitter.com/WolframResearch&#xD;
  [48]: https://www.youtube.com/live/ElP55ZILxPw?si=nsAPOQ3u-RbvuGKX&#xD;
  [49]: https://community.wolfram.com/groups/-/m/t/3007543&#xD;
  [50]: https://community.wolfram.com/web/charlesp&#xD;
  [51]: https://community.wolfram.com/groups/-/m/t/3019288&#xD;
  [52]: https://www.youtube.com/live/KM1yWHRrF2k?si=g2R7rHB2IinVRpo6&#xD;
  [53]: https://community.wolfram.com/groups/-/m/t/3009184&#xD;
  [54]: https://community.wolfram.com/groups/-/m/t/3064700&#xD;
  [55]: https://community.wolfram.com/groups/-/m/t/3084291&#xD;
  [56]: https://community.wolfram.com/groups/-/m/t/3104670&#xD;
  [57]: https://community.wolfram.com/groups/-/m/t/3164204&#xD;
  [58]: https://youtube.com/playlist?list=PLdIcYTEZ4S8TSEk7YmJMvyECtF-KA1SQ2&amp;amp;si=paXZHs0ZzGdB7y1y&#xD;
  [59]: https://youtube.com/playlist?list=PLdIcYTEZ4S8RyjEB7JSAsGerbYHl5xXeJ&amp;amp;si=xkNtkIDvKHFWHVmD&#xD;
  [60]: https://youtu.be/KUWK19Gx2LE?si=qbKISbL8FtvweSWo&#xD;
  [61]: https://community.wolfram.com/web/subat</description>
    <dc:creator>Charles Pooh</dc:creator>
    <dc:date>2022-08-05T21:37:19Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1872608">
    <title>⭐ [COVID] Computational Research HUB For Novel Coronavirus: Data, Code, Visualizations, Notebooks</title>
    <link>https://community.wolfram.com/groups/-/m/t/1872608</link>
    <description>*Short URL to share this post*: https://wolfr.am/coronavirus&#xD;
&#xD;
***JOIN*** *our* ***Medical Sciences*** *group for the latest updates &amp;amp; best networking*: https://wolfr.am/MedicalSciences&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
This post is intended to be the hub for Wolfram resources related to novel coronavirus disease COVID-19 that originated in Wuhan, China. The larger aim is to provide a forum for disseminating ways in which Wolfram technologies and coding can be utilized to shed light on the virus and pandemic. Possibilities include using the Wolfram Language for data-mining, modeling, analysis, visualizations, and so forth. Among other things, we encourage comments and feedback on these resources. Please note that this is intended for technical analysis and discussion supported by computation. Aspects outside this scope and better suited for different forums should be avoided. Thank you for your contribution!&#xD;
&#xD;
## ________________________________________ &#xD;
## FEATURED CONTENT&#xD;
&#xD;
- [COVID-19 Livestream Notebook March 24][8] by Stephen Wolfram&#xD;
- [Agent-Based Networks Models for COVID-19][9] by Christopher Wolfram&#xD;
- [Live-Stream: Exploring Pandemic Data][10] by Stephen &amp;amp; Christopher Wolfram + guests &#xD;
- [Live-Stream: Exploring and Explaining Epidemic Modeling][11] by Stephen &amp;amp; Christopher Wolfram + guests &#xD;
&#xD;
## ________________________________________ &#xD;
## [CALL for Making COVID-19 Data Computable  (*link*)][12]&#xD;
	&#xD;
More pandemic-related information and data sets emerging every day. We invite people in the community to contribute to making more data surrounding this topic computable. Here is a call to action with some recommendations for people who want to do more, whether it&amp;#039;s just pointing out relevant data sources, or taking the time to make some of that data computable and more instantly ready for other people to explore: https://wolfr.am/COVID-19-DATA .&#xD;
&#xD;
&#xD;
## ________________________________________ &#xD;
## [Curated Computable Data (*link*)][13] &#xD;
&#xD;
[FOLLOW THIS LINK][14] to see all available COVID-19 data repositories ready for computation in the Wolfram Language .&#xD;
&#xD;
[Changes in Updates to SARS-CoV-2 Sequences in the Wolfram Data Repository][16]&#xD;
&#xD;
We have published and are continuously updating the Wolfram Data Repository entries. Below are a few key ones. Follow the link above to browse all repositories. We encourage you to make [*your own contributions*][15] of curated data relevant to COVID-19.&#xD;
&#xD;
&#xD;
&amp;gt; **Pandemic Data for Novel Coronavirus COVID-19**&#xD;
&#xD;
&amp;gt; https://www.wolframcloud.com/obj/resourcesystem/published/DataRepository/resources/Epidemic-Data-for-Novel-Coronavirus-COVID-19&#xD;
&#xD;
&amp;gt; **Genetic Sequences for the SARS-CoV-2 Coronavirus**&#xD;
&#xD;
&amp;gt; https://datarepository.wolframcloud.com/resources/Genetic-Sequences-for-the-SARS-CoV-2-Coronavirus&#xD;
&#xD;
&amp;gt; **Patient Medical Data for Novel Coronavirus COVID-19**&#xD;
&#xD;
&amp;gt; https://datarepository.wolframcloud.com/resources/Patient-Medical-Data-for-Novel-Coronavirus-COVID-19&#xD;
&#xD;
&amp;gt; **COVID-19 Hospital Resource Use Projections**&#xD;
&#xD;
&amp;gt; https://datarepository.wolframcloud.com/resources/COVID-19-Hospital-Resource-Use-Projections&#xD;
&#xD;
&amp;gt; **OECD Data: Hospital Beds Per Country**&#xD;
&#xD;
&amp;gt; https://datarepository.wolframcloud.com/resources/OECD-Data-Hospital-Beds-Per-Country&#xD;
&#xD;
&amp;gt; **Hospital Beds Per US State**&#xD;
&#xD;
&amp;gt; https://datarepository.wolframcloud.com/resources/Hospital-Beds-Per-US-State&#xD;
&#xD;
## ________________________________________ &#xD;
## [Computational Publications (*link*)][17] &#xD;
&#xD;
We encourage you to share your computational explorations relevant to coronavirus on Wolfram Community as stand-alone articles and then comment with their URL links on this discussion thread. We will summarize these articles in the following list: &#xD;
&#xD;
### ________________________________&#xD;
###FEATURED&#xD;
&#xD;
&amp;gt; **COVID-19 Livestream Notebook March 24** by Stephen Wolfram&#xD;
&#xD;
&amp;gt; https://www.wolframcloud.com/obj/s.wolfram/Published/COVID-19-Livestream-March-24.nb&#xD;
&#xD;
&amp;gt; **Agent-Based Networks Models for COVID-19** by Christopher Wolfram&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1907703&#xD;
&#xD;
&amp;gt; **Epidemiological Models for Influenza and COVID-19** by Robert Nachbar&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1896178&#xD;
&#xD;
&amp;gt; **Epidemic simulation with a polygon container** by Francisco Rodríguez&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1901002&#xD;
&#xD;
&amp;gt; **Distance to nearest confirmed US COVID-19 case** by Chip Hurst &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1911583&#xD;
&#xD;
&#xD;
### ________________________________&#xD;
### EPIDEMIC MODELING: SIMULATION&#xD;
&#xD;
&#xD;
&amp;gt; **Epidemic simulation with a polygon container** by Francisco Rodríguez&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1901002&#xD;
&#xD;
&amp;gt; **Agent based epidemic simulation** by Jon McLoone&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1900481&#xD;
&#xD;
&amp;gt; **Modeling the spatial spread of infection diseases in the US** by Diego Zviovich &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1889072&#xD;
&#xD;
&amp;gt; **Geo-spatial-temporal COVID-19 simulations and visualizations over USA** by Diego Zviovich &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1900514&#xD;
&#xD;
&amp;gt; **Life, Liberty, and Lockdowns: cellular automaton approach** by Philip Maymin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2181433&#xD;
&#xD;
### ________________________________&#xD;
### EPIDEMIC MODELING: COMPARTMENTAL&#xD;
&#xD;
&amp;gt; **Teaching notebook on disease models** by Gareth Russell&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2694698&#xD;
&#xD;
&amp;gt; **Stochastic Epidemiology Models with Applications to the COVID-19** by Robert Nachbar&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1980051&#xD;
&#xD;
&amp;gt; **COVID19: Italian SIRD estimates and prediction** by Christos Papahristodoulou&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1984320&#xD;
&#xD;
&amp;gt; **Solver for COVID-19 epidemic model with the Caputo fractional derivatives** by Alexander Trounev&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1976589&#xD;
&#xD;
&amp;gt; **EpiPlay: using Mathematica to gamify education in epidemiology** by Rui Alves&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2535927&#xD;
&#xD;
&amp;gt; **Epidemiological Model for repetitive rapid testing for COVID-19** by Diego Zviovich&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2075883&#xD;
&#xD;
&amp;gt; **Phase transition of a SIR agent-based models** by Diego Zviovich &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1977230&#xD;
&#xD;
&amp;gt; **A simple estimate of covid-19 fatalities based on past data** by Kay Herbert&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1959438&#xD;
&#xD;
&amp;gt; **SIR Model with Log-normal infected periods** by Diego Zviovich &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1946292&#xD;
&#xD;
&amp;gt; **SEI2HR-Econ model with quarantine and supplies scenarios** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1937880&#xD;
&#xD;
&amp;gt; **COVID-19 - Policy Simulator - Can you find the perfect policy?** by Jan Brugard&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1931352&#xD;
&#xD;
&amp;gt; **Epidemiological Models for Influenza and COVID-19** by Robert Nachbar&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1896178&#xD;
&#xD;
&amp;gt; **Exploring Epidemiological Modeling** by Jordan Hasler&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1920119&#xD;
&#xD;
&amp;gt; **SEI2HR model with quarantine scenarios** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1926505&#xD;
&#xD;
&amp;gt; **The SIR Model for Spread of Disease** by Arnoud Buzing&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1903289&#xD;
&#xD;
&amp;gt; **COVID-19 - R0 and Herd Immunity - are we getting closer?** by Jan Brugard&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1911422&#xD;
&#xD;
&amp;gt; **Basic experiments workflow for simple epidemiological models** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1895675&#xD;
&#xD;
&amp;gt; **Scaling of epidemiology models with multi-site compartments** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1897377&#xD;
&#xD;
&amp;gt; **WirVsVirus 2020 hackathon participation** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1907256&#xD;
&#xD;
&amp;gt; **An SEIR like model that fits the coronavirus infection data** by Enrique Garcia Moreno&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1888335&#xD;
&#xD;
&amp;gt; **A SEIRD Model For COVID-19 Using DDEs** by Luis Borgonovo&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1996374&#xD;
&#xD;
&amp;gt; **A Neat Package for Compartmental Model Diagrams** by Hamza Alsamraee&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2078640&#xD;
&#xD;
&amp;gt; **Redesign of didactics of S(E)IR(D) -&amp;gt; SI(EY)A(CD) models of epidemics** by Thomas Colignatus&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2004784&#xD;
&#xD;
&amp;gt; **COVID-19 SIR models: transmission, vaccination, herd immunity dynamics revealed** by Athanasios Paraskevopoulos&#xD;
&#xD;
&amp;gt;  https://community.wolfram.com/groups/-/m/t/3008488&#xD;
&#xD;
### ________________________________&#xD;
### EPIDEMIC MODELING: LOGISTIC&#xD;
&#xD;
&amp;gt; **COVID-19 pandemic data in Italy** by Riccardo Fantoni &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1909687&#xD;
&#xD;
&amp;gt; **Predicting Coronavirus Epidemic in United States** by Robert Rimmer &#xD;
&#xD;
&amp;gt;https://community.wolfram.com/groups/-/m/t/1906954&#xD;
&#xD;
&amp;gt; **Tracking Coronavirus Testing in the United States** by Robert Rimmer &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1902302&#xD;
&#xD;
&amp;gt; **Logistic Model for Quarantine Controlled Epidemics** by Robert Rimmer &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1900530&#xD;
&#xD;
&amp;gt; **Updated: coronavirus logistic growth model: China** by Robert Rimmer&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1890271&#xD;
&#xD;
&amp;gt; **Coronavirus logistic growth model: China** by Robert Rimmer&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1887435&#xD;
&#xD;
&amp;gt; **Coronavirus logistic growth model: Italy and South Korea** by Robert Rimmer&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1887823&#xD;
&#xD;
&amp;gt; **Coronavirus logistic growth model: South Korea** by Robert Rimmer&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1894561&#xD;
&#xD;
&amp;gt; **Logistic growth model for epidemic Covid-19 in Colombia** by Diego Ramos&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2092786&#xD;
&#xD;
### ________________________________&#xD;
### GENOMICS &#xD;
&#xD;
&amp;gt; **Analyzing the spread of SARS-CoV-2 variants in California** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2205357&#xD;
&#xD;
&amp;gt; **Analyzing the spread of SARS-CoV-2 variants in Florida** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2206874&#xD;
&#xD;
&amp;gt; **Analyzing Nextstrain Data with WFR Newick Functions (COVID-19/SARS-CoV-2)** by John Cassel&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1958952&#xD;
&#xD;
&amp;gt; **Finding and analyzing a COVID subvariant in Australia** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2342489&#xD;
&#xD;
&amp;gt; **Analyzing SARS-CoV-2 Genetic Sequences** by John Cassel &amp;amp; Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://blog.wolfram.com/2021/08/19/newick-trees-proximity-resources-and-accessions-analyzing-sars-cov-2-genetic-sequences/&#xD;
&#xD;
&amp;gt; **Estimating the number of times the SARS CoV-2 virus has replicated** by Carlos Munoz&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1943243&#xD;
&#xD;
&amp;gt;**From sequenced SARS-CoV-2 genomes to a phylogenetic tree** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt;https://community.wolfram.com/groups/-/m/t/1961461&#xD;
&#xD;
&amp;gt; **Genome analysis and the SARS-nCoV-2** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1874816&#xD;
&#xD;
&amp;gt; **Visualizing Sequence Alignments from the COVID-19** by Jessica Shi&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1875352&#xD;
&#xD;
&amp;gt; **A walk-through of the SARS-CoV-2 nucleotide Wolfram resource**  by  John Cassel&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1887456&#xD;
&#xD;
&amp;gt; **Geometrical analysis of genome for COVID-19 vs SARS-like viruses** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1878824&#xD;
&#xD;
&amp;gt; **Chaos Game For Clustering of Novel Coronavirus COVID-19**  by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1875994&#xD;
&#xD;
### ________________________________&#xD;
### DATA ANALYSIS&#xD;
&#xD;
&amp;gt; **Optimal Annual COVID-19 Vaccine Boosting Dates Following Previous Booster Vaccination or Breakthrough Infection** by Jeffrey Townsend&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/3341399&#xD;
&#xD;
&amp;gt; **Probability of early infection extinction depends linearly on the virus clearance rate** by Nóra Juhász&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/3307502&#xD;
&#xD;
&amp;gt; **Detecting Global Community Structure in a COVID-19 Activity Correlation Network** by Hiroki Sayama&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/3056172&#xD;
&#xD;
&amp;gt; **Analyzing trends of COVID-19 through public news feeds** by Silvia Hao&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2569395&#xD;
&#xD;
&amp;gt; **Deep neural network detection &amp;amp; clinical staging of COVID-19 chest X-rays** by Peter Riley&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2389110&#xD;
&#xD;
&amp;gt; **COVID-19 - The Swedish Experiment - Is it working?** by Jan Brugard&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1974412&#xD;
&#xD;
&amp;gt; **A simple COVID-19 spread model** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1945196&#xD;
&#xD;
&amp;gt; **COVID19: The performance of the Swedish strategy** by Christos Papahristodoulou&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1990972&#xD;
&#xD;
&amp;gt; **Exploring social trends on Covid-19 pandemic using WikipediaData** by Jofre Espigule-Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1931508&#xD;
&#xD;
&amp;gt; **Google Mobility Data** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1946686&#xD;
&#xD;
&amp;gt; **Understanding Aggregate COVID Curves** by Christopher Wolfram&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2068457&#xD;
&#xD;
&amp;gt; **Apple mobility trends data visualization** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1942813 &#xD;
&#xD;
&amp;gt; **Computing COVID-19 Spread Rates in US Cities** by Daniel Lichtblau&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1930261&#xD;
&#xD;
&amp;gt; **COVID-19 data and the Newcomb Benford Distribution** by Gustavo Delfino&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1913908 &#xD;
&#xD;
&amp;gt; **Short-time trends for COVID-19**, by Fabian Wenger&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1912710&#xD;
&#xD;
&amp;gt; **What countries are hit hard by COVID19 outbreak?** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1904507&#xD;
&#xD;
&amp;gt; **COVID19 in Iran: under-diagnosis issue** by Mads Bahrami &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1891140&#xD;
&#xD;
&amp;gt; **Coronavirus analysis: descriptive statistics with SQL functions** by Damian Calin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2206078&#xD;
&#xD;
&amp;gt; **Covid-19 vaccine campaigns efficacy analysis** by Damian Calin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2383314&#xD;
&#xD;
&amp;gt; **Argentina: COVID-19 Data Analysis** by Tobias Canavesi&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1932910&#xD;
&#xD;
&amp;gt; **Analysis of the Change in Phillips Curve After COVID-19 with Regression** by Seojin Yoon&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2055704&#xD;
&#xD;
&amp;gt; **COVID wave alert: statistical analysis and visualization** by Antonio Neves&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2115658&#xD;
&#xD;
&amp;gt; **Predicting COVID-19 using cough sounds classification** by Siria Sadeddin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2166833&#xD;
&#xD;
&amp;gt; **Covid-19 vaccination data analysis using SQL functions** by Damian Calin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2324474&#xD;
&#xD;
&amp;gt; **Analyzing COVID-19 vaccine sentiment over time** by Arshaan Sayed&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2317293&#xD;
&#xD;
&amp;gt; **VAERS data analysis using SQL functions** by Damian Calin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2351726&#xD;
&#xD;
&amp;gt; **Correlating COVID-19 government measures to biweekly/daily outbreaks** by Arshaan Sayed&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2362327&#xD;
&#xD;
&amp;gt; **Plotting Covid19 sentiment in different regions of Chennai** by Aditya Sairam Prakash&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2388236&#xD;
&#xD;
### ________________________________&#xD;
### DATA VISUALIZATIONS&#xD;
&#xD;
&amp;gt; **CDC COVID19 vaccination data across US counties** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2282418&#xD;
&#xD;
&amp;gt; **Top 20 COVID countries HeatMap by absolute death and death in ppm** by Rodrigo Murta&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2004800&#xD;
&#xD;
&amp;gt; **COVIDWORLD app: current data and visualizations for SARS-CoV2 pandemic** by Rui Alves&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2473065&#xD;
&#xD;
&amp;gt; **US Counties COVID-19 confirmed cases by population density timelines** by  Bob Sandheinrich&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1992898&#xD;
&#xD;
&amp;gt; **3D Modeling of the SARS-CoV-2 Virus in the Wolfram Language** by Jeff Bryant&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1989540&#xD;
&#xD;
&amp;gt; **California COVID19 Data** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2132204&#xD;
&#xD;
&amp;gt; **COVID-19 progress in Peru macro regions: coast vs mountain vs jungle** by Francisco Rodríguez&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1965079&#xD;
&#xD;
&amp;gt; **COVID-19 reopening criterion: a simple visualization** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1962615&#xD;
&#xD;
&amp;gt; **100 Days of COVID19 Over US Counties** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1956368&#xD;
&#xD;
&amp;gt; **Population Density Map** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1955760&#xD;
&#xD;
&amp;gt; **Google Mobility Data** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1946686&#xD;
&#xD;
&amp;gt; **COVID19 Case-Fatality Ratio, Income, and Age: Simple Visualization** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1939045&#xD;
&#xD;
&amp;gt; **Data Analysis of Coronavirus in Mexico** by Ivan Martinez&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1927657&#xD;
&#xD;
&amp;gt; **Confirmed COVID-19 Cases in Catalonia** by Bernat Espigulé Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1919468&#xD;
&#xD;
&amp;gt; **Distance to nearest confirmed US COVID-19 case** by Chip Hurst &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1911583&#xD;
&#xD;
&amp;gt; **COVID19 Confirmed Cases: US Counties** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1950980&#xD;
&#xD;
&amp;gt; **COVID19 data visualization across US counties** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2119049&#xD;
&#xD;
&amp;gt; **Maps for Visualizing Covid-19&amp;#039;s Effect** by Eric Mockensturm&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1934457&#xD;
&#xD;
&amp;gt; **US Counties COVID-19 deaths plot** by Bob Sandheinrich&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1918332&#xD;
&#xD;
&amp;gt; **Comparing the spread of COVID-19 between countries**, Jan Brugard&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1905992&#xD;
&#xD;
&amp;gt; **NY Times COVID-19 data visualization** by Anton Antonov&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1911668&#xD;
&#xD;
&amp;gt; **COVID-19 cases for each administrative division in Spain** by Bernat Espigulé Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1910116&#xD;
&#xD;
&amp;gt; **Propagation risk of COVID-19 by local contact in Spain (10 - 14 March)** by Bernat Espigulé Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1898126&#xD;
&#xD;
&amp;gt; **Visualizing the Pandemic Data COVID-19** by Martijn Froeling&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1899870&#xD;
&#xD;
&amp;gt; **COVID-19 visualization of turning point** by Isao Maruyama&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1899911&#xD;
&#xD;
&amp;gt; **Mapping &amp;#034;Live&amp;#034; COVID Data on a Globe** by  Gabriel Lemieux &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1902102&#xD;
&#xD;
&amp;gt; **Novel Coronavirus COVID-19 in Brazil** by Estevao Teixeira &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1905950&#xD;
&#xD;
&amp;gt; **Mapping Novel Coronavirus COVID-19 Outbreak** by Jofre Espigule-Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1868945&#xD;
&#xD;
&amp;gt; **Ways to visualize COVID-19 simulation results?** by Kyle Keane&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1962739&#xD;
&#xD;
&amp;gt; **General and COVID-19 deaths in Sweden** by Oscar Rodriguez&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2006377&#xD;
&#xD;
&amp;gt; **COVID19 Tokyo per days of the week** Isao Maruyama&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2133807&#xD;
&#xD;
### ________________________________&#xD;
### DATA PROCESSING&#xD;
&#xD;
&amp;gt; **Cov-Tell: Daily COVID-19 Updates with Alexa (made with Wolfram APIFunction)** by Jessica Shi&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1958307&#xD;
&#xD;
&amp;gt; **Build a COVID-19 Chest X-Ray Image Uploader with Cloud &amp;amp; Data Drop** by Jofre Espigule-Pons&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1919770&#xD;
&#xD;
&amp;gt; **Scraping OpenTable&amp;#039;s &amp;#034;State of the Industry&amp;#034; page** by Aaron Enright&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1911043&#xD;
&#xD;
&amp;gt; **City-level Search Tool for Coronavirus (COVID-19) Confirmed Cases** by David Lomiashvili&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1913247&#xD;
&#xD;
&amp;gt; **Web Scraper: New York Times Coronavirus Data** by Robert Rimmer &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1894426&#xD;
&#xD;
&amp;gt; **TraCOV: Personalized COVID-19 Risk Analysis Tool** by Jessica Shi&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1977700&#xD;
&#xD;
&amp;gt; **Mobility changes data: transforming to Wolfram Language dataset** by Mads Bahrami&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2160386&#xD;
&#xD;
&#xD;
### ________________________________&#xD;
### MASKS&#xD;
&#xD;
&amp;gt; **Effect of mandatory mask usage in COVID cases** by Diego Zviovich &#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/1919060&#xD;
&#xD;
&amp;gt; **Face mask detection: classifying image data** by Siria Sadeddin&#xD;
&#xD;
&amp;gt; https://community.wolfram.com/groups/-/m/t/2139499&#xD;
&#xD;
&#xD;
## ________________________________________ &#xD;
## [Livestream Archives (*link*)][18]&#xD;
&#xD;
- Stephen &amp;amp; Christopher Wolfram + guests [Exploring Pandemic Data][19]&#xD;
- Stephen &amp;amp; Christopher Wolfram + guests [Exploring and Explaining Epidemic Modeling][20]&#xD;
- Robert Nachbar - [Epidemiological Models for Influenza and COVID-19][21]&#xD;
- Brian Wood - [COVID-19 Dashboard Visualizations][22]&#xD;
- John Cassel - [Behind the Genetic Sequences for Novel Coronavirus SARS-CoV-2][23]&#xD;
- Keiko Hirayama - [Patient Data Exploration for the Novel Coronavirus COVID-19][24]&#xD;
- Keiko Hirayama - [Pandemic Data Exploration for the Novel Coronavirus COVID-19][25]&#xD;
- Diego Zviovich - [Geo-spatial-temporal COVID-19 Simulations and Visualizations Over USA][26]&#xD;
- Anton Antonov - [COVID19 Epidemic Modeling: Compartmental Models][27]&#xD;
- Anton Antonov - [Scaling of Epidemiology Models with Multi-site Compartments][28]&#xD;
- Anton Antonov - [Simple Economic Extension of Compartmental Epidemiological Models][29]&#xD;
-  Juan Klopper - [Coronavirus medical data analysis][30]&#xD;
-  Juan Klopper - [Coronavrirus epidemiological data analysis][31]&#xD;
- Rory Foulger - [Coronavirus Data Exploration - Wolfram Livecoding with Students][32]&#xD;
&#xD;
## ________________________________________ &#xD;
## Other useful resources&#xD;
&#xD;
- Arnoud Buzing [GitHub][33] repository and [Notebook Gallery][34] for coronavirus &#xD;
- [Modeling a Pandemic like Ebola with the Wolfram Language](https://blog.wolfram.com/2014/11/04/modeling-a-pandemic-like-ebola-with-the-wolfram-language)&#xD;
- [Epidemics at Wolfram Demonstrations](https://demonstrations.wolfram.com/search.html?query=epidemic)&#xD;
- [IGSIRProcess - IGraph Epidemic models][35]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=1China_c.png&amp;amp;userId=1624544&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=1.5US_c.png&amp;amp;userId=1624544&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2World_c.png&amp;amp;userId=1624544&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=3Genetic_c.png&amp;amp;userId=1624544&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4Patient_c.png&amp;amp;userId=1624544&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=5Resources_c.png&amp;amp;userId=1624544&#xD;
  [7]: https://www.wolframcloud.com/obj/examples/COVID19Preview.png&#xD;
  [8]: https://www.wolframcloud.com/obj/s.wolfram/Published/COVID-19-Livestream-March-24.nb&#xD;
  [9]: https://community.wolfram.com/groups/-/m/t/1907703&#xD;
  [10]: https://youtu.be/Vs5APySGYnk&#xD;
  [11]: https://youtu.be/kC6LHAv_lx0&#xD;
  [12]: https://community.wolfram.com/groups/-/m/t/1908923&#xD;
  [13]: https://datarepository.wolframcloud.com/search/?i=COVID-19&#xD;
  [14]: https://datarepository.wolframcloud.com/search/?i=COVID-19&#xD;
  [15]: https://reference.wolfram.com/language/workflow/SubmitToTheWolframDataRepository.html&#xD;
  [16]: https://community.wolfram.com/groups/-/m/t/2238214&#xD;
  [17]: http://wolfr.am/StaffPicks&#xD;
  [18]: https://www.youtube.com/playlist?list=PLxn-kpJHbPx3_hUbroRYC_7NxcOwZ1SWa&#xD;
  [19]: https://youtu.be/Vs5APySGYnk&#xD;
  [20]: https://youtu.be/kC6LHAv_lx0&#xD;
  [21]: https://youtu.be/pcFB6_yrxGE&#xD;
  [22]: https://youtu.be/vUq8qx7kTYA&#xD;
  [23]: https://youtu.be/HCJgv3N_kDo&#xD;
  [24]: https://youtu.be/MlI_8o4A3BA&#xD;
  [25]: https://youtu.be/P86ZY-znE64&#xD;
  [26]: https://youtu.be/Kjk-sYlg-U0&#xD;
  [27]: https://youtu.be/LRs9rYCXIzs&#xD;
  [28]: https://youtu.be/b8oCNjRI0gY&#xD;
  [29]: https://youtu.be/C-sjXQiPE7s&#xD;
  [30]: https://youtu.be/gA0TPQZgNY0&#xD;
  [31]: https://youtu.be/I-n3zN4aU6c&#xD;
  [32]: https://youtu.be/4xCfPIiredM&#xD;
  [33]: https://github.com/arnoudbuzing/wolfram-coronavirus&#xD;
  [34]: https://wolfr.am/JZNRriEE&#xD;
  [35]: http://szhorvat.net/mathematica/IGDocumentation/#epidemic-models</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2020-02-04T15:18:14Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1432072">
    <title>[CALL] For Curious Cases of Words&amp;#039; Histories</title>
    <link>https://community.wolfram.com/groups/-/m/t/1432072</link>
    <description>*NOTE: This is a long page with many images. Scroll through to find some gems.*&#xD;
&#xD;
----------&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
&#xD;
[WordFrequencyData][4] is a nifty instrument for mining oceans of texts and discovering wonderful historical semantic curiosities. **This post is a call for you to share your discoveries of interesting word histories**. Rules are very simple.&#xD;
&#xD;
- Post you discovery as a comment on this thread&#xD;
&#xD;
- Your discovery should be curious histories of some words that can be seen in their WordFrequencyData&#xD;
&#xD;
- Start your comment with a title clearly indicating the meaning of your discovery (use # as the first character to make a title)&#xD;
&#xD;
-  Your comment must contain a plot WordFrequencyData of your terms. You can use the function I provide below. Alternatively you can use your own what to visualize WordFrequencyData.&#xD;
&#xD;
-  Your comment must contain Wolfram Language code you use to make the plot&#xD;
&#xD;
- Your comment must contain some text explaining why you think the words you found are curious and interesting in your opinion &#xD;
&#xD;
- *If you want to comment on someone&amp;#039;s work please click REPLY to his/her specific post so it is clear to what you refer and nested structure of comments is preserved.*&#xD;
&#xD;
Please see comment below for good examples.&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
### FUNCTION for PLOTs&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
Feel free to use this function for your visualizations and change or  improve it if you wish. Note what kind of options you can provide to this plot. I tried to limit those options to only very important once, fixing other options to make a nice plot.&#xD;
&#xD;
&#xD;
&#xD;
    ClearAll@WordFrequencyPlot;&#xD;
    &#xD;
    Options[WordFrequencyPlot]=&#xD;
    {&amp;#034;YearStart&amp;#034;-&amp;gt;1800,&amp;#034;YearEnd&amp;#034;-&amp;gt;Now,&amp;#034;Case&amp;#034;-&amp;gt;True,&#xD;
    &amp;#034;Smooth&amp;#034;-&amp;gt;3,&amp;#034;Scaling&amp;#034;-&amp;gt;None,&amp;#034;Style&amp;#034;-&amp;gt;Automatic};&#xD;
    &#xD;
    WordFrequencyPlot[words_,OptionsPattern[]]:=&#xD;
    With[{&#xD;
    	$data=WordFrequencyData[words,&amp;#034;TimeSeries&amp;#034;,&#xD;
    		{OptionValue[&amp;#034;YearStart&amp;#034;],OptionValue[&amp;#034;YearEnd&amp;#034;]},&#xD;
    		IgnoreCase-&amp;gt;OptionValue[&amp;#034;Case&amp;#034;]]},&#xD;
    	DateListPlot[&#xD;
    		MapThread[Callout,&#xD;
    			{MeanFilter[#,Quantity[OptionValue[&amp;#034;Smooth&amp;#034;],&amp;#034;Years&amp;#034;]]&amp;amp;/@&#xD;
    			Values[$data],words}],&#xD;
    		ScalingFunctions-&amp;gt;OptionValue[&amp;#034;Scaling&amp;#034;],&#xD;
    		PlotRange-&amp;gt;All,&#xD;
    		PlotTheme-&amp;gt;&amp;#034;Detailed&amp;#034;,&#xD;
    		PlotStyle-&amp;gt;OptionValue[&amp;#034;Style&amp;#034;],&#xD;
    		FrameTicks-&amp;gt;{Automatic,None},&#xD;
    		ImageSize-&amp;gt;Large,&#xD;
    		FrameLabel-&amp;gt;{&amp;#034;YEAR&amp;#034;,&amp;#034;FREQUENCY in TEXT&amp;#034;}]&#xD;
    ]&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2018-09-04at5.02.04PM.png&amp;amp;userId=11733&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2018-08-30at8.19.02PM.png&amp;amp;userId=20103&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2018-09-04at12.48.22PM.png&amp;amp;userId=11733&#xD;
  [4]: http://reference.wolfram.com/language/ref/WordFrequencyData.html</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2018-08-30T21:41:25Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1868945">
    <title>[Notebook] Mapping Novel Coronavirus COVID-19 Outbreak</title>
    <link>https://community.wolfram.com/groups/-/m/t/1868945</link>
    <description>*MODERATOR NOTE: coronavirus resources &amp;amp; updates:* https://wolfr.am/coronavirus&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
![enter image description here][1]&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4686Wuhan_Coronavirus_Outbreak_Jan29.gif&amp;amp;userId=95400&#xD;
  [2]: https://www.wolframcloud.com/obj/c2eafc69-4016-4e05-a8ad-b1d22a37379f</description>
    <dc:creator>Jofre Espigule-Pons</dc:creator>
    <dc:date>2020-01-29T02:18:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/842698">
    <title>400th anniversary of Shakespeare&amp;#039;s death</title>
    <link>https://community.wolfram.com/groups/-/m/t/842698</link>
    <description>NOTE: the actual APP that does some analysis of Shakespeare&amp;#039;s &amp;#034;Romeo and Juliet&amp;#034; is located [**HERE**][1]. Please wait through a potential little load or evaluation times, it is computing ! ;-) Read below and through comments for many ideas on Shakespeare&amp;#039;s data mining.&#xD;
&#xD;
[![enter image description here][2]][3]&#xD;
&#xD;
I also highly recommend reading recent related [blog by Jofre Espigule][4] and checking out his [Wolfram Cloud app][5] that does some social and linguistic visualizations of the Shakespeare&amp;#039;s texts:&#xD;
&#xD;
[![enter image description here][6]][5]&#xD;
&#xD;
April 23, 2016 marks 400th anniversary of Shakespeares death. Just a few decades of life&amp;#039;s work produced texts that fascinate humanity for already 400 years. This centuries-old fascination tells us Shakespeare&amp;#039;s works highlight the perpetual social and cultural phenomena. And also that Shakespeare is a seldom genius, a true master of the written and spoken word. But have you ever thought that Shakespeare&amp;#039;s texts can be deemed as data? Perhaps Emerging filed of digital humanities can tell us what to read between the lines. Modern technologies can provide a new insight into social networks of characters, semantic, statistical and other properties of corpus that is usually considered of only high artistic value. Is there a pattern in the art? &#xD;
&#xD;
**Could you think of data mining analysis or visualizations to apply to Shakespeare&amp;#039;s works? Please share your thoughts! Dive with Wolfram technologies into infinite depths of Shakespeare&amp;#039;s data.**&#xD;
&#xD;
EXAMPLE: Storyline&#xD;
-------&#xD;
&#xD;
Imagine I would like to see in a few quick pictures how the dramatic development of events propagates through a play. I consider &amp;#034;Romeo and Juliet&amp;#034; and download full text as a string (lower-casing all words):&#xD;
&#xD;
    romeojuliet = ToLowerCase[Import[&amp;#034;http://shakespeare.mit.edu/romeo_juliet/full.html&amp;#034;]];&#xD;
&#xD;
Now I will write a function `drama` that displays the **density** of a specific word in a play. It is done by indexing positions of words in the text and then running [SmoothKernelDistribution][7] algorithm hidden inside SmoothHistogram function that also plots the density:&#xD;
&#xD;
    drama[keywords_List] := With[&#xD;
      {pos = StringPosition[romeojuliet, #][[All, 1]] &amp;amp; /@ keywords},&#xD;
      SmoothHistogram[pos,&#xD;
       Frame -&amp;gt; None, BaseStyle -&amp;gt; White,&#xD;
       PlotLegends -&amp;gt; Placed[keywords, {{.93, .8}}],&#xD;
       AspectRatio -&amp;gt; 1/3, ImageSize -&amp;gt; 700, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;,&#xD;
       PlotStyle -&amp;gt; {Automatic, Automatic, Dashed, Dashed, Dashed},&#xD;
       Filling -&amp;gt; {1 -&amp;gt; {2}}, FillingStyle -&amp;gt; Directive[White, Opacity[.8]]]]&#xD;
&#xD;
And now with a few computations `drama` reads the play and announces the verdict with just 3 images. Visually we see clearly what was important as the time went by. The 3rd image of interplay between &amp;#034;love&amp;#034;, &amp;#034;hate&amp;#034;, &amp;#034;life&amp;#034;, and &amp;#034;death&amp;#034; speaks the most.&#xD;
&#xD;
    drama[{&amp;#034;romeo&amp;#034;, &amp;#034;juliet&amp;#034;, &amp;#034;life&amp;#034;, &amp;#034;death&amp;#034;}]&#xD;
    drama[{&amp;#034;romeo&amp;#034;, &amp;#034;juliet&amp;#034;, &amp;#034;love&amp;#034;, &amp;#034;hate&amp;#034;}]&#xD;
    drama[{&amp;#034;love&amp;#034;, &amp;#034;hate&amp;#034;, &amp;#034;life&amp;#034;, &amp;#034;death&amp;#034;}]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
To make a cloud app, we need to modify function a bit and use [CloudDeploy][9]. &#xD;
&#xD;
    dramaFORM[keywords_String] := Rasterize@Module[&#xD;
       {pos, leg, keys = TextWords[ToLowerCase[keywords]]},&#xD;
       leg = {&amp;#034;romeo&amp;#034;, &amp;#034;juliet&amp;#034;}~Join~keys;&#xD;
       pos = StringPosition[romeojuliet, #][[All, 1]] &amp;amp; /@ leg;&#xD;
       SmoothHistogram[DeleteCases[pos, {} | {_Integer}],&#xD;
        Frame -&amp;gt; None, PlotLegends -&amp;gt; Placed[leg, Bottom],&#xD;
        AspectRatio -&amp;gt; 1/3, ImageSize -&amp;gt; 700, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;,&#xD;
        PlotStyle -&amp;gt; {Automatic, Automatic}~Join~Table[Dashed, {Length[leg] - 2}],&#xD;
        Filling -&amp;gt; {1 -&amp;gt; {2}}, FillingStyle -&amp;gt; Directive[White, Opacity[.8]]]]&#xD;
&#xD;
    CloudDeploy[FormFunction[{&#xD;
    	&amp;#034;x&amp;#034; -&amp;gt; &amp;lt;|&amp;#034;Label&amp;#034; -&amp;gt; &amp;#034;&amp;#034;, &#xD;
    	&amp;#034;Interpreter&amp;#034;-&amp;gt;&amp;#034;String&amp;#034;,&#xD;
    	&amp;#034;Hint&amp;#034;-&amp;gt;&amp;#034;hint: love, death&amp;#034;,&#xD;
    	&amp;#034;Help&amp;#034;-&amp;gt;Style[&amp;#034;type Shakespeare&amp;#039;s words separated by spaces or comma, be patient, wait, behold ;-)&amp;#034;,Italic]|&amp;gt;}, &#xD;
    	dramaFORM[#x]&amp;amp;,&#xD;
    	AppearanceRules-&amp;gt;&amp;lt;|&#xD;
    	&amp;#034;Title&amp;#034; -&amp;gt; Grid[{{&amp;#034;Evolution of topics through Romeo &amp;amp; Juliet&amp;#034;},{Spacer[{10,5}]},{img}},Alignment-&amp;gt;Center], &#xD;
    	&amp;#034;Description&amp;#034; -&amp;gt; &amp;#034;DETAILS:  http://wolfr.am/RomeoJuliet &amp;#034;|&amp;gt;,&#xD;
    	FormTheme -&amp;gt; &amp;#034;Black&amp;#034;],&#xD;
    &amp;#034;RomeoAndJuliet&amp;#034;,	&#xD;
    Permissions-&amp;gt;&amp;#034;Public&amp;#034;]&#xD;
&#xD;
EXAMPLE: Wordcloud&#xD;
------------------&#xD;
&#xD;
&#xD;
It is also interesting to know how modern society sees Shakespeare. The code below for the word cloud runs over Encyclopedia Britannica article about Shakespeare.&#xD;
&#xD;
    text=Import[&amp;#034;http://www.britannica.com/print/article/537853&amp;#034;];&#xD;
    base[w_]:=With[{tmp=WordData[w,&amp;#034;BaseForm&amp;#034;,&amp;#034;List&amp;#034;]}, If[(Head[tmp]===Missing)||tmp==={},w,tmp[[1]]]];&#xD;
    SetAttributes[base,Listable];&#xD;
    tst=Quiet[base[TextWords[StringDelete[DeleteStopwords[ToLowerCase[text]],DigitCharacter..]]]];&#xD;
    blackLIST={&amp;#034;shakespeare&amp;#034;,&amp;#034;william&amp;#034;,&amp;#034;th&amp;#034;,&amp;#034;iii&amp;#034;,&amp;#034;iv&amp;#034;,&amp;#034;vi&amp;#034;};&#xD;
    WordCloud[DeleteCases[DeleteCases[tst,_First],Alternatives@@blackLIST],&#xD;
    	WordOrientation-&amp;gt;{{-\[Pi]/4,\[Pi]/4}},AspectRatio-&amp;gt;1/3,&#xD;
    	ScalingFunctions-&amp;gt;(#^.01&amp;amp;),ImageSize-&amp;gt;800]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
DATA &amp;amp; CODE SOURCES:&#xD;
--------------------&#xD;
&#xD;
- [William Shakespeare Plays][11]&#xD;
- [Wolfram Demonstrations][12] &#xD;
- [The Complete Works of William Shakespeare, MIT][13]&#xD;
- [Open Source Shakespeare][14]&#xD;
&#xD;
&#xD;
 [at0]: http://community.wolfram.com/web/jofreep&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/objects/vitaliyk/RomeoAndJuliet&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2016-04-22_05-56-43.png&amp;amp;userId=11733&#xD;
  [3]: https://www.wolframcloud.com/objects/vitaliyk/RomeoAndJuliet&#xD;
  [4]: http://blog.wolfram.com/2016/04/21/analyzing-shakespeares-texts-on-the-400th-anniversary-of-his-death/&#xD;
  [5]: https://www.wolframcloud.com/objects/jofree/Othello&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2016-04-24_16-50-23.png&amp;amp;userId=11733&#xD;
  [7]: http://reference.wolfram.com/language/ref/SmoothKernelDistribution.html&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=sdfr45wtrhgfdasaf.png&amp;amp;userId=11733&#xD;
  [9]: http://reference.wolfram.com/language/ref/CloudDeploy.html&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=sadfsdgshdt5342.png&amp;amp;userId=11733&#xD;
  [11]: https://datahub.io/dataset/william-shakespeare-plays&#xD;
  [12]: http://demonstrations.wolfram.com/search.html?query=shakespeare&#xD;
  [13]: http://shakespeare.mit.edu/&#xD;
  [14]: http://www.opensourceshakespeare.org/</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2016-04-20T17:19:46Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1257547">
    <title>[CALL] Reddit DataViz Battle JAN2018: Visualize the Growth Rates of Algae</title>
    <link>https://community.wolfram.com/groups/-/m/t/1257547</link>
    <description># Intro&#xD;
&#xD;
One of the most popular Reddit&amp;#039;s channels **Data Is Beautiful** (with multi-million membership of subscribers) has just started **Battle Competitions** for data visualizations that will run monthly. This is a call to Wolfram Community members to collaborate on **JAN 2018 Battle**. &#xD;
&#xD;
***Direct reference to the JAN 2018 Battle***: https://redd.it/7nm6ed&#xD;
&#xD;
## Solutions&#xD;
&#xD;
- **Heatmap of inter- and intra- species comparison** *by Vitaliy Kaurov*: &#xD;
    - http://community.wolfram.com/groups/-/m/t/1257577&#xD;
&#xD;
- **Bubble chart for 4D data** *by Sander Huisman*: &#xD;
    - http://community.wolfram.com/groups/-/m/t/1257885&#xD;
&#xD;
- **Population - pyramid like visualization**: *by George Varnavides*&#xD;
    - http://community.wolfram.com/groups/-/m/t/1258056&#xD;
&#xD;
- **Growth Rate in &amp;#034;Intensity Space&amp;#034;** *by  Henrik Schachner* &#xD;
    - http://community.wolfram.com/groups/-/m/t/1258281&#xD;
&#xD;
- **Intraspecies comparison using RadarChart** *by Diego Zviovich*&#xD;
    - http://community.wolfram.com/groups/-/m/t/1260507&#xD;
&#xD;
- **Interspecies comparison using HeatmapPlot** by *Anton Antonov*&#xD;
    - http://community.wolfram.com/groups/-/m/t/1261444&#xD;
&#xD;
- **Scatter plot slices of temperature dynamics** *by Vitaliy Kaurov*&#xD;
    - http://community.wolfram.com/groups/-/m/t/1261948&#xD;
&#xD;
- **RadarChart for each pecies** by *Anton Antonov*&#xD;
    - http://community.wolfram.com/groups/-/m/t/1261438&#xD;
&#xD;
## Rules of this thread&#xD;
&#xD;
Reddi requires direct links to the images. Hence a separate post is necessary. Here are the steps:&#xD;
&#xD;
- Make a separate post solving the challenge with detailed title describing your specific method of visualization and starting with tag [Reddit-DiBB0118] (Data is Beautiful Battle 01/2018)&#xD;
&#xD;
- Make a comment in this thread simply stating the title and copying your post URL.&#xD;
&#xD;
See my example in the comments. I will collect the solutions in the &amp;#034;solutions&amp;#034; section above. This method enables you to post your own posts on Reddit if you want to keeping your authorship.&#xD;
&#xD;
## Goal&#xD;
&#xD;
I simply suggest that Wolfram Community members brainstorm in the comments below about how the best to visualize the dataset. Feel free to submit **your own** solutions to Reddit if you want to as they require the original authors. The main goal though is simply to have fun here on Community.  **Don&amp;#039;t forget to vote up the posts you like**. &#xD;
&#xD;
## Important&#xD;
&#xD;
Battles have simple rules explained clearly in the Reddit battle thread linked above. To not get disqualified it is advised to read rules carefully. You can ask Reddit admins any additional questions directly in the thread comments. I recommend reading other people comments as they clarify the nature of the dataset.&#xD;
&#xD;
## Getting the data w/ Wolfram Language (WL)&#xD;
&#xD;
The dataset is located at a web page: http://aquatext.com/tables/algaegrwth.htm&#xD;
&#xD;
The nature of the data is clear from the website description. It is easy to get the raw data with the following WL command:&#xD;
&#xD;
    raw = Import[&amp;#034;http://aquatext.com/tables/algaegrwth.htm&amp;#034;, &amp;#034;Data&amp;#034;] /.&amp;#034;0..06&amp;#034; -&amp;gt; .06;&#xD;
&#xD;
You need `/.&amp;#034;0..06&amp;#034; -&amp;gt; .06` because the data has a clerical error resulting in the import of a string instead of a number. One way of obtaining a simple rectangular array / table of data is:&#xD;
&#xD;
    data=Cases[raw,{_String,__?NumberQ},Infinity]/.&#xD;
    x_List/;First[x]==&amp;#034;Temperature&amp;#034;:&amp;gt;{&amp;#034;Temperature&amp;#034;,5,5,10,10,25,25,30,30};&#xD;
&#xD;
which can be viewed as&#xD;
&#xD;
    TableForm[data]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://www.reddit.com/r/dataisbeautiful/&#xD;
  [2]: http://community.wolfram.com/groups/-/m/t/1257577&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2018-01-02at6.20.30PM.png&amp;amp;userId=11733</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2018-01-03T00:33:35Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/326240">
    <title>Simulating a global Ebola outbreak</title>
    <link>https://community.wolfram.com/groups/-/m/t/326240</link>
    <description>Triggered by the recent outbreak of Ebola India Bruckner, a pupil from Aberdeen&amp;#039;s [St Margaret&amp;#039;s School for Girls][1], and myself worked on a little model this summer to understand the basics of the spreading of diseases in populations and the relationship to transportation networks. The model is very basic, but shows some interesting features and is very straight forward to implement in Mathematica. &#xD;
&#xD;
When I was typing these lines I saw that Arnoud Buzing had posted something, reason enough to interrupt my typing and to check out what he had posted: [Visualizing the Ebola Outbreak][2]. I hope that my post is going to complement Arnoud&amp;#039;s to some extent.&#xD;
&#xD;
So, my question is how the global air transport network might lead to a spreading of a disease. I will use a very standard SIR (susceptible-infected-recovered) model, which is certainly far from being ideal for Ebola; [but similar types of models are to too bad either][3]. It rather simulates an outbreak of some generic disease from which you recover. If we assumed that everyone died in an outbreak the SIR model might also be appropriate. I will introduce the equations below. I also need a list of all airports and all flight connections. On the website [Openflights.org][4] you will find all data we need. I saved the file &amp;#034;airports.dat&amp;#034; and the file &amp;#034;routes.dat&amp;#034;. So that&amp;#039;s the data. &#xD;
&#xD;
I first import the data:&#xD;
&#xD;
    airports = Import[&amp;#034;~/Desktop/airports.dat&amp;#034;, &amp;#034;CSV&amp;#034;];&#xD;
    routes = Import[&amp;#034;~/Desktop/routes.dat&amp;#034;, &amp;#034;CSV&amp;#034;];&#xD;
&#xD;
This is a plot of all airports in that database.&#xD;
&#xD;
    GeoRegionValuePlot[Table[GeoPosition[airports[[i, {7, 8}]]] -&amp;gt; 1., {i, 1, Length[airports]}], PlotStyle -&amp;gt; PointSize[0.003], PlotRange -&amp;gt; 1, ImageSize -&amp;gt; Full]&#xD;
&#xD;
which gives&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
Alright, now the routes. First, we create a list of rules for all airport IDs and their coordinates:&#xD;
&#xD;
    codecoords = Table[airports[[i, 5]] -&amp;gt; GeoPosition[airports[[i, {7, 8}]]], {i, 1,Length[airports]}];&#xD;
&#xD;
We then calculate the links:&#xD;
&#xD;
    links = Monitor[Table[routes[[j, {3, 5}]] /. codecoords, {j, 1, Length[routes]}], ProgressIndicator[j, {1, Length[routes]}]];&#xD;
&#xD;
and clean out missing data:&#xD;
&#xD;
    linksclean = Select[links, Head[#[[1]]] == GeoPosition &amp;amp;&amp;amp; Head[#[[2]]] == GeoPosition &amp;amp;];&#xD;
&#xD;
Now comes a nice figure:&#xD;
&#xD;
    With[{locations = RandomChoice[linksclean, 14000]}, GeoGraphics[{{Green, Opacity[0.3],AbsoluteThickness[0.0001], GeoPath[locations, &amp;#034;Geodesic&amp;#034;]}}, &#xD;
      GeoRange -&amp;gt; &amp;#034;World&amp;#034;, GeoProjection -&amp;gt; Automatic, GeoBackground -&amp;gt; GeoStyling[&amp;#034;ReliefMap&amp;#034;], ImageSize -&amp;gt; {1200, 600}]]&#xD;
&#xD;
which gives&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
Ok. Interestingly I can only plot 16000 max at a time. Somewhere between 16-17k the Kernel quits. That might be Integer related. Could be a limit in the programming of Geographics. Not sure. I have more than enough memory and can plot the remaining 2-3k airports in a second figure and use Show to display all. (It would be great if someone from WRI could comment.)&#xD;
&#xD;
Anyway, let&amp;#039;s go to some modelling. The basic idea of an [SIR model][7] is that a population is modelled in three compartments Susceptibles (S), Infected (I) and Recovered (R). I will use a time-discrete model; there are continuous models around, too, and if anyone is interested I can provide the ODE model as well. Here are the three equations:&#xD;
&#xD;
    sus[i_] := sus[i] = sus[i - 1] - [Rho] sus[i - 1] inf[i - 1];&#xD;
    inf[i_] := nf[i] = inf[i - 1] + [Rho] sus[i - 1] inf[i - 1] - [Lambda] inf[i - 1];&#xD;
    rec[i_] := rec[i] = rec[i - 1] + [Lambda] inf[i - 1];&#xD;
&#xD;
The meaning of sus, inf and rec should be clear by now; they are given as percentages of the total population, their sum is 100%. The variable i represents time. $&#xD;
ho$ is an infection rate and $lambda$ is a recovery rate. The infections increase with the product of susceptibles and infected. By adding the right hand sides it becomes clear that the population does not change over time. We come up with some values for the parameters and iterate:&#xD;
&#xD;
    sus[1] = 0.95; inf[1] = 0.05; rec[1] = 0; [Rho] = 0.2; [Lambda] = 0.1;&#xD;
    tcourse = Table[{sus[i], inf[i], rec[i]}, {i, 1, 100}];&#xD;
&#xD;
The time course looks like this:&#xD;
&#xD;
    ListPlot[Transpose[tcourse]]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
The monotonously decreasing function show susceptibles, the increasing function recovered, and the remaining curve the infected. We now need to do some cleaning up of the original airport data, before we proceed to a multi-airport/city model. &#xD;
&#xD;
    (*Extract the names and GPS coordinates*)&#xD;
    &#xD;
    rawdata = &#xD;
      Sort[Select[airports[[All, {5, 7, 8}]], #[[1]] != &amp;#034;&amp;#034; &amp;amp;]][[81 ;;]];&#xD;
    &#xD;
    (*These are just the coordinates*)&#xD;
    &#xD;
    airportcoords = rawdata[[All, {2, 3}]];&#xD;
    &#xD;
    (*These are just the names. *)&#xD;
    &#xD;
    names = rawdata[[All, 1]];&#xD;
    &#xD;
    (*Here are the names to indices*)&#xD;
    &#xD;
    rules = MapThread[#1 -&amp;gt; #2 &amp;amp;, {names, Range[Length[names]]}];&#xD;
    &#xD;
    (*The &amp;#034;population&amp;#034; is initially set to 1 for all airports, this allows us to take different airport sizes into consideration later.*)&#xD;
    &#xD;
    pop = Table[1., {j, 1, Length[names]}]; &#xD;
    routesraw = Import[&amp;#034;~/Desktop/routes.dat&amp;#034;, &amp;#034;CSV&amp;#034;];&#xD;
    &#xD;
    (*There are many links so this takes a while*)&#xD;
    &#xD;
    links = Select[routesraw[[All, {3, 5}]] /. rules, NumberQ[#[[1]]] &amp;amp;&amp;amp; NumberQ[#[[2]]] &amp;amp;];&#xD;
&#xD;
From that we now construct (a first guess at) the coupling or adjacency matrix:&#xD;
&#xD;
    couplingdummy = Table[0, {i, 1, Length[names]}, {j, 1, Length[names]}];&#xD;
    &#xD;
    For[k = 1, k &amp;lt;= Length[links], k++, &#xD;
      couplingdummy[[links[[k, 1]], links[[k, 2]]]] = 1; &#xD;
      couplingdummy[[links[[k, 2]], links[[k, 1]]]] = 1];&#xD;
&#xD;
I do know about ConstantArray, but for some reason that does not work. The first line constructs a matrix full of zeros and the second adds ones where there are links. The problem is that apparently in that dataset some airports are not linked at all. We can sort them out by:&#xD;
&#xD;
    indices = Select[Table[If[Total[couplingdummy[[i]]] &amp;gt; 0, i], {i, 1, Length[couplingdummy]}], NumberQ];&#xD;
&#xD;
We now delete the columns and rows of the couplingdummy matrix&#xD;
&#xD;
    intermed = couplingdummy[[#]] &amp;amp; /@ indices;&#xD;
    transintermed = Transpose[intermed];&#xD;
    coupling = transintermed[[#]] &amp;amp; /@ indices;&#xD;
&#xD;
Again I had a much more elegant way of doing this, with the advantage that it did not work. To speed up the following calculations I use that the coupling matrix is sparse, but I like the original too much to throw it away just yet. &#xD;
&#xD;
    coulinginterm = coupling;&#xD;
    coupling = SparseArray[coulinginterm];&#xD;
&#xD;
We adapt our &amp;#034;population/airport size&amp;#034; vector:&#xD;
&#xD;
    pop = Table[1., {j, 1, Length[indices]}]; &#xD;
&#xD;
and set the following parameters:&#xD;
&#xD;
    [Rho] = 0.2; [Lambda] = 0.1; Mairports =  Length[indices]; [Mu] = 0.05;&#xD;
&#xD;
$\rho$ and $lambda$ are as before. Mairports is the number of airports that we model and $\mu$ is a &amp;#034;migration rate&amp;#034;. It comes from the original model which we built for different cities were it describes the migration between different cities. Here is models the &amp;#034;propensity to fly&amp;#034;. &#xD;
&#xD;
We now define an effective coupling matrix. It is the adjacency matrix times the population vector (i.e. people in the catchment area of the airport). In our case the vector has all ones, so it is just the adjacency matrix. It allows us later to model more general situations. &#xD;
&#xD;
    meanNN = coupling.pop;&#xD;
&#xD;
When we want to model the outbreak as populations at the positions of all airports, each of which is described by an SIR model, we need to couple lots of populations, because there are lots of airports. The following uses the sparsity of the adjacency matrix to speed up the calculation. &#xD;
&#xD;
    sumind = Table[Take[Flatten[ArrayRules[coupling[[k, All]]][[All, 1]]], Length[ArrayRules[coupling[[k, All]]]] - 1], {k, 1, Mairports}];&#xD;
&#xD;
It generates a list of all airports that are coupled/linked to a given airport. Now we are ready to write down the central equations:&#xD;
&#xD;
    sus[i_, j_] :=  sus[i, j] = (1 - [Mu]) (sus[i - 1, j] - [Rho] sus[i - 1, j] inf[i - 1, j]) + [Mu]  Total[Table[sus[i - 1, sumind[[j, u]]]*pop[[sumind[[j, u]]]], {u, 1, Length[sumind[[j]]]} ] ]/meanNN[[j]]; &#xD;
    inf[i_, j_] := inf[i, j] = (1 - [Mu]) (inf[i - 1, j] + [Rho] sus[i - 1, j] inf[i - 1, j] - [Lambda] inf[i - 1, j]) + [Mu] Total[Table[inf[i - 1, sumind[[j, u]]]*pop[[sumind[[j, u]]]], {u, 1, Length[sumind[[j]]]} ] ]/meanNN[[j]];&#xD;
    rec[i_, j_] := rec[i, j] = (1 - [Mu]) (rec[i - 1, j] + [Lambda] inf[i - 1, j]) + [Mu] Total[Table[rec[i - 1, sumind[[j, u]]]*pop[[sumind[[j, u]]]], {u, 1,Length[sumind[[j]]]} ] ]/meanNN[[j]];&#xD;
&#xD;
The terms with the Total are &amp;#034;migration terms&amp;#034; that describe the travelling behaviour of the people in the catchment area of the airports. i is the time index and j labels the airports. Next come the initial conditions:&#xD;
&#xD;
    For[i = 1, i &amp;lt;= Mairports, i++, sus[1, i] = 1.; inf[1, i] = 0.0;  rec[1, i] = 0.;]&#xD;
    sus[1, 1] = 0.95; &#xD;
    inf[1, 1] = 0.05;&#xD;
    rec[1, 1] = 0.0;&#xD;
&#xD;
In the catchment areas of all airports there are only susceptibles, apart from airport number 1, which will have 5% infected people. Now we can finally iterate the whole thing:&#xD;
&#xD;
    tcourse = Monitor[Table[{sus[i, j], inf[i, j], rec[i, j]}, {i, 1, 500}, {j, 1,Mairports}], ProgressIndicator[i, {0, 500}]];&#xD;
&#xD;
Great. Let&amp;#039;s save that just in case your notebook tends to crash at this point, just l like mine did when I was playing with this.&#xD;
&#xD;
    Export[&amp;#034;~/Desktop/SIR-tcourse.csv&amp;#034;, tcourse];&#xD;
&#xD;
If you wish you can now plot the time course of some of the airport catchment areas:&#xD;
&#xD;
    ListPlot[Flatten[Table[{tcourse[[All, j, 1]], tcourse[[All, j, 2]], tcourse[[All, j, 3]]}, {j, 1, 200}], 1], ImageSize -&amp;gt; Large]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
Now that is not very helpful yet. To generate nicer plots, i.e. to normalise, we first calculate the maximal number of sick  people at any of the airports:&#xD;
&#xD;
    maxsick = Max[Flatten[tcourse[[All, All, 2]]]];&#xD;
&#xD;
We then generate movie frames, and go and get some coffee....&#xD;
&#xD;
    frames = Monitor[Table[GeoRegionValuePlot[Table[GeoPosition[airportcoords[[indices[[i]]]]] -&amp;gt; inf[k, i]/maxsick, {i, 1, Length[indices]}], PlotStyle -&amp;gt; PointSize[0.003], PlotRange -&amp;gt; 1, ImageSize -&amp;gt; Full,ColorFunction -&amp;gt; &amp;#034;Rainbow&amp;#034;], {k, 1, 300}], ProgressIndicator[k, {0, 300}]];&#xD;
&#xD;
Actually, you might want to get another coffee when you want to export the frames:&#xD;
&#xD;
    Export[&amp;#034;~/Desktop/SIR-frames-World.gif&amp;#034;, frames];&#xD;
&#xD;
Alright. That gif is a bit large to embed it into this post, but you can download it from [here][10]. All I can do is show you some frames to get an idea of how this looks:&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
Of course we can look at the network structure and try to understand the pattern of infections. This command is useful:&#xD;
&#xD;
    CommunityGraphPlot[AdjacencyGraph[Normal[coupling]]]&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
You clearly see the communities in North America, Europe and Asia. This one is also pretty:&#xD;
&#xD;
    Show[TreePlot[Subgraph[grph, ConnectedComponents[grph][[1]]], Center, PlotStyle -&amp;gt; Directive[Gray, Opacity[0.02]]], &#xD;
     TreePlot[Subgraph[grph, ConnectedComponents[grph][[1]]], Center, EdgeRenderingFunction -&amp;gt; None]]&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
We have several enhancements of this. First we can easily look at different countries individually. What if an ebola patient arrives at some airport in the US? [See simulation here][14]. (Careful 50 MBs!)&#xD;
&#xD;
There is also something we can do if we want to go the the level of cities. The main problem is that the Wolfram database does not yet have data for all streets between cities. In one of the online conferences it was said that that will be introduced in some later version, which I cannot wait to play with. Until then we have to cheat. (or use some online database; I prefer cheating.)&#xD;
&#xD;
We developed a model of the spreading of a disease in Nigeria. So we could go about this like this:&#xD;
&#xD;
    Clear[&amp;#034;Global`*&amp;#034;]&#xD;
    CountryData[&amp;#034;Nigeria&amp;#034;, &amp;#034;Population&amp;#034;]&#xD;
    Graphics[CountryData[&amp;#034;Nigeria&amp;#034;, &amp;#034;Polygon&amp;#034;]] &#xD;
&#xD;
Then get city names, coords and population:&#xD;
&#xD;
    names = CityData[{All, &amp;#034;Nigeria&amp;#034;}];&#xD;
    citypop = Table[CityData[names[[i]], &amp;#034;Population&amp;#034;], {i, 1, Length[names]}];&#xD;
    citycoords = Table[CityData[names[[i]], &amp;#034;Coordinates&amp;#034;], {i, 1, Length[names]}];&#xD;
&#xD;
Here comes the cheat. Because we don&amp;#039;t have the streets we use Delaunay triangulation:&#xD;
&#xD;
    Needs[&amp;#034;ComputationalGeometry`&amp;#034;]&#xD;
    dtri = DelaunayTriangulation[citycoords]; list = {}; Table[&#xD;
     Do[AppendTo[list, {i, dtri[[All, 2]][[i, j]]}], {j, 1, &#xD;
       Length[dtri[[All, 2]][[i, All]]]}], {i, 1, Length[dtri]}];&#xD;
    coupling = Table[0, {i, 1, Length[names]}, {j, 1, Length[names]}];&#xD;
    For[i = 1, i &amp;lt; Length[list] + 1, i++, &#xD;
     coupling[[list[[i]][[1]], list[[i]][[2]]]] = 1;]&#xD;
    &#xD;
    coulinginterm = coupling;&#xD;
    &#xD;
    coupling = SparseArray[coulinginterm];&#xD;
&#xD;
which gives the following network&#xD;
&#xD;
    Graphics[Join[&#xD;
      Table[Circle[citycoords[[i]], 0.02], {i, 1, Length[names]}], &#xD;
      DeleteCases[&#xD;
       Flatten[Table[&#xD;
         If[coupling[[i, j]] == 1, &#xD;
          Line[{citycoords[[i]], citycoords[[j]]}]] , {i, 1, &#xD;
          Length[names]}, {j, 1, i}], 1], Null]]]&#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
The point in the middle corresponds to the airport where it all starts; then come its neighbours and then their neighbours etc. You could now animate this and change the colours to see how the disease spreads through the different layers. It would be nice if someone could implement that. &#xD;
&#xD;
There are obviously some problems, i.e. &amp;#034;streets&amp;#034; leaving the country etc, but the general idea should work. The rest is quite the same as before:&#xD;
&#xD;
    (*Paramters*)&#xD;
    &#xD;
    [Rho] = 0.2; [Lambda] = 0.1; Mcities = Length[names]; [Mu] = 0.05;&#xD;
    &#xD;
    (*Initiation*)&#xD;
    &#xD;
    For[i = 1, i &amp;lt;= Mcities, i++, sus[1, i] = 1.; inf[1, i] = 0.0; &#xD;
     rec[1, i] = 0.;]&#xD;
    &#xD;
    (*Starting Outbrake at the following city*)&#xD;
    &#xD;
    sus[1, 1] = 0.95; inf[1, 1] = 0.05;&#xD;
    rec[1, 1] = 0.0;&#xD;
    &#xD;
    meanNN = coupling.citypop;&#xD;
    &#xD;
    sumind = Table[&#xD;
       Take[Flatten[ArrayRules[coupling[[k, All]]][[All, 1]]], &#xD;
        Length[ArrayRules[coupling[[k, All]]]] - 1], {k, 1, Mcities}];&#xD;
    &#xD;
    sus[i_, j_] := &#xD;
     sus[i, j] = (1 - [Mu]) (sus[i - 1, &#xD;
           j] - [Rho] sus[i - 1, j] inf[i - 1, j]) + [Mu]  Total[&#xD;
          Table[sus[i - 1, sumind[[j, u]]]*citypop[[sumind[[j, u]]]], {u, &#xD;
            1, Length[sumind[[j]]]} ] ]/meanNN[[j]]; &#xD;
    inf[i_, j_] := &#xD;
     inf[i, j] = (1 - [Mu]) (inf[i - 1, &#xD;
           j] + [Rho] sus[i - 1, j] inf[i - 1, j] - [Lambda] inf[i - 1, &#xD;
            j]) + [Mu] Total[&#xD;
          Table[inf[i - 1, sumind[[j, u]]]*citypop[[sumind[[j, u]]]], {u, &#xD;
            1, Length[sumind[[j]]]} ] ]/meanNN[[j]];&#xD;
    rec[i_, j_] := &#xD;
      rec[i, j] = (1 - [Mu]) (rec[i - 1, &#xD;
            j] + [Lambda] inf[i - 1, j]) + [Mu] Total[&#xD;
           Table[rec[i - 1, sumind[[j, u]]]*citypop[[sumind[[j, u]]]], {u,&#xD;
              1, Length[sumind[[j]]]} ] ]/meanNN[[j]];&#xD;
&#xD;
This time we try to work in parallel:&#xD;
&#xD;
    LaunchKernels[];&#xD;
    tcourse = ParallelTable[{sus[i, j], inf[i, j], rec[i, j]}, {i, 1, 500}, {j, 1, Mcities}]; // AbsoluteTiming&#xD;
&#xD;
(There is something strange here. This ran in MMA9 in 6.3 seconds- I still have data from the course I taught last year. MMA10 takes ages. After the installation of MMA10 also MMA9 seems to take longer 43 seconds. Is this a bug report?). Note that this time the population sizes of the cities are taken into account and are relevant. If you run&#xD;
&#xD;
    Manipulate[&#xD;
     Graphics[{Line[Flatten[CountryData[&amp;#034;Nigeria&amp;#034;, &amp;#034;Coordinates&amp;#034;], 1]], &#xD;
       Join[Table[{ &#xD;
          RGBColor[tcourse[[t, i, 2]], tcourse[[t, i, 1]], &#xD;
           tcourse[[t, i, 3]]], Disk[citycoords[[i]], 0.1]}, {i, 1, &#xD;
          Length[names]}]]}], {t, 1, 500, 1}]&#xD;
&#xD;
or &#xD;
&#xD;
    poly = Graphics[Polygon[Flatten[CountryData[&amp;#034;Nigeria&amp;#034;, &amp;#034;Coordinates&amp;#034;], 1]], ImagePadding -&amp;gt; None];&#xD;
    Animate[ImageSubtract[&#xD;
      Graphics[ListDensityPlot[&#xD;
        Join[{{4, 3.25, 0}, {4, 14, 0}, {14, 3.25, 0}, {14, 14, 0}}, &#xD;
         Table[{citycoords[[k]][[1]], citycoords[[k]][[2]], &#xD;
           1. - tcourse[[t, k, 1]]}, {k, 1, Mcities}]], &#xD;
        InterpolationOrder -&amp;gt; 3, ColorFunction -&amp;gt; &amp;#034;Rainbow&amp;#034;, &#xD;
        PlotRange -&amp;gt; All, Frame -&amp;gt; False, PlotRangePadding -&amp;gt; None]], &#xD;
      poly], {t, 1, 500, 1}, DefaultDuration -&amp;gt; 20.]&#xD;
&#xD;
or better &#xD;
 &#xD;
&#xD;
    infmax = Max[tcourse[[All, All, 2]]];&#xD;
    frames = Table[&#xD;
       ImageSubtract[&#xD;
        Graphics[&#xD;
         ListDensityPlot[&#xD;
          Join[{{4, 3.25, 0}, {4, 14, 0}, {14, 3.25, 0}, {14, 14, 0}}, &#xD;
           Table[{citycoords[[k]][[1]], citycoords[[k]][[2]], &#xD;
             tcourse[[t, k, 2]]/infmax}, {k, 1, Mcities}]], &#xD;
          InterpolationOrder -&amp;gt; 3, ColorFunction -&amp;gt; &amp;#034;Rainbow&amp;#034;, &#xD;
          PlotRange -&amp;gt; All, Frame -&amp;gt; False, PlotRangePadding -&amp;gt; None, &#xD;
          ColorFunctionScaling -&amp;gt; False]], poly], {t, 1, 500, 6}];&#xD;
&#xD;
you get nice animations like this one:&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
I have noticed that Nigeria needs to be rotated, but I hope that the idea becomes clear. I am also aware that there are many flaws in this. SIR is certainly not the best way forward to model Ebola. Any population dynamicist and/or health expert can certainly come up with an endless list of problems. The network is not perfect. For more serious applications we actually use models for the cities, i.e. street connections among close cities and airport connections among countries etc. The problem is that if we simulate between 200-20000  cities per country plus the airports, a standard laptop runs into trouble. On the bright side, we have a cluster on which this kind of larger simulations work just fine. &#xD;
&#xD;
Hope that you like this anyway,&#xD;
&#xD;
Marco&#xD;
&#xD;
&#xD;
  [1]: http://www.st-margaret.aberdeen.sch.uk&#xD;
  [2]: http://community.wolfram.com/groups/-/m/t/325956&#xD;
  [3]: http://mtbi.asu.edu/files/Mathematical_Models_to_Study_the_Outbreaks_of_Ebola.pdf&#xD;
  [4]: http://openflights.org/data.html&#xD;
  [5]: /c/portal/getImageAttachment?filename=Airportsall.jpg&amp;amp;userId=48754&#xD;
  [6]: /c/portal/getImageAttachment?filename=Airports-world.jpg&amp;amp;userId=48754&#xD;
  [7]: http://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology&#xD;
  [8]: /c/portal/getImageAttachment?filename=SingleSIR.jpg&amp;amp;userId=48754&#xD;
  [9]: /c/portal/getImageAttachment?filename=SIR-airportstcourse.jpg&amp;amp;userId=48754&#xD;
  [10]: https://www.dropbox.com/s/9y6d16z82qjw261/SIR-frames.gif?dl=0&#xD;
  [11]: /c/portal/getImageAttachment?filename=SIR-airports-frames.jpg&amp;amp;userId=48754&#xD;
  [12]: /c/portal/getImageAttachment?filename=Airports-CommNetwork.jpg&amp;amp;userId=48754&#xD;
  [13]: /c/portal/getImageAttachment?filename=SIR-networkrings.jpg&amp;amp;userId=48754&#xD;
  [14]: https://www.dropbox.com/s/0qwgmi7ks8dpsjh/SIR-USA-frames.gif?dl=0&#xD;
  [15]: /c/portal/getImageAttachment?filename=SIR-Nigerianetwork.jpg&amp;amp;userId=48754&#xD;
  [16]: /c/portal/getImageAttachment?filename=SIR-movie.gif&amp;amp;userId=48754</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2014-08-22T20:18:58Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2007434">
    <title>[WSG20] New Daily Study Group begins Monday, June 22</title>
    <link>https://community.wolfram.com/groups/-/m/t/2007434</link>
    <description>Our newest [Daily Study Group][1] offers a jump-start on earning Wolfram certifications and covers topics including Wolfram Notebooks, image processing and multiparadigm data science. Sign up at: https://wolfr.am/NpiuhRsg&#xD;
&#xD;
&#xD;
  [1]: https://www.wolfram.com/wolfram-u/special-event/study-groups/</description>
    <dc:creator>Jamie Peterson</dc:creator>
    <dc:date>2020-06-18T21:21:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2825207">
    <title>[WSG23] Daily Study Group: Introduction to Probability</title>
    <link>https://community.wolfram.com/groups/-/m/t/2825207</link>
    <description>A Wolfram U Daily Study Group on Introduction to Probability begins on **February 27th 2023**. &#xD;
&#xD;
Join me and a group of fellow learners to learn about the world of probability and statistics using the Wolfram Language. Our topics for the study group include the characterisation of randomness, random variable design and analysis, important random distributions and their applications, probability-based data science and advanced probability distributions.&#xD;
&#xD;
The idea behind this study group is to rapidly develop an intuitive understanding of probability for a college student, professional or interested hobbyist. A basic working knowledge of the Wolfram Language is recommended but not necessary. We are happy to help beginners get up to speed with Wolfram Language using resources already available on Wolfram U.&#xD;
&#xD;
Please feel free to use this thread to collaborate and share ideas, materials and links to other resources with fellow learners.&#xD;
&#xD;
&amp;gt; [**REGISTER HERE**][1]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
![Wolfram U Banner][3]&#xD;
&#xD;
&#xD;
  [1]: https://www.bigmarker.com/series/daily-study-group-probability-wsg36/series_details&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=NormalConvergence.gif&amp;amp;userId=11733&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=banner.jpg&amp;amp;userId=2823613</description>
    <dc:creator>Marc Vicuna</dc:creator>
    <dc:date>2023-02-07T01:15:38Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/258719">
    <title>Mystery location of XKCD Astronaut Vandalism sign</title>
    <link>https://community.wolfram.com/groups/-/m/t/258719</link>
    <description>One of our members, Allison Newman, was wondering where the sign from recent XKCD comic - [url=http://xkcd.com/1375]Astronaut Vandalism[/url] could be really located.

[img=width: 317px; height: 400px;]/c/portal/getImageAttachment?filename=astronaut_vandalism.png&amp;amp;userId=11733[/img]

Could we locate where the sign is? At first it seems like a triangulation problem but because &amp;#034;Space&amp;#034; is probably not a point B) we have to live with two possible solutions from disk intersections. Check out first [url=http://reference.wolfram.com/language/ref/GeoGraphics.html]GeoGraphics[/url] and [url=http://reference.wolfram.com/language/ref/GeoDisk.html]GeoDisk[/url]. With just a little bit of code we can build:
[mcode]GeoGraphics[{
  Red, GeoDisk[
   Entity[&amp;#034;City&amp;#034;, {&amp;#034;Memphis&amp;#034;, &amp;#034;Tennessee&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], Quantity[98, &amp;#034;Miles&amp;#034;], {135, 225}],
  Blue, GeoDisk[
   Entity[&amp;#034;City&amp;#034;, {&amp;#034;Jackson&amp;#034;, &amp;#034;Mississippi&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], Quantity[115, &amp;#034;Miles&amp;#034;], {-45, 45}]
  }, GeoZoomLevel -&amp;gt; 9, ImageSize -&amp;gt; 500][/mcode]

[img=width: 800px; height: 940px;]/c/portal/getImageAttachment?filename=sdaf233qterwgfda2343qgrefa.png&amp;amp;userId=11733[/img]

So if you zoom a bit you&amp;#039;ll se that eastern point could be somewhere around [url=http://wolfr.am/1tXg6se]Derma, Mississippi[/url]. Indeed for Memphis:
[mcode]GeoDistance[
Entity[&amp;#034;City&amp;#034;, {&amp;#034;Derma&amp;#034;, &amp;#034;Mississippi&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], 
 Entity[&amp;#034;City&amp;#034;, {&amp;#034;Memphis&amp;#034;, &amp;#034;Tennessee&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], 
 UnitSystem -&amp;gt; &amp;#034;Imperial&amp;#034;]

Out[] = 83.5647 mi[/mcode]
and for Jackson

[mcode]GeoDistance[
Entity[&amp;#034;City&amp;#034;, {&amp;#034;Derma&amp;#034;, &amp;#034;Mississippi&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], 
 Entity[&amp;#034;City&amp;#034;, {&amp;#034;Jackson&amp;#034;, &amp;#034;Mississippi&amp;#034;, &amp;#034;UnitedStates&amp;#034;}], 
 UnitSystem -&amp;gt; &amp;#034;Imperial&amp;#034;]

Out[] = 109.373 mi[/mcode]
I am sure someone could do better than this - please do B)  [url=http://reference.wolfram.com/language/ref/GeoNearest.html]GeoNearest[/url] possibly?</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2014-05-30T18:14:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1167544">
    <title>A primer on Association and Dataset</title>
    <link>https://community.wolfram.com/groups/-/m/t/1167544</link>
    <description>*NOTE: all Wolfram Language code and data are available in the attached notebook at the end of the post.*&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
For my class this fall, I developed a little primer on Association and Dataset that I think might be useful for many people.  So, I&amp;#039;m sharing the attached notebook. It&amp;#039;s somewhat about the concepts embedded inside these features. It&amp;#039;s intended for people at a beginner-intermediate level of Mathematica/Wolfram Language programming, but might be of value even to some more advanced users who have not poked about the Dataset functionality. &#xD;
&#xD;
The sections of the notebook are: &#xD;
&#xD;
1. The world before Associations and Datasets&#xD;
2. Datasets without Associations &#xD;
3. Enter the Association &#xD;
4. Creating a Dataset from a List of Associations &#xD;
5. Nice queries with Dataset &#xD;
6. Query  &#xD;
7. Some Recipes&#xD;
&#xD;
#The world before Associations and Datasets#&#xD;
&#xD;
Here&amp;#039; s an array of data. The data happens to represent the cabin class, age, gender, and survival of some of the passengers on the Titanic. &#xD;
&#xD;
    t = {{&amp;#034;1st&amp;#034;, 29, &amp;#034;female&amp;#034;, True}, {&amp;#034;1st&amp;#034;, 30, &amp;#034;male&amp;#034;, False}, {&amp;#034;1st&amp;#034;, &#xD;
        58, &amp;#034;female&amp;#034;, True}, {&amp;#034;1st&amp;#034;, 52, &amp;#034;female&amp;#034;, True}, {&amp;#034;1st&amp;#034;, 21, &#xD;
        &amp;#034;female&amp;#034;, True}, {&amp;#034;2nd&amp;#034;, 54, &amp;#034;male&amp;#034;, False}, {&amp;#034;2nd&amp;#034;, 29, &amp;#034;female&amp;#034;,&#xD;
         False}, {&amp;#034;3rd&amp;#034;, 42, &amp;#034;male&amp;#034;, False}};&#xD;
&#xD;
As it stands, our data is a List of Lists. &#xD;
&#xD;
    Head[t]&#xD;
&#xD;
&amp;gt; List&#xD;
&#xD;
    Head /@ t&#xD;
&#xD;
&amp;gt; {List, List, List, List, List, List, List, List}&#xD;
&#xD;
Suppose I wanted to get the second and fifth rows of the data.  This is how I could do it.&#xD;
&#xD;
    t[[{2, 5}]]&#xD;
&#xD;
&amp;gt; {{&amp;#034;1st&amp;#034;, 30, &amp;#034;male&amp;#034;, False}, {&amp;#034;1st&amp;#034;, 21, &amp;#034;female&amp;#034;, True}}&#xD;
&#xD;
Suppose we want to group the passengers by gender and then compute the mean age.  We could do this with the following pretty confusing code.&#xD;
&#xD;
Use and enjoy. Constructive feedback appreciated.&#xD;
&#xD;
    grouped = GatherBy[t, #[[3]] &amp;amp;];&#xD;
    justTheAges = grouped[[All, All, 2]];&#xD;
    Mean /@ justTheAges&#xD;
&#xD;
&amp;gt; {189/5, 42}&#xD;
&#xD;
Or I could write it as a one liner this way.&#xD;
&#xD;
    Map[Mean, GatherBy[t, #[[3]] &amp;amp;][[All, All, 2]]]&#xD;
&#xD;
&amp;gt; {189/5, 42}&#xD;
&#xD;
But either way, realize that I have to remember that gender is the third column and that age is the second column. When there is a lot of data, this can get hard to remember.&#xD;
&#xD;
#Datasets without Associations#&#xD;
&#xD;
I could, if I wanted, convert this data into a Dataset. I do this below simply by wrapping Dataset about t. You see there is now some formatting about the data. But there are no column headers (because no one has told Dataset what to use). And there are no row headers, again because no one has told Dataset what to use.&#xD;
&#xD;
    t2 = Dataset[t]&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
The head of the expression has changed.&#xD;
&#xD;
    Head[t2]&#xD;
&#xD;
&amp;gt; Dataset&#xD;
&#xD;
Now, I can now access the data in a different way.&#xD;
&#xD;
    Query[{2, 5}][t2]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Or, I can do this. Mathematica basically converts this expression into Query[{2,5}][t2]. The expression t2[{2,5}] is basically syntactic sugar.&#xD;
&#xD;
    t2[{2, 5}]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
##Digression : Using Query explicitly or using syntactic sugar##&#xD;
&#xD;
Why, by the way would anyone use the longer form if Mathematica does the work for you? Suppose you want to store a Dataset operation -- perhaps a complex series of Dataset operations -- but you want it to work not just on a particular Dataset but on any Dataset (that is compatible). Here&amp;#039;s how you could do it.&#xD;
&#xD;
    q = Query[{2, 5}]&#xD;
&#xD;
&amp;gt; Query[{2, 5}]&#xD;
&#xD;
    q[t2]&#xD;
![enter image description here][4]&#xD;
&#xD;
Now, let&amp;#039; s create a permutation of the t2 Dataset so that the rows are scrambled up.&#xD;
&#xD;
    t2Scrambled = t2[{1, 4, 8, 3, 2, 7, 5}]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
We can now run the q operation on t2Scrambled. Notice that the output has changed even though the query has stayed the same.&#xD;
&#xD;
    q[t2Scrambled]&#xD;
![enter image description here][6]&#xD;
&#xD;
We can also generate Query objects with functions. Here&amp;#039;s a trivial example. There are very few languages of which I am aware that have the ability to generate queries by using a function. The one other example is Julia.&#xD;
&#xD;
    makeASimpleQuery[n_] := Query[n]&#xD;
    makeASimpleQuery[{3, 4, 7}][t2]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
##MapReduce operations on Dataset objects##&#xD;
Now, if I want to know the mean ages of the genders I can use this code. This kind of grouping of data and then performing some sort of aggregation operation on the groups is sometimes known as a MapReduce. (I&amp;#039;m not a fan of the name, but it is widely used). It&amp;#039;s also sometimes known as a rollup or an aggregation.&#xD;
&#xD;
    Query[GroupBy[#[[3]] &amp;amp;], Mean, #[[2]] &amp;amp;][t2]&#xD;
![enter image description here][8]&#xD;
&#xD;
Or this shorthand form in which the Query is constructed.&#xD;
&#xD;
    t2g = t2[GroupBy[#[[3]] &amp;amp;], Mean, #[[2]] &amp;amp;]&#xD;
![enter image description here][9]&#xD;
&#xD;
I think this is a little cleaner. But we still have to remember the numbers of the columns, which can be challenging.&#xD;
&#xD;
By the way, just to emphasize how we can make this all functional, here&amp;#039;s a function that creates a query that can run any operation (not just computing the mean) on the Dataset grouped by gender and then working on age.&#xD;
&#xD;
    genderOp[f_] := Query[GroupBy[#[[3]] &amp;amp;], f, #[[2]] &amp;amp;]&#xD;
    genderOp[Max][t2]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
To test your understanding, see if you can find the minimum age for each class of passenger on the Titanic in our Dataset **t2**. &#xD;
&#xD;
    Query[GroupBy[#[[1]] &amp;amp;], Min, #[[2]] &amp;amp;][t2]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
#Enter the Association#&#xD;
##Review of Association##&#xD;
If you feel comfortable with Associations, you can skip this section; otherwise read it carefully. Basically the key to understanding most Dataset operations is understanding Associations.&#xD;
&#xD;
###Construction of Associations###&#xD;
&#xD;
Now let&amp;#039; s alter the data so that we don&amp;#039;t have to remember those facts.   To do this we will create an **Association**. Here&amp;#039;s an example called **assoc1**. Notice that we do so by creating a sequence of rules and then wrapping it in an Association head. Notice that the standard output does not preserve the word &amp;#034;Association&amp;#034; as the head but, just as List is outputted as stuff inside curly braces, Association is outputted as stuff inside these funky &amp;#034;&amp;lt;|&amp;#034; and &amp;#034;|&amp;gt;&amp;#034; glyphs.&#xD;
&#xD;
    assoc1 = Association[&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True|&amp;gt;&#xD;
&#xD;
I could equivalently have created a list of rules rather than a sequence. Mathematica would basically unwrap the **List** and create a sequence.&#xD;
&#xD;
    assoc1L = Association[{&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True}]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True|&amp;gt;&#xD;
&#xD;
We can use **AssociationThread** to create Associations in a different way. The first argument is the list of things that go on the left hand side of the Rules -- the &amp;#034;keys&amp;#034; -- and the second argument is the list of things that go on the right hand side of the Rules -- the &amp;#034;values&amp;#034;.&#xD;
&#xD;
    assoc1T = AssociationThread[{&amp;#034;class&amp;#034;, &amp;#034;age&amp;#034;, &amp;#034;gender&amp;#034;, &amp;#034;survived&amp;#034;}, {&amp;#034;1st&amp;#034;, 29, &amp;#034;female&amp;#034;, True}]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True|&amp;gt;&#xD;
&#xD;
Now let&amp;#039;s use **AssociationThread** function to create a list of Associations similar to our original data.&#xD;
&#xD;
    convertListToAssociation = &#xD;
     list \[Function] &#xD;
      AssociationThread[{&amp;#034;class&amp;#034;, &amp;#034;age&amp;#034;, &amp;#034;gender&amp;#034;, &amp;#034;survived&amp;#034;}, list]&#xD;
&#xD;
&amp;gt; Function[list, AssociationThread[{&amp;#034;class&amp;#034;, &amp;#034;age&amp;#034;, &amp;#034;gender&amp;#034;, &amp;#034;survived&amp;#034;}, list]]&#xD;
&#xD;
 I start with t and Map the **convertListToAssociation** function over the rows of the data. I end up with a list of Associations.&#xD;
&#xD;
    t3 = Map[convertListToAssociation, t]&#xD;
![enter image description here][12]&#xD;
&#xD;
###Keys and Values###&#xD;
&#xD;
Associations have keys and values. These data structures are used in other computer languages but known by different names: *Python* and *Julia* call them dictionaries. *Go* and *Scala* call them maps. *Perl* and *Ruby* call them hashes. *Java* calls it a *HashMap*. And *Javascript* calls it an object. But they all work pretty similarly. Anyway, the keys of an **Association** are the things on the left hand side of the Rules.&#xD;
&#xD;
    Keys[assoc1]&#xD;
&#xD;
&amp;gt; {&amp;#034;class&amp;#034;, &amp;#034;age&amp;#034;, &amp;#034;gender&amp;#034;, &amp;#034;survived&amp;#034;}&#xD;
&#xD;
And the values of an Association are the things on the right hand side of the Rules.&#xD;
&#xD;
    Values[assoc1]&#xD;
&#xD;
&amp;gt; {&amp;#034;1st&amp;#034;, 29, &amp;#034;female&amp;#034;, True}&#xD;
&#xD;
That&amp;#039; s about all there is too it. Except for one thing. Take a look at the input and output that follows.&#xD;
&#xD;
    assoc2 = Association[&amp;#034;a&amp;#034; -&amp;gt; 3, &amp;#034;b&amp;#034; -&amp;gt; 4, &amp;#034;a&amp;#034; -&amp;gt; 5]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;a&amp;#034; -&amp;gt; 5, &amp;#034;b&amp;#034; -&amp;gt; 4|&amp;gt;&#xD;
&#xD;
&#xD;
You can&amp;#039; t have duplicate keys in an Association. So, when Mathematica confronts duplicate keys, it uses the last key it saw. You might think this is a minor point, but it is actually very important in coding. We will see why soon.&#xD;
&#xD;
###Nested Associations###&#xD;
A funny thing happens if you nest an **Association** inside another **Association**.&#xD;
&#xD;
    Association[assoc1, assoc2]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True, &amp;#034;a&amp;#034; -&amp;gt; 5, &amp;#034;b&amp;#034; -&amp;gt; 4|&amp;gt;&#xD;
&#xD;
You end up with a single un - nested (flat) association. That&amp;#039;s a little unusual for Mathematica, but we can exploit this flattening as a way of adding elements to an Association.&#xD;
&#xD;
    Association[Association[&amp;#034;dances&amp;#034; -&amp;gt; False], assoc1]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;dances&amp;#034; -&amp;gt; False, &amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt;&#xD;
&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True|&amp;gt;&#xD;
&#xD;
Or, here&amp;#039; s a function that exploits the flattening to add elements to an **Association**.&#xD;
&#xD;
    addstuff = Association[#, &amp;#034;dances&amp;#034; -&amp;gt; False, &amp;#034;sings&amp;#034; -&amp;gt; True] &amp;amp;&#xD;
&#xD;
&amp;gt; Association[#1, &amp;#034;dances&amp;#034; -&amp;gt; False, &amp;#034;sings&amp;#034; -&amp;gt; True] &amp;amp;&#xD;
&#xD;
    addstuff[assoc1]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;class&amp;#034; -&amp;gt; &amp;#034;1st&amp;#034;, &amp;#034;age&amp;#034; -&amp;gt; 29, &amp;#034;gender&amp;#034; -&amp;gt; &amp;#034;female&amp;#034;, &amp;#034;survived&amp;#034; -&amp;gt; True, &amp;#034;dances&amp;#034; -&amp;gt; False, &amp;#034;sings&amp;#034; -&amp;gt; True|&amp;gt;&#xD;
&#xD;
###Extracting Values from Associations###&#xD;
&#xD;
Just as the values contained in a **List** can be accessed by using the **Part** function, the values contained in an **Association** can likewise be accessed. Suppose, for example that I wanted to compute double the age of the person in **assoc1**.&#xD;
&#xD;
It turns out there are a lot of ways of doing this. The first is to treat the Association as a list except that the indices, instead of being integers, are the &amp;#034;keys&amp;#034; that are on the left hand side of the rules.&#xD;
&#xD;
    2*Part[assoc1, &amp;#034;age&amp;#034;]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
    2*assoc1[[&amp;#034;age&amp;#034;]]&#xD;
&amp;gt; 58&#xD;
&#xD;
A second way is to use Query. We can wrap the &amp;#034;key&amp;#034; in the head **Key** just to make sure Mathematica understands that the thing is a Key.&#xD;
&#xD;
    2*Query[Key[&amp;#034;age&amp;#034;]][assoc1]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
Usually we can omit the Key and everything works fine.&#xD;
&#xD;
    2*Query[&amp;#034;age&amp;#034;][assoc1]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
A third way is to write a function that has an association as its argument.&#xD;
&#xD;
    af = Function[Slot[&amp;#034;age&amp;#034;]]&#xD;
&#xD;
&amp;gt; &amp;#034;#age &amp;amp;&amp;#034;&#xD;
&#xD;
&#xD;
Now look what we can do.&#xD;
&#xD;
    2*Query[af][assoc1]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
We can shorten this approach by using a simpler syntax for a function. &#xD;
&#xD;
    2*Query[#age &amp;amp;][assoc1]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
Note, though that this still will not work. Basically, Mathematica is confused.  It thinks the function itself is the key.&#xD;
&#xD;
    2*assoc1[af]&#xD;
&#xD;
&amp;gt; 2 Missing[&amp;#034;KeyAbsent&amp;#034;, #age &amp;amp;]&#xD;
&#xD;
But here&amp;#039; s a simple workaround. For very simple functions, I can just use the name of the key.&#xD;
&#xD;
    2*assoc1[&amp;#034;age&amp;#034;]&#xD;
&#xD;
&amp;gt; 58&#xD;
&#xD;
##A Note on Slot Arguments##&#xD;
&#xD;
 And please pay attention to this : sometimes the Mathematica parser gets confused when it confronts a &amp;#034;slot argument&amp;#034; written as #something.  If you see this happening, write it as Slot[&amp;#034;something&amp;#034;]. &#xD;
&#xD;
    Slot[&amp;#034;iamaslot&amp;#034;] === #iamaslot&#xD;
&#xD;
&amp;gt; True&#xD;
&#xD;
Here&amp;#039; s another problem. What if the key in the association has spaces or non-standard characters in it.  Any of these, for example, are perfectly fine keys: the string &amp;#034;I have a lot of spaces in me&amp;#034;, the string &amp;#034;I_have_underscores&amp;#034;, the symbol True, the integer 43. But if we try to denote those keys by putting a hash in front of them, it will lead to confusion and problems.&#xD;
&#xD;
    problemAssociation = Association[&amp;#034;I have a lot of spaces in me&amp;#034; -&amp;gt; 1, &amp;#034;I_have_underscores&amp;#034; -&amp;gt; 2, True -&amp;gt; 3, 43 -&amp;gt; 4]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;I have a lot of spaces in me&amp;#034; -&amp;gt; 1, &amp;#034;I_have_underscores&amp;#034; -&amp;gt; 2, &#xD;
 True -&amp;gt; 3, 43 -&amp;gt; 4|&amp;gt;&#xD;
&#xD;
    {Query[#I have a lot of spaces in me &amp;amp;][problemAssociation], &#xD;
     Query[#I _have _underescores &amp;amp;][problemAssociation]}&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
Here&amp;#039; s a solution.&#xD;
&#xD;
    {Query[Slot[&amp;#034;I have a lot of spaces in me&amp;#034;] &amp;amp;][problemAssociation], &#xD;
     Query[Slot[&amp;#034;I_have_underscores&amp;#034;] &amp;amp;][problemAssociation]}&#xD;
&#xD;
&amp;gt; {1, 2}&#xD;
&#xD;
Here&amp;#039; s how we solve the use of True and an integer as keys. We preface them with **Key**.&#xD;
&#xD;
    {Query[#True &amp;amp;][problemAssociation], Query[#43 &amp;amp;][problemAssociation]}&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
    {Query[Key[True]][problemAssociation], &#xD;
     Query[Key[43]][problemAssociation]}&#xD;
&#xD;
&amp;gt; {3, 4}&#xD;
&#xD;
##Working with Associations and Lists of Associations##&#xD;
&#xD;
Here&amp;#039; s something we can do with the data in the form of an Association. I could ask for the gender of the person in the third row as follows. Notice I did not have to remember that &amp;#034;gender&amp;#034; was generally in the third position.&#xD;
&#xD;
   t3[[3]][[&amp;#034;gender&amp;#034;]] &#xD;
&#xD;
&amp;gt; &amp;#034;female&amp;#034;&#xD;
&#xD;
So, even if I scramble the rows, I can still use the same code.&#xD;
&#xD;
    t3Scrambled = Map[convertListToAssociation, t[[All, {4, 1, 3, 2}]]]&#xD;
![enter image description here][15]&#xD;
&#xD;
    t3Scrambled[[3]][[&amp;#034;gender&amp;#034;]]&#xD;
&#xD;
&amp;gt; female&#xD;
&#xD;
I could also group the people according to their cabin class. Here I use Query on a list of Associations.&#xD;
&#xD;
    Query[GroupBy[#class &amp;amp;]][t3]&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
Again, the following code, which does not explicitly use **Query**, won&amp;#039; t work. Basically, nothing has told Mathematica to translate t3[stuff___] \[RightArrow]Query[stuff][t3].  If t3 had a head of Dataset, Mathematica would know to make the translation.&#xD;
&#xD;
    t3[GroupBy[#class &amp;amp;]]&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
I can also get certain values for all the Associations in a list of Associations.&#xD;
&#xD;
    Query[All, #age &amp;amp;][t3]&#xD;
&#xD;
&amp;gt; {29, 30, 58, 52, 21, 54, 29, 42}&#xD;
&#xD;
I can also map a function onto the result. I don&amp;#039;t have to go outside the Query form to do so.&#xD;
&#xD;
    Query[f, #age &amp;amp;][t3]&#xD;
&#xD;
&amp;gt; f[{29, 30, 58, 52, 21, 54, 29, 42}]&#xD;
&#xD;
Or, without exiting the Query form, I can map a function onto each element of the result.&#xD;
&#xD;
    Query[Map[f], #age &amp;amp;][t3]&#xD;
&#xD;
&amp;gt; {f[29], f[30], f[58], f[52], f[21], f[54], f[29], f[42]}&#xD;
&#xD;
I could also do the same thing as follows.&#xD;
&#xD;
    Query[All, #age &amp;amp;, f][t3]&#xD;
&#xD;
&amp;gt; {f[29], f[30], f[58], f[52], f[21], f[54], f[29], f[42]}&#xD;
&#xD;
#Creating a Dataset from a List of Associations#&#xD;
&#xD;
To get full use out of Query and to permit syntactic shorthands, we need for Mathematica to understand that the list of Associations is in fact a Dataset.  Here&amp;#039; s all it takes.&#xD;
&#xD;
    d3 = Dataset[t3]&#xD;
![enter image description here][18]&#xD;
&#xD;
We can recover our original list of associations by use of the **Normal** command.&#xD;
&#xD;
    t3 === Normal[d3]&#xD;
&#xD;
&amp;gt; True&#xD;
&#xD;
With the data inside a Dataset object we now have pretty formatting. But we have more.&#xD;
&#xD;
We can still do this. We get the same result but in a more attractive form.&#xD;
&#xD;
    d3g = Query[GroupBy[#class &amp;amp;]][d3]&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
But now this shorthand works too.&#xD;
&#xD;
    d3g = d3[GroupBy[#class &amp;amp;]]&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
And compare these two elements of code.  When the data is in the form of a dataset, Mathematica understands that the stuff in the brackets is not intended as a key but rather is intended to be transformed into a Query.&#xD;
&#xD;
    {Query[#age &amp;amp;][t3[[1]]], d3[[1]][#age &amp;amp;]}&#xD;
&#xD;
&amp;gt; {29, 29}&#xD;
&#xD;
##A Dataset that is an Association of Associations##&#xD;
&#xD;
Let&amp;#039; s look under the hood of **d3g**.&#xD;
&#xD;
    d3gn = Normal[d3g]&#xD;
![enter image description here][21]&#xD;
&#xD;
Note : if you *really* want to look under the hood of a **Dataset** ask to see the **Dataset** in **FullForm**. You can also get more information by running the undocumented package Dataset`, but this is definitely NOT recommended for the non-advanced user.&#xD;
&#xD;
What we see is an Association in which each of the values is itself a list of Associations.&#xD;
&#xD;
We can map a function over d3gn.&#xD;
&#xD;
    Map[f, d3gn]&#xD;
![enter image description here][22]&#xD;
&#xD;
I can of course do the mapping within the **Query** construct.&#xD;
&#xD;
    Query[All, f][d3gn]&#xD;
![enter image description here][23]&#xD;
&#xD;
If I try synactic sugar, it doesn&amp;#039; t work because d3gn is not a Dataset.&#xD;
&#xD;
    d3gn[All, f]&#xD;
&#xD;
&amp;gt; Missing[&amp;#034;KeyAbsent&amp;#034;, All]&#xD;
&#xD;
But, if I use the Dataset version, it does work. (The first line may be an ellipsis depending on your operating system and display, but if you look under the hood it looks just like the values for 2nd and 3rd. I have no idea why an ellipsis is being inserted.&#xD;
&#xD;
    d3g[All, f]&#xD;
![enter image description here][24]&#xD;
&#xD;
##A Dataset that just has a single Association inside.##&#xD;
We can also have a Dataset that just has a single Association inside. Mathematica presents the information with the keys and values displayed vertically.&#xD;
&#xD;
    Dataset[d3[[1]]]&#xD;
![enter image description here][25]&#xD;
&#xD;
In theory, we could have a Dataset that just had a single number inside it.&#xD;
&#xD;
    Dataset[6]&#xD;
&#xD;
![enter image description here][26]&#xD;
&#xD;
#Nice queries with Dataset#&#xD;
&#xD;
Now I can construct a query that takes a dataset and groups it by the gender column. It then takes each grouping and applies the Mean function to at least part of it.  What part? The &amp;#034;age&amp;#034; column part.  Notice that I no longer have to remember that gender is the third column and age is the second column.&#xD;
&#xD;
    qd = Query[GroupBy[#gender &amp;amp;], Mean, #age &amp;amp;]&#xD;
&#xD;
&amp;gt; Query[GroupBy[#gender &amp;amp;], Mean, #age &amp;amp;]&#xD;
&#xD;
Now I can run this query on t3.&#xD;
&#xD;
    qd[d3]&#xD;
![enter image description here][27]&#xD;
&#xD;
We can now learn a lot about Query. So long as our data is in the form of a Dataset we can write the query as either a formal Query or use syntactic sugar.&#xD;
&#xD;
#Query#&#xD;
&#xD;
A major part of working with data is to understand **Query**. Let&amp;#039;s start with a completely abstract **Query**, that we will call **q1**.&#xD;
&#xD;
    q1 = Query[f];&#xD;
&#xD;
Now let&amp;#039; s run q1 on t3.&#xD;
&#xD;
    q1[t3]&#xD;
![enter image description here][28]&#xD;
&#xD;
We end up with a list of Associations that has f wrapped around it at the highest level. It&amp;#039;s the same as if I wrote the following code.&#xD;
&#xD;
    f[t3] === q1[t3]&#xD;
&#xD;
&amp;gt; True&#xD;
&#xD;
Now, let&amp;#039; s write a **Query** that applies the function g at the top level of the list of associations and the function **f** at the second level, i.e. to each of the rows. Why does it work at the second level? Because it&amp;#039;s the second argument to **Query**.&#xD;
&#xD;
    q2 = Query[g, f];&#xD;
    q2[t3]&#xD;
![enter image description here][29]&#xD;
&#xD;
The result is the same as if I mapped **f**  onto t3 at its first level and then wrapped **g** around it.&#xD;
&#xD;
    g[Map[f, t3, {1}]] === q2[d3]&#xD;
    Query[All, MapAt[StringTake[#, 1] &amp;amp;, #, {{&amp;#034;class&amp;#034;}, {&amp;#034;gender&amp;#034;}}] &amp;amp;][d3]&#xD;
&#xD;
Here&amp;#039; s a function **firstchar** that takes the first character in a string.&#xD;
    firstchar = StringTake[#, 1] &amp;amp;&#xD;
&#xD;
&amp;gt; StringTake[#1, 1] &amp;amp;&#xD;
&#xD;
Now, let&amp;#039; s construct a query **cg1** that applies **firstchar** to the class and gender keys in each row.&#xD;
&#xD;
    cg1 = Query[All, &#xD;
      a \[Function] MapAt[firstchar, a, {{&amp;#034;class&amp;#034;}, {&amp;#034;gender&amp;#034;}}]]&#xD;
&#xD;
&amp;gt; Query[All, Function[a, MapAt[firstchar, a, {{&amp;#034;class&amp;#034;}, {&amp;#034;gender&amp;#034;}}]]]&#xD;
&#xD;
We apply **cg1** to our little dataset **d3**.&#xD;
&#xD;
    cg1[d3]&#xD;
![enter image description here][30]&#xD;
&#xD;
What if we want to apply the same function to every element of the Dataset. We just apply it at the lowest level. Here&amp;#039;s one way.&#xD;
&#xD;
    Query[Map[f, #, {-1}] &amp;amp;][d3]&#xD;
&#xD;
![enter image description here][31]&#xD;
&#xD;
We can also combine it with column wise and entirety wise operations.  For reasons that are not clear, Mathematica can&amp;#039;t understand this as a Dataset and returns the Normal form.&#xD;
&#xD;
    Query[(Map[f, #, {-1}] &amp;amp;) /* entiretywise, columnwise][d3]&#xD;
&#xD;
![enter image description here][32]&#xD;
&#xD;
Here&amp;#039; s how we could actually a multilevel **Query**.&#xD;
&#xD;
Suppose we want to write a function that computes the fraction of the people in this little dataset that survived. The first step is simply going to be to extract the survival value and convert it to 1 if True and 0 otherwise. There&amp;#039;s a built in function Boole that does this.&#xD;
&#xD;
    {Boole[True], Boole[False]}&#xD;
&#xD;
&amp;gt; {1, 0}&#xD;
&#xD;
    q3 = Query[something, &#xD;
      assoc \[Function] assoc[&amp;#034;survived&amp;#034;] /. {True -&amp;gt; 1, _ -&amp;gt; 0}]&#xD;
&#xD;
&amp;gt; Query[something,   Function[assoc, assoc[&amp;#034;survived&amp;#034;] /. {True -&amp;gt; 1, _&#xD;
&amp;gt; -&amp;gt; 0}]]&#xD;
&#xD;
    q3[t3]&#xD;
&#xD;
&amp;gt; something[{1, 0, 1, 1, 1, 0, 0, 0}]&#xD;
&#xD;
So, now we have something wrapping a list of 1 s and 0 s.  By making **something** the **Mean** function, we can achieve our result.&#xD;
&#xD;
    q4 = Query[Mean, Boole[#survived] &amp;amp;]&#xD;
&#xD;
&amp;gt; Query[Mean, Boole[#survived] &amp;amp;]&#xD;
&#xD;
    q4[d3]&#xD;
&#xD;
&amp;gt; 1/2&#xD;
&#xD;
We can also examine survival by gender. Notice that **Query** is a little like **Association**: it gets automatically flattened.&#xD;
&#xD;
    Query[GroupBy[#gender &amp;amp;], q4][t3]&#xD;
&#xD;
&amp;gt; &amp;lt;|&amp;#034;female&amp;#034; -&amp;gt; 4/5, &amp;#034;male&amp;#034; -&amp;gt; 0|&amp;gt;&#xD;
&#xD;
If the data is held in a **Dataset**, we can also write the final step as follows.&#xD;
&#xD;
    d3[GroupBy[#gender &amp;amp;], q4]&#xD;
&#xD;
![enter image description here][33]&#xD;
&#xD;
Notice that even if we omit the &amp;#034;Query&amp;#034;, this code works. Mathematica just figures out that you meant Query.&#xD;
&#xD;
The code immediately above is in the form we typically see and often use.&#xD;
&#xD;
#Some Recipes#&#xD;
&#xD;
    titanic = ExampleData[{&amp;#034;Dataset&amp;#034;, &amp;#034;Titanic&amp;#034;}]&#xD;
![enter image description here][34]&#xD;
&#xD;
How to add a value to the Dataset based on values external to the existing columns.&#xD;
&#xD;
Here&amp;#039; s some additional data. Notice that the data is the same length as the titanic dataset.&#xD;
&#xD;
    stuffToBeAdded = &#xD;
     Table[Association[&amp;#034;id&amp;#034; -&amp;gt; i, &#xD;
       &amp;#034;weight&amp;#034; -&amp;gt; RandomInteger[{80, 200}]], {i, Length[titanic]}]&#xD;
&#xD;
![enter image description here][35]&#xD;
&#xD;
We use **Join** at level 2.&#xD;
&#xD;
    augmentedTitanic = Join[titanic, stuffToBeAdded, 2]&#xD;
&#xD;
![enter image description here][36]&#xD;
&#xD;
##How to add a column to a Dataset based on values in the existing columns and to do so row-wise##&#xD;
&#xD;
Notice that the query below does NOT change the value of the titanic dataset.  To change the value of the titanic dataset, one would need to set titanic to the result of the computation. Remember, Mathematica generally does not have side effects or do modifications in place.&#xD;
&#xD;
    Query[All, Association[#, &amp;#034;classsex&amp;#034; -&amp;gt; {#class, #sex}] &amp;amp;][titanic]&#xD;
&#xD;
![enter image description here][37]&#xD;
&#xD;
We can add multiple columns this way.&#xD;
&#xD;
    Query[All, &#xD;
      Association[#, &amp;#034;classsex&amp;#034; -&amp;gt; {#class, #sex}, &#xD;
        &amp;#034;agesqrt&amp;#034; -&amp;gt; Sqrt[#age]] &amp;amp;][titanic]&#xD;
&#xD;
![enter image description here][38]&#xD;
&#xD;
##How to change the value of an existing column : row - wise##&#xD;
&#xD;
Age everyone one year.&#xD;
&#xD;
    Query[All, Association[#, &amp;#034;age&amp;#034; -&amp;gt; #age + 1] &amp;amp;][titanic]  &#xD;
&#xD;
![enter image description here][39]&#xD;
&#xD;
How to change the value of columns selectively.&#xD;
&#xD;
    Query[All, &#xD;
      Association[#, &#xD;
        &amp;#034;age&amp;#034; -&amp;gt; If[#sex === &amp;#034;male&amp;#034;, #age + 1, #age]] &amp;amp;][titanic]&#xD;
&#xD;
![enter image description here][40]&#xD;
&#xD;
How to create a new column based on some aggregate operator applied to another column.&#xD;
&#xD;
    With[{meanAge = Query[Mean, #age &amp;amp;][titanic]}, &#xD;
      Query[All, &#xD;
       Association[#, &amp;#034;ageDeviation&amp;#034; -&amp;gt; #age - meanAge] &amp;amp;]][titanic]&#xD;
![enter image description here][41]&#xD;
&#xD;
Can you develop your own recipes?&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=17751.png&amp;amp;userId=20103&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=47222.png&amp;amp;userId=20103&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=60813.png&amp;amp;userId=20103&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=83664.png&amp;amp;userId=20103&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=44435.png&amp;amp;userId=20103&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=105416.png&amp;amp;userId=20103&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=49777.png&amp;amp;userId=20103&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=16898.png&amp;amp;userId=20103&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=28239.png&amp;amp;userId=20103&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=262710.png&amp;amp;userId=20103&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=749611.png&amp;amp;userId=20103&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=209912.png&amp;amp;userId=20103&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=925313.png&amp;amp;userId=20103&#xD;
  [14]: http://community.wolfram.com//c/portal/getImageAttachment?filename=851614.png&amp;amp;userId=20103&#xD;
  [15]: http://community.wolfram.com//c/portal/getImageAttachment?filename=627315.png&amp;amp;userId=20103&#xD;
  [16]: http://community.wolfram.com//c/portal/getImageAttachment?filename=679516.png&amp;amp;userId=20103&#xD;
  [17]: http://community.wolfram.com//c/portal/getImageAttachment?filename=674717.png&amp;amp;userId=20103&#xD;
  [18]: http://community.wolfram.com//c/portal/getImageAttachment?filename=707518.png&amp;amp;userId=20103&#xD;
  [19]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1053319.png&amp;amp;userId=20103&#xD;
  [20]: http://community.wolfram.com//c/portal/getImageAttachment?filename=579820.png&amp;amp;userId=20103&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=980221.png&amp;amp;userId=20103&#xD;
  [22]: http://community.wolfram.com//c/portal/getImageAttachment?filename=450322.png&amp;amp;userId=20103&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=113723.png&amp;amp;userId=20103&#xD;
  [24]: http://community.wolfram.com//c/portal/getImageAttachment?filename=932624.png&amp;amp;userId=20103&#xD;
  [25]: http://community.wolfram.com//c/portal/getImageAttachment?filename=754825.png&amp;amp;userId=20103&#xD;
  [26]: http://community.wolfram.com//c/portal/getImageAttachment?filename=836826.png&amp;amp;userId=20103&#xD;
  [27]: http://community.wolfram.com//c/portal/getImageAttachment?filename=393227.png&amp;amp;userId=20103&#xD;
  [28]: http://community.wolfram.com//c/portal/getImageAttachment?filename=577928.png&amp;amp;userId=20103&#xD;
  [29]: http://community.wolfram.com//c/portal/getImageAttachment?filename=158329.png&amp;amp;userId=20103&#xD;
  [30]: http://community.wolfram.com//c/portal/getImageAttachment?filename=984930.png&amp;amp;userId=20103&#xD;
  [31]: http://community.wolfram.com//c/portal/getImageAttachment?filename=664831.png&amp;amp;userId=20103&#xD;
  [32]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1090332.png&amp;amp;userId=20103&#xD;
  [33]: http://community.wolfram.com//c/portal/getImageAttachment?filename=450733.png&amp;amp;userId=20103&#xD;
  [34]: http://community.wolfram.com//c/portal/getImageAttachment?filename=740234.png&amp;amp;userId=20103&#xD;
  [35]: http://community.wolfram.com//c/portal/getImageAttachment?filename=143835.png&amp;amp;userId=20103&#xD;
  [36]: http://community.wolfram.com//c/portal/getImageAttachment?filename=36.png&amp;amp;userId=20103&#xD;
  [37]: http://community.wolfram.com//c/portal/getImageAttachment?filename=37.png&amp;amp;userId=20103&#xD;
  [38]: http://community.wolfram.com//c/portal/getImageAttachment?filename=38.png&amp;amp;userId=20103&#xD;
  [39]: http://community.wolfram.com//c/portal/getImageAttachment?filename=39.png&amp;amp;userId=20103&#xD;
  [40]: http://community.wolfram.com//c/portal/getImageAttachment?filename=40.png&amp;amp;userId=20103&#xD;
  [41]: http://community.wolfram.com//c/portal/getImageAttachment?filename=41.png&amp;amp;userId=20103</description>
    <dc:creator>Seth Chandler</dc:creator>
    <dc:date>2017-08-20T19:26:30Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/463721">
    <title>Aftermath of the solar eclipse</title>
    <link>https://community.wolfram.com/groups/-/m/t/463721</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4902Hero.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/5838919a-e64d-49fe-9193-c6ce123184f2</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2015-03-21T01:18:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2051264">
    <title>Estimation of energy yield of 2020 Beirut port explosion</title>
    <link>https://community.wolfram.com/groups/-/m/t/2051264</link>
    <description>Probably most of you heard the sad news that there was a giant explosion in the port of Beirut today August 3rd 2020. Several videos were released on which we can do analysis. Note that the method I will use was also famously used by G.I. Taylor to find the energy of the Trinity nuclear bomb test, and he found the right amount to within 10%! We will not be so lucky as the video quality was relatively poor as compared to the high-speed imaging done back then.&#xD;
&#xD;
I extracted several frames from one of the videos:&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
    SetDirectory[NotebookDirectory[]];&#xD;
    v1 = Import[&amp;#034;1.mp4&amp;#034;];&#xD;
    fra = VideoExtractFrames[v1, Interval[{11, 12}]]&#xD;
    fra = ImageRotate[#, Right] &amp;amp; /@ fra;&#xD;
&#xD;
For each of the frames I identified the explosion by clicking 3 point on the circle:&#xD;
&#xD;
     data={&#xD;
    {7,{{157.15625,365.20703125000006`},{233.83984375,379.76562500000006`},{272.015625,312.91015625000006`}}},&#xD;
    {8,{{318.16796874999994`,322.81640625000006`},{228.7890625,462.8515625},{103.61328125,393.38281250000006`}}},&#xD;
    {9,{{341.03515625000006`,311.34765625},{308.27734375,478.125},{93.86328125,420.34375}}},&#xD;
    {10,{{359.08984375,315.546875},{351.48828125,478.63671875000006`},{86.55078125,454.5078125}}},&#xD;
    {11,{{375.62109375,325.64453125},{330.05859375,535.3984375},{62.0390625,434.51171875}}},&#xD;
    {12,{{376.0390625,326.765625},{337.94140625,539.9257812499999},{46.4140625,462.55859375}}}&#xD;
    };&#xD;
&#xD;
The first is the index of the frames, the last elements are points of the circle:&#xD;
&#xD;
    circs = CircleThrough /@ data[[;; 6, 2]];&#xD;
    r = circs[[All, 2]];&#xD;
&#xD;
Here is the visualization:&#xD;
&#xD;
    Table[HighlightImage[fra[[data[[i, 1]]]], circs[[i]], &amp;#034;Boundary&amp;#034;], {i, Length[data]}]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Notice that I tracked the orange &amp;#039;glow&amp;#039;, not the shockwave or the smoke that was there partially before the main explosion (so on the conservative side and underestimating the energy release).&#xD;
&#xD;
From Google earth I estimated the size of the face of the building on the left (a grain elevator) and found that every pixel corresponds to 0.59 m roughly (~22 meters corresponding to ~37 pixels).&#xD;
&#xD;
    cali = 0.5888486673789164`;&#xD;
    realr = r cali&#xD;
    &#xD;
The timestamps can be found from the video framerate.&#xD;
&#xD;
    Information[Import[&amp;#034;video.mp4&amp;#034;]].&#xD;
&#xD;
And so the timestamps are created and the dataset is created:&#xD;
&#xD;
    t = (Range[0, Length[realr] - 1]) 1/29.97;&#xD;
    tr = Transpose[{t, realr}]&#xD;
&#xD;
Since the explosion started between two frames we include that in the fit (the t0):&#xD;
    &#xD;
    fit = FindFit[&#xD;
      tr, { a (x + t0)^0.4, 0 &amp;lt; t0 &amp;lt; 1/30}, {{a, 200}, {t0, 1/60}}, x]&#xD;
    realfit = a (x + t0)^0.4 /. fit&#xD;
    tzero = t0 /. fit&#xD;
    realfitshifted = a (x)^0.4 /. fit&#xD;
    prefactor = a /. fit&#xD;
&#xD;
The fit can be found [here][3] and is based on dimensional analysis with the variable E (energy), r (radius of the explosion), t (time), and ρ (density). This also explains the exponent 0.4 used for fitting.&#xD;
&#xD;
We plot the data and the fit:&#xD;
&#xD;
    Show[{ListPlot[Transpose[{t + tzero, realr}]], &#xD;
      Plot[realfitshifted, {x, 0, 0.2}]}, &#xD;
     PlotRange -&amp;gt; {{0, 0.2}, {0, 120}}, Frame -&amp;gt; True, &#xD;
     FrameLabel -&amp;gt; {&amp;#034;t&amp;#034;, &amp;#034;r [m]&amp;#034;}]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
Which is a pretty good fit. &#xD;
&#xD;
We can now calculate the energy back from the explosion:&#xD;
&#xD;
    ClearAll[r, e, t, \[Rho]]&#xD;
    r == (e t^2/\[Rho])^(1/5)&#xD;
    Refine[DivideSides[%, t^(2/5)], t &amp;gt; 0]&#xD;
    %[[2]] == Quantity[prefactor, &amp;#034;Meters&amp;#034;/&amp;#034;Seconds&amp;#034;^(2/5)]&#xD;
    % /. \[Rho] -&amp;gt; Quantity[1, &amp;#034;Kilograms&amp;#034;/&amp;#034;Meters&amp;#034;^3]&#xD;
    energy = e /. Solve[%, e][[1]]&#xD;
&#xD;
Yielding:&#xD;
&#xD;
    Quantity[4.2808721214488837`*^11, &amp;#034;Joules&amp;#034;]&#xD;
&#xD;
and we can convert it to kiloton of TNT:&#xD;
&#xD;
    UnitConvert[energy, &amp;#034;KilotonsOfTNT&amp;#034;]&#xD;
&#xD;
yielding:&#xD;
&#xD;
    Quantity[0.102315, &amp;#034;KilotonsOfTNT&amp;#034;]&#xD;
&#xD;
This number is comparable to the 2015 Tianjin explosion (0.3 kilo tonnes of TNT). &#xD;
    &#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2020-08-04at21.44.20.png&amp;amp;userId=73716&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2020-08-05at12.00.12.png&amp;amp;userId=73716&#xD;
  [3]: https://en.wikipedia.org/wiki/Nuclear_weapon_yield#Calculating_yields_and_controversy&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2020-08-04at21.53.18.png&amp;amp;userId=73716</description>
    <dc:creator>Sander Huisman</dc:creator>
    <dc:date>2020-08-04T19:57:48Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1727272">
    <title>Which countries did @realDonaldTrump tweet about?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1727272</link>
    <description>Introduction&#xD;
----------&#xD;
&#xD;
A couple of days ago on 1 July [The Economist][1] tweeted [this][2]:&#xD;
&#xD;
&amp;gt; Since he was elected in 2016 Donald Trump has made 1,384 mentions of foreign countries on Twitter. Can you guess which one he named most often?&#xD;
&#xD;
[It claims][3] that in spite of the &amp;#034;special relationship&amp;#034; with the UK, it is only ranked 15th of the countries and territories tweeted about. It also says that Puerto Rico, Mexico and China are in fifth, fourth and third places respectively (countries and territories). According to The Economist North Korea is ranked in second place with 163 mentions. &#xD;
&#xD;
A couple of years ago I read the excellent book &amp;#034;A Mathematician Reads the Newspaper&amp;#034; by John Allen Paulos; and I wonder how much of the daily news coverage can we check using the Wolfram Language. *In a future post I will speak about another project that we are doing with several members of this community that goes in a similar direction. We call it &amp;#034;computational conversations&amp;#034;. With a bit of luck you might hear about it at the [Wolfram Technology Conference][4] later this year.*&#xD;
&#xD;
Initial analysis &#xD;
----------&#xD;
&#xD;
It turns out that I have been monitoring @realDonaldTrump&amp;#039;s tweets using IFTTT since early 2017. I attach excel files to this post. To have a look at the first tweet we first set the directory and load the raw data files: &#xD;
&#xD;
    SetDirectory[NotebookDirectory[]]&#xD;
    dataraw = Import /@ FileNames[&amp;#034;Trump*.xlsx&amp;#034;];&#xD;
&#xD;
As the first file (without a number) will be read in last (alphabetical order), this is the first tweet data:&#xD;
&#xD;
    dataraw[[5, 1, 1]] // TableForm&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
It is from January 26th, 2017, a couple of days after his inauguration. &#xD;
&#xD;
In oder to figure out which countries Mr Trump talks about we use the function TextCases, a recently updated function:&#xD;
&#xD;
&#xD;
    tweettexts = Join[dataraw[[1, 1]], dataraw[[2, 1]], dataraw[[3, 1]], dataraw[[4, 1]], dataraw[[5, 1]]][[All, 2]];&#xD;
    &#xD;
    locations =  TextCases[StringJoin[tweettexts], &amp;#034;LocationEntity&amp;#034; -&amp;gt; &amp;#034;Interpretation&amp;#034;, VerifyInterpretation -&amp;gt; True];&#xD;
&#xD;
I find &#xD;
&#xD;
    Length@locations&#xD;
&#xD;
5768 locations; these will not only include direct mentions of countries but also locations within countries. These locations will be in Entity-form:&#xD;
&#xD;
    locations[[1;;20]]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
Let&amp;#039;s get that apart. First we make a list of all countries in the world:&#xD;
&#xD;
    purecountries = # -&amp;gt; {#} &amp;amp; /@ EntityList[EntityClass[&amp;#034;Country&amp;#034;, &amp;#034;Countries&amp;#034;]];&#xD;
&#xD;
If we select all direct mentions of countries we obtain:&#xD;
&#xD;
    Select[locations, MemberQ[purecountries[[All, 1]], #] &amp;amp;] // Length&#xD;
&#xD;
3624 mentions; if we exclude the 1349 mentions the US, we are left with 2275 country names. Despite our list starting with later tweets we obtain substantially more mentions of countries than The Economist (1,384). We can now generate a table of the mentions of all countries:&#xD;
&#xD;
    TableForm[Flatten /@ Transpose[{Range[Length[#] - 1], Delete[#, 5]}] &amp;amp;@({#[[1]], #[[2]]} &amp;amp; /@ &#xD;
    Normal[ReverseSort[Counts[CommonName@(Select[locations, MemberQ[purecountries[[All, 1]], #] &amp;amp;])]]])]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
(This is only the top of the list.) Note, that North Korea is missing, but will be very prominent in the next table.... Next we can check for &amp;#034;indirect&amp;#034; mentions of a country, i.e. Louvre would lead to a mention of France etc. We will find many more entities and will first generate a list of substitution rules:&#xD;
&#xD;
    countriesrules = # -&amp;gt; Check[GeoIdentify[&amp;#034;Country&amp;#034;, #], {#}] &amp;amp; /@ (Complement[DeleteDuplicates[locations], EntityList[EntityClass[&amp;#034;Country&amp;#034;, &amp;#034;Countries&amp;#034;]]]);&#xD;
&#xD;
We will ignore the error messages for now. We can then generate a table that includes the &amp;#034;indirect&amp;#034; mentions, too:&#xD;
&#xD;
    TableForm[Flatten /@ Transpose[{Range[Length[#] - 1], Delete[#, 5]}] &amp;amp;@({#[[1]], #[[2]]} &amp;amp; /@ &#xD;
     Normal[ReverseSort[Counts[CommonName@(DeleteMissing[Flatten[locations /. countriesrules]])]]])]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
Note, that on rank 4 we find Media, which is not a country. It is easy to clean out, but I leave it in to show the performance of the code so far. We could now make typical representations such as GeoBubbleCharts:&#xD;
&#xD;
    GeoBubbleChart[Counts[DeleteMissing[Flatten[locations /. countriesrules]]], GeoBackground -&amp;gt; &amp;#034;Satellite&amp;#034;]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
We can now make a BarChart (on a logarithmic scale) selecting &amp;#034;purecountries&amp;#034; like so:&#xD;
&#xD;
    BarChart[ReverseSort@&amp;lt;|&#xD;
       Select[Normal@&#xD;
         Counts[DeleteMissing[Flatten[locations /. countriesrules]]], &#xD;
        MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;]|&amp;gt;, &#xD;
     ScalingFunctions -&amp;gt; &amp;#034;Log&amp;#034;, &#xD;
     ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ &#xD;
        CommonName[&#xD;
         ReverseSortBy[&#xD;
           Select[Normal@&#xD;
             Counts[DeleteMissing[Flatten[locations /. countriesrules]]], &#xD;
            MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;], Last][[All, &#xD;
           1]]]), PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
     LabelStyle -&amp;gt; Directive[Bold, 15]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
We can also represent that on a world wide map:&#xD;
&#xD;
    styling = {GeoBackground -&amp;gt; GeoStyling[&amp;#034;StreetMapNoLabels&amp;#034;, &#xD;
    GeoStylingImageFunction -&amp;gt; (ImageAdjust@ColorNegate@ColorConvert[#1, &amp;#034;Grayscale&amp;#034;] &amp;amp;)], &#xD;
    GeoScaleBar -&amp;gt; Placed[{&amp;#034;Metric&amp;#034;, &amp;#034;Imperial&amp;#034;}, {Right, Bottom}], GeoRangePadding -&amp;gt; Full, ImageSize -&amp;gt; Large};&#xD;
    &#xD;
    GeoRegionValuePlot[&#xD;
    Log@&amp;lt;|Select[Normal@Counts[DeleteMissing[Flatten[locations /. countriesrules]]], MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;]|&amp;gt;, Join[styling, {ColorFunction -&amp;gt; &amp;#034;TemperatureMap&amp;#034;}]]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
Further analysis&#xD;
----------&#xD;
&#xD;
We can of course look at many other features of the tweets. One is a simple sentiment analysis. I am not at all convinced that the result of this attempt are useful or representing an actual pattern. But this is what we could do:&#xD;
&#xD;
    emotion[text_] := &amp;#034;Positive&amp;#034; - &amp;#034;Negative&amp;#034; /. Classify[&amp;#034;Sentiment&amp;#034;, text, &amp;#034;Probabilities&amp;#034;]&#xD;
&#xD;
and then&#xD;
&#xD;
    tweetssentiments = emotion /@ tweettexts;&#xD;
    ListPlot[tweetssentiments, PlotRange -&amp;gt; All, LabelStyle -&amp;gt; &#xD;
     Directive[Bold, 15], AxesLabel -&amp;gt; {&amp;#034;tweet number&amp;#034;, &amp;#034;sentiment&amp;#034;}]&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
Using a SmoothHistogram, we see a pattern of &amp;#034;extremes&amp;#034;, negative, neutral, positive:&#xD;
&#xD;
    SmoothHistogram[tweetssentiments, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
     FrameLabel -&amp;gt; {&amp;#034;sentiment&amp;#034;, &amp;#034;probablitiy&amp;#034;}, &#xD;
     LabelStyle -&amp;gt; Directive[Bold, 16], ImageSize -&amp;gt; Large]&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
We can also ask for less relevant information, such as the colours mentioned in the tweets:&#xD;
&#xD;
    textcasesColor = TextCases[StringJoin[tweettexts], &amp;#034;Color&amp;#034; -&amp;gt; &amp;#034;Interpretation&amp;#034;, VerifyInterpretation -&amp;gt; True]&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
So there is a lot of white, some black, red and green:&#xD;
&#xD;
    ReverseSort@Counts[textcasesColor]&#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
Let&amp;#039;s blend these colours together:&#xD;
&#xD;
    Graphics[{Blend[textcasesColor], Disk[]}]&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
We can also look for &amp;#034;profanity&amp;#034; in tweets:&#xD;
&#xD;
    textcasesProfanity = TextCases[StringJoin[tweettexts], &amp;#034;Profanity&amp;#034;];&#xD;
&#xD;
and represent these tweets in a table:&#xD;
&#xD;
    Column[textcasesProfanity, Frame -&amp;gt; All]&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
It is not quite clear to my why some of the tweets are classified as containing profanity. For some tweets it is relatively obvious, I think.&#xD;
&#xD;
Twitter handles&#xD;
----------&#xD;
&#xD;
Another interesting analysis is to look at the twitter handles that @realDonaldTrump uses:&#xD;
&#xD;
    textcasesTwitterHandle = TextCases[StringJoin[tweettexts], &amp;#034;TwitterHandle&amp;#034;];&#xD;
&#xD;
Here are counts of the 50 most common handles:&#xD;
&#xD;
    twitterhandles50 = Normal[(ReverseSort@Counts[ToLowerCase /@ textcasesTwitterHandle])[[1 ;; 50]]]&#xD;
&#xD;
![enter image description here][18]&#xD;
&#xD;
Last but not least we can make a BarChart of that:&#xD;
&#xD;
    BarChart[&amp;lt;|twitterhandles50|&amp;gt;, ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ twitterhandles50[[All, 1]]), &#xD;
    LabelStyle -&amp;gt; Directive[Bold, 14]]&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
and to compare the same on a logarithmic scale:&#xD;
&#xD;
    BarChart[&amp;lt;|twitterhandles50|&amp;gt;, ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ twitterhandles50[[All, 1]]), &#xD;
    LabelStyle -&amp;gt; Directive[Bold, 14], ScalingFunctions -&amp;gt; &amp;#034;Log&amp;#034;]&#xD;
&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
A little word cloud&#xD;
----------&#xD;
&#xD;
Just to finish off we will generate a little word cloud like so:&#xD;
&#xD;
    allwords = Flatten[TextWords /@ tweettexts];&#xD;
    WordCloud[ToLowerCase /@ DeleteCases[DeleteStopwords[ToString /@ allwords], &amp;#034;&amp;amp;amp;&amp;#034;]]&#xD;
&#xD;
![enter image description here][21]&#xD;
&#xD;
The cloud picks up on &amp;#034;witch hunt&amp;#034; and &amp;#034;collusion&amp;#034;, &amp;#034;@foxandfrieds&amp;#034; and &amp;#034;Russia&amp;#034;, &amp;#034;fake&amp;#034;, &amp;#034;border&amp;#034; as well as other terms that indeed are relatively prominent in the media. &#xD;
&#xD;
Conclusion&#xD;
----------&#xD;
&#xD;
The main objective of this was to look try to reproduce at least qualitatively the results of the twitter analysis of @realDonaldTrump&amp;#039;s tweets by The Economist using the Wolfram Language. We have been using a slightly different period of the tweets. We have been looking at direct mentions and &amp;#034;indirect&amp;#034; ones. I have not made any manual comparison of the results. I am not sure whether the recognition has worked and I only post it as a first cursory analysis. &#xD;
&#xD;
It was relatively easy to go beyond the analysis and look at other features of the tweets, too.&#xD;
&#xD;
&#xD;
  [1]: https://www.economist.com&#xD;
  [2]: https://twitter.com/TheEconomist/status/1145467208950329344&#xD;
  [3]: https://www.economist.com/graphic-detail/2019/06/04/the-world-according-to-donald-trump&#xD;
  [4]: http://www.wolfram.com/events/technology-conference/2019/&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.12.59.png&amp;amp;userId=48754&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.27.41.png&amp;amp;userId=48754&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.34.11.png&amp;amp;userId=48754&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.41.34.png&amp;amp;userId=48754&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.43.14.png&amp;amp;userId=48754&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.45.38.png&amp;amp;userId=48754&#xD;
  [11]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.24.25.png&amp;amp;userId=48754&#xD;
  [12]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.53.33.png&amp;amp;userId=48754&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.55.22.png&amp;amp;userId=48754&#xD;
  [14]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.05.39.png&amp;amp;userId=48754&#xD;
  [15]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.07.12.png&amp;amp;userId=48754&#xD;
  [16]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.08.07.png&amp;amp;userId=48754&#xD;
  [17]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.09.33.png&amp;amp;userId=48754&#xD;
  [18]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.12.15.png&amp;amp;userId=48754&#xD;
  [19]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.13.26.png&amp;amp;userId=48754&#xD;
  [20]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.14.50.png&amp;amp;userId=48754&#xD;
  [21]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.33.04.png&amp;amp;userId=48754</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2019-07-10T00:40:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/942720">
    <title>Bob Dylan&amp;#039;s Nobel Prize &amp;amp; Infinite Universe</title>
    <link>https://community.wolfram.com/groups/-/m/t/942720</link>
    <description>As many of you already know, the breaking news today was [Bob Dylan and his Nobel Prize in Literature][1]. You can also take a look at [New York Times announcement][2]. Somehow, maybe because Bob conquered a global ocean of hearts and changed the mind of modern society, this sounds very exciting and calls for a celebration. So what can we do to celebrate a computational way? I challenge you, ladies and gentlemen, to come up with an idea, piece of code, visualization and more to pay our tribute to one of the greatest voices of our generation. Here is an example. &#xD;
 &#xD;
&#xD;
Bob Dylan Infinite Universe&#xD;
------------------&#xD;
&#xD;
Bob interacted with our culture so much his impact can hardly be measured. But we can take a look at Wikipedia data of his page connectivity to other pages. Even going just 2 levels deep and limiting 100 inter-page links per page we get the whole Universe of Bob Dylan. You can get lost by rolling over the nodes of the network. Infinitely. Well, almost. Watch animation and see if you can recognize some names. **Please also look through the comments way down to observe more of the visible Universe ;-)**&#xD;
&#xD;
    linksTO=WikipediaData[&amp;#034;Bob Dylan&amp;#034;,&amp;#034;BacklinksRules&amp;#034;,&amp;#034;MaxLevelItems&amp;#034;-&amp;gt;100,&amp;#034;MaxLevel&amp;#034;-&amp;gt;2];&#xD;
    linksFROM=WikipediaData[&amp;#034;Bob Dylan&amp;#034;,&amp;#034;LinksRules&amp;#034;,&amp;#034;MaxLevelItems&amp;#034;-&amp;gt;100,&amp;#034;MaxLevel&amp;#034;-&amp;gt;2];&#xD;
&#xD;
    Graph[Union[Join[linksTO, linksFROM]], &#xD;
        VertexLabels -&amp;gt; Placed[&amp;#034;Name&amp;#034;, Tooltip], VertexSize -&amp;gt; Scaled[.01], &#xD;
        DirectedEdges -&amp;gt; False, Background -&amp;gt; Black, &#xD;
        EdgeStyle -&amp;gt; Directive[White, Opacity[.5]], &#xD;
        VertexStyle -&amp;gt; Directive[Red, Opacity[.8]]]&#xD;
    &#xD;
 ![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://www.nobelprize.org/nobel_prizes/literature/laureates/2016/&#xD;
  [2]: http://www.nytimes.com/2016/10/14/arts/music/bob-dylan-nobel-prize-literature.html&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=456rtrt56564564trhstea5467.gif&amp;amp;userId=11733</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2016-10-13T17:11:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3062832">
    <title>The Telephone Game - next level with GPT</title>
    <link>https://community.wolfram.com/groups/-/m/t/3062832</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=w5qgsdf.jpg&amp;amp;userId=11733&#xD;
  [2]: https://www.wolframcloud.com/obj/04458d24-aacf-4cd7-8a5d-46efde37e927</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2023-11-09T22:51:38Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2380163">
    <title>About MxNet as Mathematica backend choice</title>
    <link>https://community.wolfram.com/groups/-/m/t/2380163</link>
    <description>I recently noticed that Mathematica uses MxNet as the backend for neural networks. It seems to have been integrated in 2015. The blog post listing the rationale is [here](https://www.oreilly.com/content/apache-mxnet-in-the-wolfram-language/).&#xD;
&#xD;
MxNet seems to have not gained the momentum to become popular, you can see the [trends](https://paperswithcode.com/trends) from &amp;#034;papers with code&amp;#034;. Lack of popularity means framework may be slow to develop.&#xD;
&#xD;
For instance, this [question](https://mathematica.stackexchange.com/questions/256323/neural-network-automatic-differentiation-autograd) about using neural networks to fit ODEs from&#xD;
Joshua Schrier. It requires underlying framework to support higher order gradients. There&amp;#039;s an [issue](https://github.com/apache/incubator-mxnet/issues/10002) to add support in MxNET but progress has stalled. Meanwhile PyTorch/TensorFlow/JAX support this feature.</description>
    <dc:creator>Yaroslav Bulatov</dc:creator>
    <dc:date>2021-10-06T00:49:07Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/289856">
    <title>Datasets are very memory hungry (20x!)</title>
    <link>https://community.wolfram.com/groups/-/m/t/289856</link>
    <description>For me, it&amp;#039;s strange the column redundant implementation of Dataset, that do not allow a memory efficient representation of a simpler tabular data format (as SQL data).

As each column name is in each line, is&amp;#039;t not memory efficient.

See this test:

    compare[lines_,columns_]:=Module[{l1,l2},
    	l1=RandomInteger[1000000,{lines,columns}];
    	l2=AssociationThread[&amp;#034;Columns&amp;#034;&amp;lt;&amp;gt;ToString@#&amp;amp;/@Range[columns]-&amp;gt; #]&amp;amp;/@l1;
    	ByteCount[l2]/ByteCount@Dataset[l1]//N
    ]
    compare[100000,4]

&amp;gt; 19.9959

I get approximately 20x more memory for it!..

I know that Dataset is a cool tool for Hierarchical data structure. But I believe that 95% of data problems are still rectangular (all SQL queries are), and the current format of Dataset is very memory inefficient for that.

Maybe Dataset could have a option TabularData-&amp;gt; True, so:

    ds=Dataset[&amp;lt;|&amp;#034;col1&amp;#034; -&amp;gt; {1, 2, 3, 4}, &amp;#034;col2&amp;#034; -&amp;gt; {&amp;#034;a&amp;#034;, &amp;#034;b&amp;#034;, &amp;#034;c&amp;#034;, &amp;#034;d&amp;#034;}|&amp;gt;, TabularData-&amp;gt; True]

Here we can check that this structure do not need more memory:

    compare[lines_,columns_]:=Module[{l1,l2},
    	l1=RandomInteger[1000000,{lines,columns}];
    	l2=Thread[&amp;#034;Columns&amp;#034;&amp;lt;&amp;gt;ToString@#&amp;amp;/@Range[columns]-&amp;gt; Transpose@l1];
    	ByteCount[l2]/ByteCount@Dataset[l1]//N
    ]
    compare[100000,4]

&amp;gt; 1.0007

There are some Wolfram plans better handler Tabular Data in Dataset?</description>
    <dc:creator>Rodrigo Murta</dc:creator>
    <dc:date>2014-07-10T03:48:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1407711">
    <title>Genoa bridge collapse - how to prevent this from happening again?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1407711</link>
    <description>Introduction&#xD;
----------&#xD;
&#xD;
On Tuesday, 14 August 2018, a large suspension bridge collapsed in Genoa, Italy, during a violent storm. &#xD;
&#xD;
    GeoGraphics[GeoMarker@Entity[&amp;#034;City&amp;#034;, {&amp;#034;Genoa&amp;#034;, &amp;#034;Liguria&amp;#034;, &amp;#034;Italy&amp;#034;}][&amp;#034;Coordinates&amp;#034;], GeoRange -&amp;gt; &amp;#034;Country&amp;#034;]&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
At least 39 people died. The disaster was extensively covered in the international press, see [here][2] and [here][3]. In the latter article by the BBC a graph is shown that indicates that Italy&amp;#039;s infrastructure spending in roads has degrease from about 14 billion Euros in 2007 to slightly above 5 billion Euros in 2015. Is there a lack of investment into the road infrastructure? What is the state of our national bridges? Can a computational approach help citizens to better understand what the situation is and help them to make political decisions?&#xD;
&#xD;
In this post I will explore some very simple representations to visualise some datasets; I will use the example of Germany for the most part. Many representations are inspired by an article in &amp;#034;[Die Welt][4]&amp;#034;. At the bottom of the article they also offer a link to a [google spreadsheet with data][5] that we will use later. We will start with the data from the &amp;#034;[Bundesstaat fuer Strassenwesen (BASt)][6]&amp;#034;, which is available [here][7].&#xD;
&#xD;
Data import and preparation&#xD;
----------&#xD;
&#xD;
The data files we will look at contain the locations of all bridges in Germany with a quality grade and some additional information. We will start by importing the data&#xD;
&#xD;
    data = Import[&amp;#034;/Users/thiel/Desktop/Zustandsnoten-excel.xlsx&amp;#034;];&#xD;
&#xD;
The content of that table looks like so:&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
It has 51592 rows. The important column for us are the last three. The last two contain location data of the bridge (in the UTM32N system). The third column to the end contains a grade indicating the quality of the bridge. We will store the quality rules in the variable states:&#xD;
&#xD;
    states = {{1., 1.4, &amp;#034;very good&amp;#034;}, {1.5, 1.9, &amp;#034;good&amp;#034;}, {2.0, 2.4, &amp;#034;safe &amp;amp; sound&amp;#034;}, {2.5, 2.9, &amp;#034;suffient&amp;#034;}, {3.0, 3.4, &amp;#034;poor&amp;#034;}, {3.5,4.0, &amp;#034;very poor&amp;#034;}}; &#xD;
&#xD;
The first two elements of every entry indicate the range of values in which a certain descriptor (third entry) is achieved. The translations to English are a bit subjective. The last two categories (poor and very poor) are considered to be problematic. &#xD;
&#xD;
We start with a graphic of the locations of all bridges in Germany - in fact we have to filter out some for which the location data is not available. &#xD;
&#xD;
    styling = {GeoBackground -&amp;gt; GeoStyling[&amp;#034;StreetMapNoLabels&amp;#034;, GeoStylingImageFunction -&amp;gt; (ImageAdjust@ColorNegate@ColorConvert[#1, &amp;#034;Grayscale&amp;#034;] &amp;amp;)], GeoScaleBar -&amp;gt; Placed[{&amp;#034;Metric&amp;#034;, &amp;#034;Imperial&amp;#034;}, {Right, Bottom}], GeoRangePadding -&amp;gt; Full, ImageSize -&amp;gt; Large};&#xD;
    &#xD;
    GeoGraphics[{GeoStyling[RGBColor[1, 0.85, 0], Opacity[1]], GeoDisk[#, Quantity[3, &amp;#034;Kilometers&amp;#034;]]} &amp;amp;&#xD;
    /@ (GeoPosition[GeoGridPosition[#, GeoProjectionData[&amp;#034;UTMZone32&amp;#034;]]] &amp;amp; /@ (Cases[ToExpression &#xD;
    /@ data[[1, 2 ;;, -2 ;;]], {_Real, _Real}])), styling]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
Note, that we convert the UTM32 data to standard GeoPosition entries within the command. Also, it might be quite unexpected that I use GeoGraphics with GeoDisk to visualise the data - GeoListPlot appears to be the more natural choice. Using the latter, I did have problems to plot all points and to properly size the dots. So I went for GeoGraphics and GeoDisk.&#xD;
&#xD;
Cleaning the data some more&#xD;
----------&#xD;
&#xD;
In order to visualise the positions of the bridges that are in a poor or very poor state. For that we define a little helper function:&#xD;
&#xD;
    fquality = (Which @@ Flatten[{#[[1]] &amp;lt;= dummy &amp;lt;= #[[2]], #[[3]]} &amp;amp; /@ states] /. dummy -&amp;gt; #) &amp;amp;&#xD;
&#xD;
Not elegant, but it does the job. With that we adjust the dataset&#xD;
&#xD;
    cleanDataset = {GeoPosition[GeoGridPosition[#[[2 ;; 3]], &#xD;
     GeoProjectionData[&amp;#034;UTMZone32&amp;#034;]]], #[[1]], fquality[#[[1]]]} &amp;amp; /@&#xD;
     Cases[ToExpression /@   data[[1, 2 ;; ;; 1, -3 ;;]], {_, _Real, _Real}];&#xD;
&#xD;
The entries look like this now:&#xD;
&#xD;
    cleanDataset[[1]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
We also want to compute in which province (Bundesland) the bridge is located. So first we get the list of provinces:&#xD;
&#xD;
    provinces = Entity[&amp;#034;Country&amp;#034;, &amp;#034;Germany&amp;#034;][EntityProperty[&amp;#034;Country&amp;#034;, &amp;#034;AdministrativeDivisions&amp;#034;]];&#xD;
&#xD;
The idea was to use GeoWithinQ or so to compute this. This for example&#xD;
&#xD;
    whereQ = Which[GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;BadenWurttemberg&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], &#xD;
    Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;BadenWurttemberg&amp;#034;, &amp;#034;Germany&amp;#034;}],  GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Bavaria&amp;#034;, &amp;#034;Germany&amp;#034;}], #1],  Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Bavaria&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Berlin&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Berlin&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Brandenburg&amp;#034;, &amp;#034;Germany&amp;#034;}], #1],Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Brandenburg&amp;#034;, &amp;#034;Germany&amp;#034;}],   GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Bremen&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Bremen&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Hamburg&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Hamburg&amp;#034;, &amp;#034;Germany&amp;#034;}],  GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Hesse&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Hesse&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;LowerSaxony&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;LowerSaxony&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;MecklenburgWesternPomerania&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;MecklenburgWesternPomerania&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[&#xD;
    Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;NorthRhineWestphalia&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;NorthRhineWestphalia&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;RheinlandPalatinate&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;RheinlandPalatinate&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Saarland&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Saarland&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Saxony&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Saxony&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[&#xD;
    Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SaxonyAnhalt&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SaxonyAnhalt&amp;#034;, &amp;#034;Germany&amp;#034;}], GeoWithinQ[Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SchleswigHolstein&amp;#034;, &#xD;
    &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SchleswigHolstein&amp;#034;, &amp;#034;Germany&amp;#034;}],GeoWithinQ[&#xD;
    Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Thuringia&amp;#034;, &amp;#034;Germany&amp;#034;}], #1], Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;Thuringia&amp;#034;, &amp;#034;Germany&amp;#034;}]] &amp;amp;&#xD;
&#xD;
does the trick:&#xD;
&#xD;
    whereQ[cleanDataset[[3, 1]]]&#xD;
    (*Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SchleswigHolstein&amp;#034;, &amp;#034;Germany&amp;#034;}]*)&#xD;
&#xD;
but is far too slow. So we will use the polygons of the provinces:&#xD;
&#xD;
    polygons = (#[&amp;#034;Polygon&amp;#034;] /. GeoPosition -&amp;gt; Identity) &amp;amp; /@ provinces;&#xD;
&#xD;
It turns out that this is not sufficient. Some provinces &amp;#034;have a hole&amp;#034;, i.e. a city inside that is not part of the province but rather an administrative unit in its own right. This leads to two provinces having the head FilledCurve rather than Polygon. We can fix this like so:&#xD;
&#xD;
    polygonsfixed = If[Head[#] === FilledCurve, Polygon[#[[1, 1, 1, 1]] /. Line -&amp;gt; Polygon], #] &amp;amp; /@ polygons;&#xD;
&#xD;
This basically ignores the hole. What we will do later is make sure that we first check whether a bridge is in the city (the hole inside) - if not we use the larger province surrounding it. The next command takes a while to run:&#xD;
&#xD;
    Monitor[bridgeprovince = (provinces[[#]] &amp;amp; /@ &#xD;
    Flatten /@ Table[Position[RegionMember[#, cleanDataset[[k, 1, 1]]] &amp;amp; /@ polygonsfixed, &#xD;
    True], {k, 1, Length[cleanDataset]}]) /. {} -&amp;gt; {Missing}, k]&#xD;
&#xD;
It turns out that some bridges are not properly localised. The following code fixes that (it relies on the fact that the list is ordered by province anyway!).&#xD;
&#xD;
    bridgeprovinceclean = bridgeprovince[[All, 1]] //. {a___, x_, Missing, b___} -&amp;gt;  {a, x, x, b};&#xD;
&#xD;
Let&amp;#039;s build one list of lists containing all that data:&#xD;
&#xD;
    totalData = Flatten /@ Transpose[{cleanDataset, bridgeprovinceclean /. Missing -&amp;gt; &#xD;
    Entity[&amp;#034;AdministrativeDivision&amp;#034;, {&amp;#034;SchleswigHolstein&amp;#034;, &amp;#034;Germany&amp;#034;}]}];&#xD;
&#xD;
The data looks like this now:&#xD;
&#xD;
    totalData[[1 ;; 5]] // TableForm&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
Some statistics and visualisations of the data&#xD;
----------&#xD;
&#xD;
We can now count how many bridges in Germany are in a certain state:&#xD;
&#xD;
    tallyData = Tally[totalData[[All, -2]]][[Ordering[Flatten[Position[states, #] &amp;amp; /@ Tally[totalData[[All, -2]]][[All, 1]], 1][[All, 1]]]]]&#xD;
&#xD;
which gives&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
Let&amp;#039;s make a bar chart of that:&#xD;
&#xD;
    BarChart[tallyData[[All, 2]], ChartLabels -&amp;gt; Evaluate[Rotate[#, Pi/2] &amp;amp; /@ tallyData[[All, 1]]], &#xD;
    LabelStyle -&amp;gt; Directive[Bold, 15], PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;]&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
Most bridges are in the &amp;#034;safe &amp;amp; sound&amp;#034; state; a non-negligible number is in the states &amp;#034;poor&amp;#034; or &amp;#034;very poor&amp;#034;. Let&amp;#039;s first select the bridges in the last two categories:&#xD;
&#xD;
    badBridges = Select[totalData, (#[[3]] == &amp;#034;poor&amp;#034; || #[[3]] == &amp;#034;very poor&amp;#034;) &amp;amp;];&#xD;
&#xD;
There are 2413 bridges in that category now, and there are their locations:&#xD;
&#xD;
    GeoGraphics[{GeoStyling[RGBColor[1, 0.0, 0], Opacity[1]], GeoDisk[#, Quantity[3, &amp;#034;Kilometers&amp;#034;]]} &amp;amp; /@ badBridges[[All, 1]], styling]&#xD;
&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
So, if you live in Germany, there is probably one of those bad bridges close to you. A GeoSmoothHistogram helps us to visualise the distribution of those bridges:&#xD;
&#xD;
    GeoSmoothHistogram[badBridges[[All, 1]], GeoRange -&amp;gt; Entity[&amp;#034;Country&amp;#034;, &amp;#034;Germany&amp;#034;], &#xD;
    ColorFunction -&amp;gt; &amp;#034;TemperatureMap&amp;#034;, styling]&#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
It is obvious that there are some areas where the problems are more acute than in other regions. We can represent good vs not-so-good bridges in Germany like so:&#xD;
&#xD;
nonbadBridges = Select[totalData, ! (#[[3]] == &amp;#034;poor&amp;#034; || #[[3]] == &amp;#034;very poor&amp;#034;) &amp;amp;];&#xD;
&#xD;
    GeoGraphics[Join[{GeoStyling[RGBColor[0, 1., 0], Opacity[1]], GeoDisk[#, Quantity[3, &amp;#034;Kilometers&amp;#034;]]} &amp;amp; /@ nonbadBridges[[All, 1]], {GeoStyling[RGBColor[1, 0.0, 0], Opacity[1]], GeoDisk[#, Quantity[3, &amp;#034;Kilometers&amp;#034;]]} &amp;amp; /@ badBridges[[All, 1]]], styling]&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
Satellite images&#xD;
----------&#xD;
&#xD;
The Wolfram Language allows us to take a deeper look at the individual bridges by using satellite data. Let&amp;#039;s first get some images of bridges in a poor state:&#xD;
&#xD;
    GeoImage[#, GeoRange -&amp;gt; Quantity[50, &amp;#034;Meters&amp;#034;]] &amp;amp; /@ RandomSample[badBridges][[1 ;; 25, 1]]&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
These images have an excellent resolution and allow us to study the bridges in greater detail:&#xD;
&#xD;
![enter image description here][18]&#xD;
&#xD;
Likewise we can look at the good bridges:&#xD;
&#xD;
    goodBridges = Select[totalData, ! (#[[3]] == &amp;#034;good&amp;#034; || #[[3]] == &amp;#034;very good&amp;#034;) &amp;amp;];&#xD;
    GeoImage[#, GeoRange -&amp;gt; Quantity[50, &amp;#034;Meters&amp;#034;]] &amp;amp; /@ RandomSample[goodBridges][[1 ;; 25, 1]]&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
Again the resolution is very good for individual images:&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
I was first thinking about developing a machine learning approach to try and estimate the state of a bridge from images, but that seems impossible at this level. &#xD;
&#xD;
How good are different administrative divisions addressing infrastructure&#xD;
----------&#xD;
&#xD;
Next, we look for regional variations. We gather the data by province:&#xD;
&#xD;
    byprovince = GatherBy[totalData, Last];&#xD;
&#xD;
and plot the ratio of poor bridges vs all bridges&#xD;
&#xD;
    GeoRegionValuePlot[Rule @@@ SortBy[Table[{byprovince[[k, 1, -1]], &#xD;
    N@Length[Select[byprovince[[k, All, 3]], (# == &amp;#034;poor&amp;#034; || # == &amp;#034;very poor&amp;#034;) &amp;amp;]]/&#xD;
    Length[byprovince[[k]]]}, {k, 1, Length[byprovince]}], Last], GeoRange -&amp;gt; Entity[&amp;#034;Country&amp;#034;, &amp;#034;Germany&amp;#034;], styling, ColorFunction -&amp;gt; &amp;#034;TemperatureMap&amp;#034;]&#xD;
&#xD;
![enter image description here][21]&#xD;
&#xD;
Relationship between age and state of the bridge&#xD;
----------&#xD;
&#xD;
&amp;#034;Die Welt&amp;#034; offers consolidated data in an [additional link][22] (which also contains the name of the province, so we could have saved the effort above). We import the data&#xD;
&#xD;
    weltData = Import[&amp;#034;/Users/thiel/Desktop/DIE WELT_ Zustand der Fernstraßenbrücken - Daten.tsv&amp;#034;];&#xD;
&#xD;
It also contains the grades of the bridges for several consecutive test periods and for some bridges (in two of the provinces) the year it was built. Let&amp;#039;s clean that&#xD;
&#xD;
    weltDatawDates = Select[weltData[[2 ;;]], #[[-1]] =!= &amp;#034;&amp;#034; &amp;amp;]&#xD;
&#xD;
and collect the built year vs rating:&#xD;
&#xD;
    builtdatevsmark = {#[[1]], ToExpression[StringReplace[ToString[#[[2]]], &amp;#034;,&amp;#034; -&amp;gt; &amp;#034;.&amp;#034;]]} &amp;amp; /@ weltDatawDates[[All, {-1, 4}]]&#xD;
&#xD;
A simple ListPlot of that looks rather boring:&#xD;
&#xD;
    ListPlot[builtdatevsmark]&#xD;
&#xD;
![enter image description here][23]&#xD;
&#xD;
and is difficult to interpret. But with a little bit of work we can make it much more useful&#xD;
&#xD;
    BubbleChart[Flatten /@ Tally[builtdatevsmark], PlotRange -&amp;gt; {{1900, 2020}, All}, &#xD;
    ColorFunction -&amp;gt; Function[{x, y, r}, Lighter[Green, r/41.]], AspectRatio -&amp;gt; 0.3, BubbleSizes -&amp;gt; {0.01, 0.05}, Background -&amp;gt; Black,LabelStyle -&amp;gt; Directive[Bold, 15, White], Epilog -&amp;gt; {Red, Line[{{1890, 2.95}, {2020, 2.95}}], Blue, Line[{{1960, 0.8}, {1960, 3.8}}], Line[{{1980, 0.8}, {1980, 3.8}}],&#xD;
    Green, Line[{{1890, 1.95}, {2020, 1.95}}]}]&#xD;
&#xD;
![enter image description here][24]&#xD;
&#xD;
The x-axis shows the year the bridge was built. The y-axis the quality of the bridge - small numbers are better marks. The size of the bubbles roughly indicates the number of bridges at that coordinate. The red line indicates the quality threshold. Everything above is rather problematic. The green line separates the bridges in excellent states (below it) from the ok-ish bridges (above). The blue lines indicate a period from 1960-1980, which has a high proportion of bridges with issues. Bridges build after 1980 appear to be in a much better state in general. Bridges built after 2000 are usually in quite good states. This broadly suggests that bridges that are up to 20 years old are usually quite good. Bridges that are between 20-40 years old get slowly worse, and from 40-60 years old they start needing more maintenance. Another historically interesting fact is that this suggests that there were many bridges built during the Third Reich, from say 1935 to about 1941 or so. In the 10 years after the war notably fewer bridges seem to have been built. &#xD;
&#xD;
To help illustrate that point one could also plot the regression line (orange below). We will use a linear and a quadratic model:&#xD;
&#xD;
nlm = LinearModelFit[builtdatevsmark, {1, x}, x]&#xD;
nlm2 = LinearModelFit[builtdatevsmark, {1, x, x^2}, x]&#xD;
&#xD;
and then plot it:&#xD;
&#xD;
    Show[BubbleChart[Flatten /@ Tally[builtdatevsmark], &#xD;
      PlotRange -&amp;gt; {{1900, 2020}, All}, &#xD;
      ColorFunction -&amp;gt; Function[{x, y, r}, Lighter[Green, r/41.]], &#xD;
      AspectRatio -&amp;gt; 0.3, BubbleSizes -&amp;gt; {0.01, 0.05}, &#xD;
      Background -&amp;gt; Black, LabelStyle -&amp;gt; Directive[Bold, 15, White], &#xD;
      Epilog -&amp;gt; {Red, Line[{{1890, 2.95}, {2020, 2.95}}], Blue, &#xD;
        Line[{{1960, 0.8}, {1960, 3.8}}], &#xD;
        Line[{{1980, 0.8}, {1980, 3.8}}], Green, &#xD;
        Line[{{1890, 1.95}, {2020, 1.95}}]}], &#xD;
     Plot[nlm[x], {x, 1900, 2020}, PlotStyle -&amp;gt; Orange]]&#xD;
&#xD;
![enter image description here][25]&#xD;
&#xD;
or for the quadratic model (same code as above but nlm2 instead of nlm):&#xD;
&#xD;
![enter image description here][26]&#xD;
&#xD;
Fitting a 5th order polynomial gives this:&#xD;
&#xD;
![enter image description here][27]&#xD;
&#xD;
We can also plot bands for the single prediction error. &#xD;
&#xD;
    nlm2[&amp;#034;SinglePredictionBands&amp;#034;]&#xD;
&#xD;
For nlm2 that looks like so:&#xD;
&#xD;
    Show[BubbleChart[Flatten /@ Tally[builtdatevsmark], &#xD;
      PlotRange -&amp;gt; {{1900, 2020}, All}, &#xD;
      ColorFunction -&amp;gt; Function[{x, y, r}, Lighter[Green, r/41.]], &#xD;
      AspectRatio -&amp;gt; 0.3, BubbleSizes -&amp;gt; {0.01, 0.05}, &#xD;
      Background -&amp;gt; Black, LabelStyle -&amp;gt; Directive[Bold, 15, White], &#xD;
      Epilog -&amp;gt; {Red, Line[{{1890, 2.95}, {2020, 2.95}}], Blue, &#xD;
        Line[{{1960, 0.8}, {1960, 3.8}}], &#xD;
        Line[{{1980, 0.8}, {1980, 3.8}}], Green, &#xD;
        Line[{{1890, 1.95}, {2020, 1.95}}]}], &#xD;
     Plot[{-129.53690036856392` + 0.14262757468838871` x - &#xD;
        0.00003842565681513884` x^2 - &#xD;
        1.9603506747760122` \[Sqrt](99.64290933950231` - &#xD;
            0.20387038807958635` x + 0.00015683763427764343` x^2 - &#xD;
            5.3645803097817624`*^-8 x^3 + &#xD;
            6.883592653276127`*^-12 x^4), -129.53690036856392` + &#xD;
        0.14262757468838871` x - 0.00003842565681513884` x^2 + &#xD;
        1.9603506747760122` \[Sqrt](99.64290933950231` - &#xD;
            0.20387038807958635` x + 0.00015683763427764343` x^2 - &#xD;
            5.3645803097817624`*^-8 x^3 + 6.883592653276127`*^-12 x^4), &#xD;
       nlm2[x]}, {x, 1900, 2020}, PlotStyle -&amp;gt; {Yellow, Yellow, Orange}, &#xD;
      Filling -&amp;gt; {{1 -&amp;gt; {3}, 2 -&amp;gt; {3}}}]]&#xD;
&#xD;
![enter image description here][28]&#xD;
&#xD;
Infrastructure spending&#xD;
----------&#xD;
&#xD;
The OECD offers great data on the infrastructure spending of different countries [here][29]. We import that data:&#xD;
&#xD;
spending = Import[&amp;#034;/Users/thiel/Desktop/DP_LIVE_15082018232318196.csv&amp;#034;];&#xD;
&#xD;
and select the infrastructure spending for roads for different countries over the years:&#xD;
&#xD;
    germanySpending = &#xD;
      Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;DEU&amp;#034; &amp;amp;];&#xD;
    spainSpending = &#xD;
      Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;ESP&amp;#034; &amp;amp;];&#xD;
    italySpending = &#xD;
      Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;ITA&amp;#034; &amp;amp;];&#xD;
    franceSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &#xD;
         &amp;#034;FRA&amp;#034; &amp;amp;]; usaSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;USA&amp;#034; &amp;amp;];&#xD;
    greeceSpending = &#xD;
      Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;GRC&amp;#034; &amp;amp;];&#xD;
    ukSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &#xD;
         &amp;#034;GBR&amp;#034; &amp;amp;]; russiaSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;RUS&amp;#034; &amp;amp;];&#xD;
    luxemburgSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &#xD;
         &amp;#034;LUX&amp;#034; &amp;amp;]; russiaSpending = &#xD;
     Select[spending, #[[3]] == &amp;#034;ROAD&amp;#034; &amp;amp;&amp;amp; #[[1]] == &amp;#034;RUS&amp;#034; &amp;amp;];&#xD;
&#xD;
If we plot this, we reproduce the plot of CNN, and get a better range than the BBC:&#xD;
&#xD;
    DateListPlot[{{DateObject[ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       germanySpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       spainSpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ italySpending[[All, -3 ;; -2]],&#xD;
      {DateObject[ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       ukSpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       russiaSpending[[All, -3 ;; -2]]}, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
     LabelStyle -&amp;gt; Directive[Bold, 15], &#xD;
     PlotLegends -&amp;gt; {&amp;#034;Germany&amp;#034;, &amp;#034;Spain&amp;#034;, &amp;#034;Italy&amp;#034;, &amp;#034;United Kingdom&amp;#034;, &#xD;
       &amp;#034;Russia&amp;#034;}, ImageSize -&amp;gt; Large, FrameLabel -&amp;gt; {&amp;#034;year&amp;#034;, &amp;#034;spending&amp;#034;}]&#xD;
&#xD;
![enter image description here][30]&#xD;
&#xD;
The BBC article only shows the range from 2007 to 2016, a phase in which the infrastructure spending in Italy (and Spain) has fallen substantially. This could be used to make the case that a lack of infrastructure spending by Italy might have contributed to the disaster. The full period from 1995, however, shows that Italy went through a phase of higher investments from 2004-2008 and then returned to values slightly lower than before 2004. Note also that this is the total spending and not normalised by population size, GDP or size of the road network. If for example we also plot the graph for the United States the diagram looks like this:&#xD;
&#xD;
    DateListPlot[{{DateObject[ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       germanySpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       spainSpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ italySpending[[All, -3 ;; -2]],&#xD;
      {DateObject[ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       ukSpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ &#xD;
       russiaSpending[[All, -3 ;; -2]], {DateObject[&#xD;
          ToString[#[[1]]]], #[[2]]} &amp;amp; /@ usaSpending[[All, -3 ;; -2]]}, &#xD;
     PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, LabelStyle -&amp;gt; Directive[Bold, 15], &#xD;
     PlotLegends -&amp;gt; {&amp;#034;Germany&amp;#034;, &amp;#034;Spain&amp;#034;, &amp;#034;Italy&amp;#034;, &amp;#034;United Kingdom&amp;#034;, &#xD;
       &amp;#034;Russia&amp;#034;, &amp;#034;USA&amp;#034;}, ImageSize -&amp;gt; Large, &#xD;
     FrameLabel -&amp;gt; {&amp;#034;year&amp;#034;, &amp;#034;spending&amp;#034;}, PlotRange -&amp;gt; All]&#xD;
&#xD;
![enter image description here][31]&#xD;
&#xD;
where the United States dwarf the spending by the (much smaller) European countries. There does, however, appear to be a trend of increasing infrastructure spending in the United States. &#xD;
&#xD;
(Preliminary) Conclusion&#xD;
----------&#xD;
&#xD;
We have developed a couple of graphs visualising some data about the state of bridges and produced some graphs that would appear in news coverage of the Genoa disaster. We have pulled in satellite date to inspect the bridges and seen how easy it is in the Wolfram Language to asks your own questions and get meaningful representations. This is, of course, only a shot computational essay, and by no means a comprehensive analysis. In fact, many questions can be asked next. Do different types of bridges age better (or worse)? Could additional data such as accelerometer data from mobile phones in cars that drive over bridges help to &amp;#034;measure&amp;#034; the state of the bridge? Could we use dash cam footage? There is data on cars using individual roads; could we build a model to suggest which bridges to fix first in order to minimise risk to people? It is should be easy to use TravelDirectionsData to get a warning about problematic bridges on the way. &#xD;
&#xD;
If citizens perform this or similar types of analysis it might help to prompt politicians or the administration to act when there is a hazard. The Wolfram Language is a great tool to enable us to do so.&#xD;
&#xD;
PS: By the way, if you want to do the same analysis for the United States, [this dataset][32] might be useful. &#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.02.53.png&amp;amp;userId=48754&#xD;
  [2]: https://edition.cnn.com/2018/08/15/europe/italy-genoa-morandi-bridge-collapse-intl/index.html&#xD;
  [3]: https://www.bbc.co.uk/news/world-europe-45193614&#xD;
  [4]: http://www.welt.de/politik/interaktiv/bruecken/deutschlands-bruecken-wettlauf-gegen-den-verfall.html&#xD;
  [5]: https://docs.google.com/spreadsheets/d/1h_%5C%20NKP3lvTnoQBFjCRa9gJLLOi2rxtIMeNucvAUsPwtI/edit?pref=2&amp;amp;pli=1#gid=0&#xD;
  [6]: https://www.bast.de/BASt_2017/DE/Statistik/statistik-node.html&#xD;
  [7]: https://www.bast.de/BASt_2017/DE/Statistik/Bruecken/Zustandsnoten-excel.html?nn=1819430&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.12.22.png&amp;amp;userId=48754&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.25.29.png&amp;amp;userId=48754&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.30.53.png&amp;amp;userId=48754&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.46.34.png&amp;amp;userId=48754&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.49.10.png&amp;amp;userId=48754&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.49.53.png&amp;amp;userId=48754&#xD;
  [14]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.53.04.png&amp;amp;userId=48754&#xD;
  [15]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.54.32.png&amp;amp;userId=48754&#xD;
  [16]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.56.13.png&amp;amp;userId=48754&#xD;
  [17]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1523.59.58.png&amp;amp;userId=48754&#xD;
  [18]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.01.18.png&amp;amp;userId=48754&#xD;
  [19]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.02.39.png&amp;amp;userId=48754&#xD;
  [20]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.03.25.png&amp;amp;userId=48754&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.07.28.png&amp;amp;userId=48754&#xD;
  [22]: https://docs.google.com/spreadsheets/d/1h_%5C%20NKP3lvTnoQBFjCRa9gJLLOi2rxtIMeNucvAUsPwtI/edit?pref=2&amp;amp;pli=1#gid=0&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.12.48.png&amp;amp;userId=48754&#xD;
  [24]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.14.35.png&amp;amp;userId=48754&#xD;
  [25]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1601.20.48.png&amp;amp;userId=48754&#xD;
  [26]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1601.23.19.png&amp;amp;userId=48754&#xD;
  [27]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1601.32.50.png&amp;amp;userId=48754&#xD;
  [28]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1601.48.06.png&amp;amp;userId=48754&#xD;
  [29]: https://data.oecd.org/transport/infrastructure-investment.htm&#xD;
  [30]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.26.42.png&amp;amp;userId=48754&#xD;
  [31]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2018-08-1600.31.31.png&amp;amp;userId=48754&#xD;
  [32]: https://www.fhwa.dot.gov/bridge/nbi/ascii2017.cfm</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2018-08-15T23:46:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/567757">
    <title>GPS Mountainbike analysis</title>
    <link>https://community.wolfram.com/groups/-/m/t/567757</link>
    <description>Here I will show a way to do some analysis of GPS data using new functionality present in the Wolfram Language.&#xD;
&#xD;
I just moved to Lyon (France), where they organised a mountainbike tour last week ([Lyon Free VTT][1]). I opted for the &amp;#039;expert&amp;#039; trail of roughly 60 km with 1000+ meters ascend. I recorded my trip using the Garmin GPSmap 62s and I&amp;#039;m wearing a heart rate sensor from Garmin as well.&#xD;
&#xD;
We start by setting the current directory to the notebookdirectoy, and look for the GPX file of the day of the event:&#xD;
&#xD;
    SetDirectory[NotebookDirectory[]];&#xD;
    fn = FileNames[&amp;#034;*2015-09-13*.gpx&amp;#034;][[1]]&#xD;
&#xD;
    &amp;#034;Track_2015-09-13 121636.gpx&amp;#034;&#xD;
&#xD;
So we found the file. The GPX file is an XML formatted file. So we can read the data easily:&#xD;
&#xD;
    data = Import[fn, &amp;#034;XML&amp;#034;];&#xD;
&#xD;
The data is stored in &amp;#034;track points&amp;#034; which are abbreviated as `trkpt`. We can find the parts of the track by using `Cases`.&#xD;
&#xD;
    FirstCase[data, XMLElement[&amp;#034;trkpt&amp;#034;, ___], Missing[], \[Infinity]]&#xD;
&#xD;
which looks like:&#xD;
&#xD;
    XMLElement[trkpt,{lat-&amp;gt;45.7242092583,lon-&amp;gt;4.8268832266},&#xD;
    {XMLElement[ele,{},{173.17}],&#xD;
     XMLElement[time,{},{2015-09-13T06:09:03Z}],&#xD;
     XMLElement[extensions,{},{&#xD;
      XMLElement[{http://www.garmin.com/xmlschemas/TrackPointExtension/v1,TrackPointExtension},{},{&#xD;
      XMLElement[{http://www.garmin.com/xmlschemas/TrackPointExtension/v1,hr},{},{108}]}&#xD;
    ]}&#xD;
    ]}&#xD;
    ]&#xD;
&#xD;
Wow! Looks quite complicated, but the important thing is that it always starts with the Latitude and Longitude coordinates as `attributes -&amp;gt; values`, and then followed by some more data (in this case the time, elevation, and heart rate). &#xD;
&#xD;
So lets get all the track points:&#xD;
&#xD;
    data = Cases[data, XMLElement[&amp;#034;trkpt&amp;#034;, {&amp;#034;lat&amp;#034; -&amp;gt; lat_, &amp;#034;lon&amp;#034; -&amp;gt; lon_}, other_] :&amp;gt; {ToExpression /@ {lat, lon}, other}, \[Infinity]]&#xD;
&#xD;
Note that I immediately detect the `latitude`, `longitude` and the `other` data and put them as a replacement rule right in `Cases`. &#xD;
&#xD;
I started recording when I left my house to go to the Start, and I also continued recording after I cycled back from the finish to my house. &#xD;
So we remove this data:&#xD;
&#xD;
    data = Drop[Drop[data, 246], -128];&#xD;
&#xD;
The trail is now stored as the first element of each element of data:&#xD;
&#xD;
    trail = GeoPosition /@ data[[All, 1]];&#xD;
&#xD;
We can now easily visualise this using the new GeoGraphics function (V10 and up):&#xD;
&#xD;
    GeoGraphics[{Thick, Line[trail]}, ImageSize -&amp;gt; 400]&#xD;
&#xD;
Giving:&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
That looks pretty good! Now let&amp;#039;s retrieve the time, elevation and heart rate from the data. We overwrite data, because we already extracted the latitude and longitude from it:&#xD;
&#xD;
    data = data[[All,2]];&#xD;
&#xD;
First, let&amp;#039;s try the time, we use the new `FirstCase` command (V10) as we only expect one time per track point entry. We make a pure function and map that over all the data:&#xD;
&#xD;
    absolutetime = time = Map[&#xD;
    FirstCase[#,XMLElement[&amp;#034;time&amp;#034;,{},{time_}]:&amp;gt;AbsoluteTime[time]+$TimeZone*3600,Missing[],\[Infinity]]&amp;amp;&#xD;
    ,&#xD;
    data&#xD;
    ] &#xD;
    time -= First[time]&#xD;
&#xD;
Note that I also add some seconds so that I have the time in my own timezone (the default is in Zulu (universal) time). In case the time is somehow not recorded it will returning `Missing[]`. I will also save a variable which is the time starting when I start called `time` (second line). &#xD;
&#xD;
We can do something similar for the elevation:&#xD;
&#xD;
    elevation=Map[FirstCase[#,XMLElement[&amp;#034;ele&amp;#034;,{},{ele_}]:&amp;gt;ToExpression[ele],Missing[],\[Infinity]]&amp;amp;,data]&#xD;
&#xD;
and for the heart rate:&#xD;
&#xD;
    hr=Map[FirstCase[#,XMLElement[{&amp;#034;http://www.garmin.com/xmlschemas/TrackPointExtension/v1&amp;#034;,&amp;#034;hr&amp;#034;},{},{hr_}]:&amp;gt;ToExpression[hr],Missing[],\[Infinity]]&amp;amp;,data];&#xD;
&#xD;
Now that we have all the data, let&amp;#039;s explore a little bit further. Let&amp;#039;s first compute the distance travelled:&#xD;
&#xD;
    distances=BlockMap[GeoDistance@@#&amp;amp;,trail,2,1];&#xD;
    distances=Prepend[QuantityMagnitude[distances,&amp;#034;Meters&amp;#034;],0.0];&#xD;
    distance=Accumulate[distances];&#xD;
&#xD;
Here I used the new BlockMap function (V10.2) to compute the distance between each pair of points. (2 to denote pairs, and 1 to have overlapping pairs). I convert the results to just number (without units), otherwise the `Accumulate` is very slow (why is this slow Wolfram?). Lastly I keep track of the accumulated distance using the command `Accumulate`.&#xD;
 &#xD;
 Now we can plot this as a function of time:&#xD;
&#xD;
    DateListPlot[{absolutetime,distance}\[Transpose],FrameLabel-&amp;gt;&amp;#034;Meters&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;400]&#xD;
&#xD;
giving:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
The total distance travelled is:&#xD;
&#xD;
    Last[distance]&#xD;
    57106.&#xD;
&#xD;
This answer is in meters because I took the magnitude in &amp;#034;Meters&amp;#034;. We can convert it to miles quite easily:&#xD;
&#xD;
    UnitConvert[Quantity[%, &amp;#034;Meters&amp;#034;], &amp;#034;Miles&amp;#034;]&#xD;
    35.484mi&#xD;
&#xD;
About 35.5 miles. &#xD;
&#xD;
Let&amp;#039;s calculate the speed:&#xD;
&#xD;
    speed=Differences[distance]/Differences[time];&#xD;
    speed=Join[{speed[[1]]},MovingAverage[speed,2],{speed[[-1]]}];&#xD;
    &#xD;
The first order difference will give me the speed, I&amp;#039;m doing a moving average so that I have the average speed at an instant, I append and prepend the first and last speed, respectively, such as to have the length of `speed` and the length of `time` to be the same. &#xD;
&#xD;
Now we can plot the speed (which is in meter/second, so I multiply by 3.6 to get km/h):&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime,3.6speed}],FrameLabel-&amp;gt;&amp;#034;Kilometer/Hour&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
My speed varies a lot as you can see. This is partly because this is an urban trail with climbs and descends, but also sharp corners, and up and down-going stairs. But also because of some GPS errors you have some fluctuations. This is apparent in the above plot, I&amp;#039;m quite fast, but not 80 km/h (50 miles/hour) fast!! So let&amp;#039;s smooth the data over a few points:&#xD;
&#xD;
    slen=3;&#xD;
    smoothspeed=Join[Accumulate[speed[[;;slen]]]/Range[slen],MovingAverage[speed,2slen+1],Reverse[Accumulate[Reverse[speed[[-slen;;]]]]/Range[slen]]];&#xD;
&#xD;
Which looks more realistic:&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime,3.6smoothspeed}],FrameLabel-&amp;gt;&amp;#034;Kilometer/Hour&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
You can clearly see that I had a flat tire around 10:15 that took me 7-8 minutes to repair...&#xD;
&#xD;
Let&amp;#039;s calculate the average speed (up to some time t):&#xD;
&#xD;
    avgspeeds=Prepend[Rest[distance]/Rest[time],0];&#xD;
&#xD;
And showing:&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime,3.6avgspeeds}],FrameLabel-&amp;gt;&amp;#034;Kilometer/Hour&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
So I ended with a speed of `3.6 Last[avgspeeds] = 14.5 km/h` which is not too bad considering it includes also a flat tire.&#xD;
&#xD;
Plotting the elevation is also quite easy now:&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime, elevation}], FrameLabel -&amp;gt; &amp;#034;Meters&amp;#034;, FrameStyle -&amp;gt; 12, ImageSize -&amp;gt; 1000, AspectRatio -&amp;gt; 1/5, PlotRange -&amp;gt; All]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
There were some very steep hills in this track, and pieces where I had to change to my lowest gear to climb them. &#xD;
&#xD;
Also plotting the heart rate is quite easy:&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime,hr}],FrameLabel-&amp;gt;&amp;#034;BPM&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All]&#xD;
    &#xD;
![enter image description here][8]&#xD;
&#xD;
Let&amp;#039;s compute the total number of heart beats and the average heart rate:&#xD;
&#xD;
    hb=Interpolation[DeleteMissing[{time,hr/60.0}\[Transpose],1,2],InterpolationOrder-&amp;gt;1];&#xD;
    hb=Round[Integrate[hb[t],{t,Min[time],Max[time]}]]&#xD;
    avghr=60hb/(Max[time]-Min[time])&#xD;
&#xD;
    38443 (* beats *)&#xD;
    162.8 (* average beats / minute *)&#xD;
&#xD;
That is quite high for my age (28 years)! &#xD;
&#xD;
Let&amp;#039;s compute the elevation gain:&#xD;
&#xD;
    elevationgain = Total[Select[Differences[elevation], Positive]]&#xD;
&#xD;
    1193.05 (* meters *)&#xD;
&#xD;
That explains partly the low speeds and the high heart rates! I&amp;#039;ve climbed almost 1200 meters.&#xD;
&#xD;
    QuantityMagnitude[Quantity[elevationgain,&amp;#034;Meters&amp;#034;],&amp;#034;Stories&amp;#034;]&#xD;
&#xD;
or about 400-500 stories!! (depending on your metric of a storey)&#xD;
&#xD;
Let&amp;#039;s make a visual plot where the climbs are by creating a map colored by the height:&#xD;
&#xD;
    colordata = Rescale[elevation];&#xD;
    color = Blend[{{0, Darker@Green}, {0.5, Yellow}, {1, Red}}, #] &amp;amp; /@ colordata;&#xD;
    GeoGraphics[{AbsoluteThickness[8], JoinForm[&amp;#034;Round&amp;#034;], Line[trail, VertexColors -&amp;gt; color]}, ImageSize -&amp;gt; 400]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
Green means low, and red means high altitude. Using the same colors we can create also the accompanying plot:&#xD;
&#xD;
    DateListPlot[Transpose[{absolutetime,elevation}],FrameLabel-&amp;gt;&amp;#034;Meters&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All,ColorFunction-&amp;gt;(Blend[{{0,Darker@Green},{0.5,Yellow},{1,Red}},#2]&amp;amp;),PlotStyle-&amp;gt;Directive[AbsoluteThickness[5],JoinForm[&amp;#034;Round&amp;#034;]]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
Or the same but instead colored by the speed:&#xD;
&#xD;
    colordata=Rescale[smoothspeed];&#xD;
    cf=Blend[{{0.2,Red},{0.45,Yellow},{0.8,Darker@Green}},#]&amp;amp;;&#xD;
    color=cf/@colordata;&#xD;
    g1=GeoGraphics[{AbsoluteThickness[8],JoinForm[&amp;#034;Round&amp;#034;],Line[trail,VertexColors-&amp;gt;color]},ImageSize-&amp;gt;400]&#xD;
    DateListPlot[Transpose[{absolutetime,3.6smoothspeed}],FrameLabel-&amp;gt;&amp;#034;km/h&amp;#034;,FrameStyle-&amp;gt;12,ImageSize-&amp;gt;1000,AspectRatio-&amp;gt;1/5,PlotRange-&amp;gt;All,ColorFunction-&amp;gt;(cf[#2]&amp;amp;),PlotStyle-&amp;gt;Directive[AbsoluteThickness[5],JoinForm[&amp;#034;Round&amp;#034;]]]&#xD;
&#xD;
![enter image description here][11]&#xD;
![enter image description here][12]&#xD;
&#xD;
In the corners and in the climbs it is slow (red), while for the flat, down, and straight pieces it is fast (green). It looks like there is way more green, then red on the map, while for the bottom plot it is roughly equal, this is because for a low speed you travel only a little so just a bit of red on the map. While for high speed you travel more distance so it looks more green...&#xD;
&#xD;
This is part I, below I will post a second part of the analysis. With some nice general functionality. PS. Also have a look at the 2009 post at the wolfram blog when GeoGraphics (and other functions) were not introduced yet. [Wolfram Blog about GPS][13]&#xD;
&#xD;
&#xD;
  [1]: http://www.lyonfreevtt.com&#xD;
  [2]: /c/portal/getImageAttachment?filename=1_map.png&amp;amp;userId=73716&#xD;
  [3]: /c/portal/getImageAttachment?filename=2_distance.png&amp;amp;userId=73716&#xD;
  [4]: /c/portal/getImageAttachment?filename=3_speed.png&amp;amp;userId=73716&#xD;
  [5]: /c/portal/getImageAttachment?filename=3.5_smoothspeed.png&amp;amp;userId=73716&#xD;
  [6]: /c/portal/getImageAttachment?filename=4_avgspeed.png&amp;amp;userId=73716&#xD;
  [7]: /c/portal/getImageAttachment?filename=5_elevation.png&amp;amp;userId=73716&#xD;
  [8]: /c/portal/getImageAttachment?filename=5.5_hr.png&amp;amp;userId=73716&#xD;
  [9]: /c/portal/getImageAttachment?filename=6_elevationmap.png&amp;amp;userId=73716&#xD;
  [10]: /c/portal/getImageAttachment?filename=7_elevationcolor.png&amp;amp;userId=73716&#xD;
  [11]: /c/portal/getImageAttachment?filename=8_speedmap.png&amp;amp;userId=73716&#xD;
  [12]: /c/portal/getImageAttachment?filename=9_speedtime.png&amp;amp;userId=73716&#xD;
  [13]: http://blog.wolfram.com/2009/04/17/mapping-gps-data/</description>
    <dc:creator>Sander Huisman</dc:creator>
    <dc:date>2015-09-19T17:56:26Z</dc:date>
  </item>
</rdf:RDF>

