Visualizing and Computing Astronomical and Chemical Data and Historical Geography

Jamie Peterson hosts a Wolfram U webinar with Jose Martin Garcia, Jeffrey Bryant, and Jason Biggs on new features in Wolfram 14.1. They demonstrate updates in astrocomputation, chemistry content, and biomolecule visualization, plus improvements for astronomical computations, chemical data, and historical geography.
Chapters
Foreign.
Hi everyone, I'm Jamie Peterson, Director of Wolfram U. It's my pleasure to welcome you to the latest session in our new in Wolfram 14.1 webinar series. Over the past few weeks we've had a comprehensive overview of the new release and special specialized presentations on the latest mathematical computation functionality and updates for the Wolfram compiler, system modeler and external language integration. You can access recordings from these previous sessions right here on the webinar landing page. And today we're pleased to welcome programmers, developers and researchers responsible for scientific content and computable data in Wolfram language and wolframalpha. Our presenters today will start off with Jose Martin Garcia, who will be talking about what's new in Wolfram language astrocomputation. We also have Jeffrey Bryant with us to contribute his expertise in the field. Next, our Chemistry content lead developer Jason Biggs will present on the new symbolic biomolecule construct that can represent the full structure of biomolecules and offers incredible 3D views. Then Jose will return, this time with assistance with Cesar Lali, to cover new functionality that makes historical geography computable. You can read more about these new features and more in Stephen Wolfram's release announcement. To try the examples from today's webinar, you'll want access to version 14.1 and we'll share a free trial offer so you can get started right away. We're going to ask a poll question to the webinar audience now about whether you've already upgraded to version 14.1. We have a YouTube livestream audience as well and for those of you on YouTube, please type your responses, comments and questions in the chat there. We have Wolfram webinar and technical staff joining us behind the scenes to help coordinate Q and A between the webinar and the livestream. So I encourage you to type your questions as we go along. Our staff are here to answer what we can and type responses to you, and we'll save some questions for the team to answer at the end of each of their presentations. So thanks for answering that poll question. As more people get finished up finishing their responses, let me point out that there is a download link with handouts from all the presentations of the webinars in this series. It's in that highlighted kind of blue green area on your screen there in your browser. We add notebooks each week as we continue this series and we hope that you'll join us next week for the final session which is new and powerful components for AI and LLMs. So thanks for your attention. Without further delay, I will hand things over to Jose Martin Garcia.
Okay. Hello everyone. My name is Jose Martin Garcia and I'm manager of the special projects area in the research and development department. This includes topics like geography, astronomy, the language of quantities, the language of dates and other topics. So today I'll be talking about Astro computation and the new features in this area in Fortnite 1. This is working collaboration with my colleague Jeff Bryan from the WolframAlpha team and he's here today to help us with questions. Feel free to post questions in the chat or at the end of the talk, we will both address those questions. Okay, so now I'm going to turn off my camera and we will continue with the presentation. Okay, so the Astro functionality was added to BOR form language less than two years ago in version 13.2 and 13.3. Since then, in every cycle we add more functionality or extend existing functionality. For example, in the previous version 14.0 we added new functions to control the position and the orientation of the moon. And we extended the function Solar eclipse. Motivated by the eclipse. The solar eclipse on April 8th earlier this year. In this version we have improved the visuals of Astrographics and we have extended a lot the rising setting functionality. So these will be the two main topics we will be talking about today. So the plan of the talk is the following. We will start by reviewing the main functions Astroposition and Astrographics and. And then we will describe the new additions in Astrographics. And then we will dedicate the rest of the talk to the rising and setting functionality with examples particularly about the Moon, the Sun and also other bodies. Okay, so let's remember our two key functions. The first one is astroposition. So astroposition gives you the coordinates of any object. For example, this is the current position of the sun in the so called horizontal coordinates, giving the azimuth and altitude. You can also get many other pieces of data. And for the objects in the solar system, we used the most recent Data provided by NASA, which is called the Development FMRIS441 of a few years ago. And for other objects outside the solar system, we use data from WolframAlpha. So you can use strings or entities to refer to objects. For example, here we have the position of the sun now being updated regularly. So you see how it changes. This change is mostly due to Earth's rotation. So if we choose a different coordinate system, like the equatorial coordinate system, we get now right ascension and declination for the moon now and again we can do it Dynamically. And now we see how the change is much slower. This is actually the change in position due to the motion of the moon. Okay, now let's have a look at astrographics. This is our main function to produce sky maps. It follows geographics. And so, for example, this is a map of the area around the star Betelgeuse in the constellation of Orion. And so, as in geographics, we specify a range. So this will be the distance from here to here will be approximately 25 degrees in the sky. And we are now using the equatorial frame. Notice that there are some limes. I'm not sure they can be seen through zoom, but, well, but there is a line here which is the projection of the equator. And there are other lines. This is the ecliptic in yellow. So you will see that the solar system objects are moving close to that line. That's the path of the sun in the sky. And here we have another line in red, which is the plane of the galaxy just tilted with respect to these other two. We can also add constellation illustrations. These were added some time ago by an artist working with us. So you now see the illustration of the constellation of Orion and other constellations. Or, as with geographics, we have lots of freedom to style the maps in various ways. So, for example, we are now using, you see, the galactic reference system. So now the plane of the galaxy is here in the middle. We are adding also grid lines. There are red grid lines here perpendicular to the galactic plane, because we are using galactic coordinates. And for example, we have selected here a point at the 00, the center of the galaxy, the center of the. The 00 of the galactic coordinate. So that's there. And as I said, we have a lot of freedom to style sky maps. Okay, so let's now look at something we have added in version 14.1. In recent versions of BOR form language, we have this new graphics primitive called axis objects, which allows us to place an axis anywhere in the graphics. So now we are using that internally in astrographics as well. And so the lines that we were discussing before now have ticks. For example, this is the projection outwards of the equator of the Earth. So the natural ticks here are hours of right ascension or sidereal time. We have then the path of the sun, the ecliptic. So here the natural ticks are is a calendar. So we now have here the sun. So that would be the beginning of August. So that would be the beginning of September. We are reaching the beginning of September. So we can see where the sun is the path of the ecliptic. Or for example, here we have the horizon. This map, remember, is the upper hemisphere or the sky for our location. So here we have north, south, west and east. So remember that we are looking upwards. So if we are facing south, for example, and we have the north in our back, then we have west on the right and east on the left. So this is a manipulating which we can say, for example, see what happens during the day. So the sun you see is approaching the, the west. And here it will be about to set. Or for example, we can say what happens if we observe from another position on the Earth, right? So then you would see how the sun would change position. If we are, for example, here we will be around the equator. We can also change our longitude. By default, astrographics will assume that you are observing from your, from your geolocation. Another thing that we can do now is to observe from a higher place. For example, we are here now observing from the ground. Now if I observe from higher plate, you see how the Earth recedes. This is the ground, this is the Earth. So this is easier to see if we, for example, change this. Jose, I will mention that people are commenting. We can't see your mouse. So make sure if you're trying to point things out on the screen, you'll have to be more verbal. Oh, I see, I see. Okay. Okay, that's, that's strange. Okay, so, yes, so I was saying here we see the ground now. And so I'm changing the, the elevation of the ground. So now, for example, we are still getting, observing from a higher place. And so we see how the Earth is getting farther and farther away. Right? And so, right. So, so here we see the Earth how this was the Earth, right? So, so it's, it's very important that we understand what that gray thing is. And we can, we can observe from, from very high. And so I don't know whether you see it, but other objects in the solar system will start moving because we are getting so far away from the Earth that we see actually the perspective moving. Yes, we can also change the grid lines. For example, here we have grid lines that correspond to our horizon. Here we would have grid lines that correspond to the equator. So in blue. Now this would be grid lines that are perpendicular to the ecliptic in yellow. And here we would have grid lines that, that correspond to, are perpendicular to the, to, to the plane of the galaxy. Now imagine that we want to observe a start like Vega. We do that and we get something like this now we know what that gray thing is here, which is the Earth. Right? And now it happens that Vega is precisely covered by the Earth. So in order to avoid this, we have introduced this new parameter of the Astro style which says which objects you want to eliminate from the astrographics. And so if you say automatic, it's going to select close objects, but you can specify here a list and say I want to eliminate the Earth. And so if now we evaluate this, we will have this map in which we see Vega. You see still here the line in the middle is the horizon. But, but now we see Vega in the middle, right? We have eliminated the Earth. Okay, okay, so that was a quick review of updates in Astrographics. So now let's see about astrorise set. So the general syntax OfSizeNet has four arguments. We have the object being observed, we have a specification of when we want the object to be observed, and then the location from which we are observing and the date or a range of dates of the observation. Before going forward there, let's introduce a bit of nomenclature, which is the following. So here we have in the middle the observer, the observer is facing north. That's the white arrow facing north. And we have an object that rises on the east and sets on the west when we have the zenith at the top. And then the crossing of their dotted red line. And this blue line, which is the local meridian, will be the culmination, the upper culmination of the object. So we are interested in four the rising moment of the object when the object rises, the upper culmination, which is when it's highest in the sky, crossing the local meridian, then the setting on the west, and then the lower culmination when it is lowest in the sky, which is below the horizon, of course. So we will identify those four instants by these four words. Rise, set, upper culmination and lower culmination. So let's suppose, for example, that we want to compute when is the next rising of the moon from our location, and that's going to give us that moment or the moon set. Or we can ask for both things. They will be sorted according to time. So first the moon is going to set, and then the moon is going to rise. For example, we can ask for the same thing for a different location, when is the moon going to rise as seen from Paris. And notice that we still give the result in time zone GMT -5, which is our time zone. So it's more useful to give the result in the local time zone of Paris and So here we see it will be rising at 1:23 in European time. We can ask, for example, when is the next rising of the moon going to happen? After the beginning of next year. And here we have the result. For example, astral rise set has all sorts of options related to dates. So for example, we can change not only the time zone, but also the calendar, the granularity, etc. So here we are giving the result in the arithmetic French calendar, the calendar used during the French Revolution. Okay, so here we have seen the basic function for rising and setting. Now what do we mean by rising and setting? We have to explore this a bit. So that's the Moon rise we saw before. So what does that mean? So if we compute where is the Moon at that time of moonrise, we see it's close to the horizon, it has altitude minus 0 degrees, 15 minutes. Why is that? Okay, we can understand it if we compute an astrographic map. So here what we have, this line above the Moon is the horizon. So what we see is that we define exactly the moment of rising of the Moon when the upper limb, the upper part of the Moon, touches that line. That's the instant of rising, right? There is another line that crosses the Moon, but that, that's by chance a constellation line. So the, the important line that we are looking at is the gray line above the Moon. That's the horizon. So we can use the new option reference altitude to specify that we want the moment in which the center of the Moon is at the horizon. So there is a difference of about two minutes. Right? And now we see that the altitude is modulo some, some numerical error zero. That's exactly when this, the, the, the center of the Moon is at the horizon. And of course we can also do the same thing for the lower limb. We now get a difference from the original of about four minutes. That's the time that the Moon takes to rise from beginning to end. Right. Now we, you see, the center of the Moon will have a positive altitude and the map of the sky will show the Moon touching in the lower part, the horizon again. That other line that crosses the Moon is a constellation line. Okay, so now we know what rising and setting means and how we can control the, the instance of rising and setting using this option. Now let's do some examples with the Sun. For the sun, we can do the same computations, and of course we always had from years ago, these two functions, sunrise and sunset, that report the same results and they have the same free numbers. So for the sun, we have Specific functions, but they, they are equivalent to aster raised for the sun. Now let's talk a bit about culmination. Remember when is the moment in which the sun is highest in the sky? For example, the next time that that's going to happen from our location is going to be at 12:53 minutes:57 seconds. So that hour that is different from 12, from noon is due to the fact that we are in daylight savings, right? So our clocks are moved one hour and so this is closer to 1pm than to noon. Culmination happens with azimuth 180 degree in the northern hemisphere, right? It's the highest elevation of 60 degrees is going to be south. And we have another function called solar time, which is basically what the clock should be at our location following the sun. Again, modular numerical error. We see that this instant, what we call U culmination corresponds to solar time 12 hours. So, so noon, solar noon. This is that moment. So we see how the sun is going to be here. So this is south. So you have 10, 10, 20, 30, 40, 50, 60 degrees of elevation. And this is the highest in the sky. So if we, if we move, you see how the sun was, was about to set to rise there, then it rises 60 degrees. And then in the afternoon it will go down and set at zero elevation, of course, so that's the highest. We can do the same thing but using a different projection. And here we see better. So that's the horizon in gray as usual. Below that's the earth. Now if we move time axis, we see the sun rising. That's the moment of highest elevation, that's the upper culmination. And then it sets on the west. And we can do the same for lower culmination. Lower culmination will happen near midnight, of course. And again it's moved to one hour due to daylight savings. Another thing that we are always interested when dealing with the sun is twilight. So by by default, what we are doing when computing sunrises. Sunrise is when is looking at when the sun is at the horizon. But there is the concept of twilight, which means when is the sun at altitude -6 degrees. So it's before rising and after setting. So you see there is like, I don't know, half an hour difference, right? And this is called civil twilight. It's dark but not very dark.
And.
So this is the definition. One is the center of the sun at altitude -6 degrees. That coincides with, with the civil sunrise. There is another definition of twilight which is called nautical, nautical sunrise. And this is the Same idea, but at altitude, 12 degrees. And then there's a third one called astronomical twilight, which is before. So now we are talking about almost an hour and a half. And this is when really the sky is considered dark enough so that astronomical observations can be performed. Here I have a sky map of the position of the sun at proper sunrise, the center at sunrise, and then the other three positions of the sun, 6 degrees. So these lines of, of Astrogrid lines are separated 5 degrees. So we have 6 degrees, 12 degrees and 18 degrees. And. And the fact that the ecliptic, the yellow line, is not aligned with this sorry. Line is due to the rotation of the Earth. Okay, so now we have been discussing computations for a single instant. Now let's do computations for date intervals. For example, let's compute all the rises of the sun during this week. So here we have seven days of the sun rising. And so if we compute the difference, we see it's a little bit more than 24 hours. We can do the same thing over a whole year. And so, for example, we are going to compute all the sunrises over a year, so 366 this year. And the same thing for the sunsets. And we are reporting the results in the time zone of America, Chicago. And now that we have all the sunrises and all the sunsets, what we are going to do is to do a list plot of all of them. And here we see the time of sunrise in yellow and the time of sunset in blue. And you see that the lines are discontinuous. This is again, daylight savings. And we see how the yellow part is more or less horizontal, which is used to use as much daylight as possible in the afternoons or evenings. Okay, so that's how we compute many, many sunrises or sunsets. And we can do the same thing for the Moon. And now something interesting is that we see that in a week the Moon can rise or set six times. This is because if we compute the differences, we see that it's about 25 hours. So it happens that there are days in which there is not a moonrise or there is not a moon set. One of them must be there, but not necessarily both, as is the case with the Sun. We can compute all of them, for example, during this week. And we see the alternation of rising and setting. It's just that, for example, tomorrow, Tuesday, sorry, yesterday Tuesday, there was not any rising of the moon. The previous was near midnight, and the next one was right after midnight. If we do this for a period of two months notice that there is another mode of results. If we, rather than specifying a date interval, we specify the date range. What we get is an event series of pairs, input, the date of input and the output. We now map time objects again to do the same thing as before. And here you see the very different structure that moonrises and moon sets have. Right? So this is a lot less intuitive than. Than the case of the Sun. So this is. This is over a period of two months. Okay. And finally, I just wanted to mention that. The function takes into account the fact that there may not be rises or settings for a long period during a year. For example, if we are Observing from latitude 75 degrees here, we see risings during spring, not during summer. And then during fall and not during winter. My last slide. We can observe from other places. For example, observe Mars rising and setting. Sorry, we can observe other objects. So this is Mars rising and setting. We can do the same thing. Observe the upper limb or the lower limb. We see that rather than four minutes, it takes less than a second for Mars to rise. But it's finite, so there is a second there. And we can also observe from objects like the star Polaris from different places. And there are places in which, for example, Polaris will always be in our sky. So it's never going to rise or set. It's always visible from Buenos Aires. You never see Polaris, so it's never visible. But Polaris can be observed from locations close to the equator. Right? So from Quito, because Polaris is not exactly, exactly at the North Pole, it rises and sets and same thing happens on the other side. And then we can observe say, Mars rising and setting from the Moon.
Right?
So. So with this function you can observe anything from any place in the solar system. Okay, so here I finished my talk, Jose. I answered several questions, but there's a few I left open because I figured you'd be better able to answer those than me. One question is someone's asking our rise sat accounting for nominal atmospheric refraction? Yeah, exactly. Yes, it does. Yes, all of our Astro functionality takes into account refraction and for consistency with astroposition and astrographics, etc. We do take it into account. There are ways to turn it off using Astro reference frame. But yes, by default it is. There is. So how would you do that? Through Astro rise sets. I know that astroposition can obviously do that. Are there options to Astro rise set that lets you tweak the refraction if you don't like the default. Right, Exactly. So the location frame. Sorry, the Location argument is actually a reference frame. So you can specify there that you want other parameters. Right. And turn off the relativistic effects, things like that. So we take into account, for example, the finite speed of light in these computations. Yes. Somebody also asks be really cool. It's more of a comment. It would be really cool if you could compute the right side of the moon, say with consideration of to the topographical features around me, hills, etc. Right. That's more difficult. No, the only thing that we can do is to observe from a higher elevation and then you would have to specify the angle at which you are interested with the reference altitude. So if you know that you are very high in a mountain, so the Horizon looks like 10 degrees below you, you can specify that, but we don't do it. Automatic. Dates. Yeah. Yes. So this, this is available for all dates covered by our FMRI's functionality. So for the moon, for example, it goes very, very far in the past, like 15,000 years. For other planets it's not so far. And then, yes, calendars, we do take into account all details of calendars, time systems as well. You can specify that you are specifying dates in tt, terrestrial time or ut. Yeah, all those details are taken into account. Atomic time, Natural language. Yes, so we have much functionality for about natural language, much of it going through BOR from Alpha and I mean these gets updated sometime after we have new functionality.
But.
But yes, much of the. Yeah, usually if you type in control equals and type your question in that way, if it's something that's supported, it should parse and resolve. It's possible if you ask it in a really fluffy way that it might not get it. So try to keep your query simple. But if you think that there's a. If you're just trying to figure out how plot, for example, you can say plot and then give your function and it will probably resolve that as the plot function with your function inserted. Right. So you see how I asked here for an exaltest and immediately went and did that. But yes, as Jeff said, the key is control equal. So I click on control equal, I get this input here and that's it. Okay, so I think that finishes my talk and I'll let Jason take over.
Hello, my name is Jason Biggs. I work for WolframAlpha and Wolfram Research, generating chemistry content both for WolframAlpha and for the Wolfram language in general. See, I've worked for the company since 2016 and yeah, excited about it. Always excited about a new release so let's try and share this notebook. Okay, great. So new in version 14.1 we have 3D visualization of biomolecules. So let's, let's move forward. So just about this presentation, we will first give a brief introduction, Wolfram Chemistry, and then we'll describe some of the new features in version 14.1. Let's see. So Wolfram Chemistry, it kind of grew out of the Wolfram knowledge base, which in turn grew out, which grew out of Wolfram Alpha. It's the world's most advanced repository of reliable data, tightly integrated with tens of thousands of algorithms. We have symbolic representation of chemical objects. That's one of the biggest parts of Wolfram Chemistry is we bring symbolic computation in your notebook. We have built in functions for computing with, visualizing or modifying those objects. And then we've also got an extensive amount of additional functions in the, the function repository and the packlet repository. Let's begin here. We'll start off with data. We have access to the curated data in the knowledge base through the entity framework. We have elements. We have here this symbolic representation of the element nickel. We can take that guy, we can ask for its properties. We can take that guy and we can get every property available in a data set. So this takes a second while it downloads everything, say. Right. So what we know about it, we know its boiling point, the bulk modulus. We know that in the Earth's crust the abundance of nickel is only less than 0.01%. Right. What else do we know? That it's a conductor. We know it's electron affinity. We know all of these things about it, we know who discovered it, where and when. Right. We've got, so that's elements. We've also got chemicals, right? So we can grab five random chemicals and we can look at them, Right? Yeah. So we can look at these various chemicals which come from all of the existing external databases that we've, that came before and which we've scraped and kind of curated all the information from. We've also got information on known proteins.
Right.
So we can, we can ask for a random set of protein entities and we can look at what kind of information we have about them. Biological processes, they're based, they're part of what cellular components they're part of. Yeah. So we can, we can find the sequence, the number of amino acids, all of this fun stuff. Also, in addition to the built in data that is within the Wolfram ecosystem, we can easily communicate with external services. Pubchem is one of the biggest Databases of possibly the biggest database of publicly available chemistry information. So we can take a molecule here, S plus 1fmoc3 pyrolidinyl, and we can see what kind of information Pubchem has about that. And here again, this is doing this in real time. It's calling out to them. And so they have a lot of information and it's not exactly rectangular. So we can drill down into any of this stuff. We can see. Yeah, the various information. Lots and lots of information. Not gonna go through all of it, but just want to point out that this is available to anybody who wants to use it. So as a. In addition to the data, we have symbolic chemical objects, right? So from anything, we can make a chemical formula here. This is. Let's see, this is going to be dibenzyl ether, ethylene, dibenzylethylene. And so we can make that. Right, we can make that chemical formula object. Once we have it, we can ask for its properties. And so all the things that you could get just knowing the chemical formula, right here, for example, you can see that this chemical formula has a carbon hydrogen ratio of exactly one to one. So another. I'm going to go off script here and say that you can not only do that, but you can do dibenzyl eth. Is that going to. So it's going to try and parse this as a. As a chemical name. Right? And that was a kind of a dis. An ambiguous name because when you start with ethane and you put two benzene groups on there, you've got some choice as to where you want to put them. And so the name is slightly ambiguous. And so we still give you back that we could come back in and say 1, comma, 2, dibenzyl. Right. And that's less ambiguous. And so we knew exactly where to put the benzyl groups and we made the molecule. And so up here we saw that a chemical formula has various properties that basically depend on just the atoms that are there. Whereas a molecule, we can ask for its properties and we can compute a lot more. We can compute 3D descriptors, atomic properties, properties about the bonds, the mass fraction of the atoms. We can compute the force field energies. Right? You can get geometric properties that depend on the positions of the atoms. We can search out to external databases and get identifiers. So there's a lot to be computed on that. So that was the step from a chemical formula up to a molecule object. Right? So we can also go into biochemistry and talk about create an object to represent An RNA sequence. Again, we can ask for its properties. And so we can, we can find. You can get the helm string of a given biosequence. You can define the mass, the. The sequence, all that stuff. You can take that RNA sequence and transcribe it into a DNA sequence. Wait, right, right. I'm going to do percent 19 here. And now we can translate that into a peptide sequence and then. Yeah, so the. So that's the symbolic representation of a biosequence. So in addition to that, we have chemical reaction, we also have atom, we have bond. So these are all objects to represent chemical. These are all symbolic objects to represent things in chemical space. Right, so that's what's built into the system, like built into the. To the Wolfram language. But we can also look at. We've also placed a lot of additional functionality in our repositories. So we've got a package out there for computing molecule fingerprints and comparing them, which is a really important thing to do when you've got 10,000 molecules and you want to group them, find ones that have particular things in common. We've got a packlet for isomer generation where you can take a chemical formula and then generate every single isomer from it with all the exponential scaling there. There's a packlet released last year for visualizing proteins. While we were working on the Biomolecule Plot 3D, we released some of the in progress stuff there. And let's see, I'm just going to do a demonstration here. We've got this resource function called molecule symmetry, plot 3D. We're going to take a molecule that has actually a fair amount of symmetry, tetramethylammonium. And so we can see here in 3D, we've got various C3 axes. So what the C3 axis is, it's an axis of threefold rotational symmetry. So if you take this guy and rotate it along that axis by 120 degrees, you end up with exactly the same molecule that you started with. We've also got various planes, reflection planes, where if you reflect every atom through that plane of symmetry, you end up with the exact same thing you started with. So there's a whole host of functions in the resource system for dealing with chemistry. So now, new in version 14.1, we have a biomolecule. It's a symbolic representation of the 3D biopolymer. It's got more information than a biosequence. So a biosequence, you just know what type and what the sequence is from that. You also know what amino acids or nucleotides were in there, but you don't know where they are. So a biomolecule always has atoms and it always has coordinates, oftentimes omitting the hydrogen atoms. It doesn't contain explicit bond information like a molecule. So it's got more information than a biosequence, but less information than a molecule object, which is appropriate when you've got thousands and thousands of atoms. The biomolecule traditionally comes from experiments such as X ray diffraction or NMR studies. More recently, they're available from computational predictions like, let's see, we got AlphaFold and ESM fold and then open fold. I think there's a. I think we're starting to see a pattern there in the naming of these software packages. So let's look at a biomolecule. We can create a biomolecule from a local MMCIF or a PDB file, for example. We have some in example data, so we can just go ahead and use that one. Let's see. I don't think that I did it here. So let's take a look at that biomolecule plot. 3D at that. And while we're waiting. So here we have this. The biomolecule plot 3D is a nice way to show the structure of the thing without going into a full atomistic representation. Right. So we show the alpha helices rather than as ribbons, rather than the actual atoms and their bonds. Okay. So as with all of the chemical objects, you can ask it for its properties, Right? And we have quite a few built in. You can, for example, find its space group, and in this case, it returns an entity. So we are now free to ask for the data set about that crystallographic space group, which we have some information here. It's not extensive, but, yeah, it's some good. It tells you something about that space group. We can find information about the composition of that biomolecule, in fact. So in this case, it's got five different chains that are all protein, all peptides. Oftentimes in a biomolecule, you'll end up with ligands or other water molecules, because these things often come from X ray diffraction experiments where when you crystallize something, it crystallizes together with whatever waters were in the solution, or ligands are bound covalently to the polymer. Right. So you can. Now that you have that biomolecule, you can also ask for the biosequences of it. And in this case, the. If you look, there's five mostly identical parts to this, so I'm just going to show the first here. And so, let's see. You can also, if you wanted to, you could create a molecule out of that biomolecule. And so with this. This actually takes some time because it has to. Right. It has to fill out all those hydrogen atoms and figure out who. Who didn't have enough valentine, enough bonds. And so then it puts in the hydrogen atoms, then it figures out all the bonds, and it is. Yeah, so it's a lot more heavyweight of a representation than the biomolecule. The purpose of the biomolecule is so that you don't need to carry around all of this weight. Right. So if I ask for the byte count at the biomolecule and percent 28, you see the full atomistic representation is twice the size. Okay. So we've got other different kinds of constructors. As we said, you can create it from a local file. You can also create a biomolecule from a remote file. In this case, we've got something from the AlphaFold database. And then we can, as always, once you make the thing, you want to visualize it. This takes a second. Right. So in this case, the PDB files that you get from AlphaFold generally don't even have helices and sheets information. So we have to compute that during the plotting, which is why it takes a second. You can create a biomolecule from an external identifier. In this case, from the pdb. In case you're unfamiliar with external identifier, it's been around for a few versions, so it's not strictly new in 14.1, but it's a nice way to symbolically represent some entry in an external database. And in this case, it's the BDB database and the entry is 7rdr. So I can create a biomolecule from that, and then I can, as always, plot it. While we're actually. I seem to remember 7rdr being a heavyweight one. We'll see. Yep, not that heavyweight. It's pretty, though. We'll see that guy again later in the Notebook. Right, so. And then one of the more exciting things that's happened in the past years is the availability of folding a protein sequence from scratch. And so there is a service that allows you to connect to send them a peptide sequence with less than 400amino acids, and they will fold it and send you back the structure. So in this case, I'm going to take the peptide sequence from the previous page And I'm going to fold it. That was actually really fast because they cache the results. And so it didn't really take any time at all. So what I can do here is I can change this and I can come in and just take that string of four A's and pop it in over here. And so now we've got a totally new peptide sequence and it should take a little bit longer here to.
Yep.
So we see we got a dialog box that we're folding it, and now we can look at the newly folded peptide sequence. And that's pretty exciting stuff, I think so. Also new in 14.1 is biomolecule value. It's mainly an accessor for the property information. Right. So you create your biomolecule, then you want to know what are its residue names. And one of the main use cases for biomolecule value is that you want information, but just about this chain, you don't want to have to go in and specify which you don't want to receive all the output. So you say biomolecule goes to, and then an association where we say chain goes to B and it gets the residue names. And then I believe we can do the same thing here for atom coordinates. Right. And so we can get just the coordinates for chain A or chain B. Right. So these are the coordinates for each of the. Of the residues. All right, so we can create. Right, Wait, no, I already had that. So you can find the number of models in the structure. You can find the. By using that same structure, same syntax as before. BM goes to. And then here we specify what part we want. Model number N, residue 3, chain A. And we want the atom coordinate value. So essentially we want the first atom coordinate in residue 3 for each of the models. And then we can do that and you can visualize that using a 3D plot. Next is Biomolecule Plot 3D, also new in 14.1. So obviously we've seen this little flower before, so takes a second. There we go. We could take this. Let's see, we can combine two plots, one showing the ribbon diagram for an alpha helix, the other showing the all atom representation, or the. This is sometimes called the licorice representation. We use the plot theme tubes, where it display. It doesn't display spheres for the atoms, but just tubes for the bonds. And you can see what is meant by that alpha helix, by that ribbon.
Right.
If you look down, you can see that's where the alpha carbons all kind of line up there. You can give different Plot themes for biomolecule. Plot 3D. One of the more popular ones would be the solvent accessible surface or a Gaussian surface. And in this case, I'm giving options to say, get chain A is orange, chain B is purple, and then it doesn't say it, but everything else is left to default. And so that's. And then we can have legend to show the correspondence between the chain coloring and chain labels. Right, so biomolecule contents. What is in a biomolecule? Right, so it's a collection of polymer chains, typically peptide, DNA or rna, together with any associated ligands and nearby molecules. We talked about that already. But it's a hierarchical object, right? So you generally, you have models which contain chains, which contain residues, which contain atoms. Models represent different measurements of the same biomolecule. And so they'll vary in their 3D structure, possibly even the atom counts, because they're different results from the same molecule. The majority of the biomolecules that you'll come across have just one model. And so within any model, you've got chains, and those are the connected components. So any two chains, there's generally not going to be any bonding, any covalent bonding between chains, only within a chain. And then some biomolecules contain information about biological assemblies, which are the functional form of the molecule. And so these can really make things kind of interesting. They'll say, so the asymmetric unit might have one chain, and then the assembly will be five different copies of that chain in different configurations. So we can access all of that in the Wolfram language here. So let's take this biomolecule, that 168L from the PDB, and we can see that it's just got one model, but you can get any of these as complete biomolecule objects. So the models property will return a list of, in this case, just the original biomolecule itself, since it only had one model. Chains will give each of the chains as a new biomolecule in and of itself. Or likewise, the assemblies property will give all the assemblies as biomolecules in and of themselves. This is briefly what we mean by models. So here's a biomolecule with 20 models. Let's see, this one takes a second, but it's pretty neat. If you visual plot all of them and then show them on top of each other, you can see the variation in the. In the layout of the molecule. Right. So these all come from a. It's called an NMR ensemble. Experiment. It's quite a bit of data. So it's a little. It can be a bit sluggish when rotating, but it's. It's showing quite a bit of information. And like I said before, the same with a biomolecule value. You can use the same type of syntax here and say, I want to plot this biomolecule. But only model number three assemblies are also fairly interesting. Right. So this PDB entry, one out or one out, has just half of a hemoglobin molecule in its asymmetric unit. Right. So if we look at it, it's got two peptide chains and the remaining chains are going to be these ligands. But let's see, the biomolecule contains information about one assembly. So we can look at BM assembly data. Right. So it says take chains A through F and apply two different transformation functions to them. The first one is just the identity and then the second is a rotation and translation in space. When you look at that, you end up with something like this. Or you can say, I want to plot just the assembly. And what it's going to do is apply the geometric transformations to the objects so that it's taking advantage of the front end doing half of the work for us. And yeah, that is the end of my presentation. I'm going to head over to the questions here. Right, right. We do not currently have methods for producing, for generating spectra. Right. Uv, visible, infrared. What we need there is to get. To do electronic structure, to get the UV visible. Right. To get the differences between the electronic energy levels, infrared, we'd need to do some. What do you call it, the vibrational analysis. All of those things would be really cool. We need to. Basically, we need to find an electronic structure package and kind of write a link to it so that you can, from your notebook calculate electronic energies and everything. I think the. The upper limit for the number of atoms in a molecule representation is just dependent on your RAM and your patients, I guess. And let's see, it would be. I actually don't know about these, whether it. Whether protein structures are available from different species besides humans. And I also am not very aware of repetition analysis. So I'm going to copy that into our to do list about things that we want to look at in the future. Right. Are there representations other than ribbons available? Right, so we've got. I mean, let's see. We can do bio, biomolecule, plot 3D BM and then plot theme goes to. Right. So we can do ribbons. We can do just the backbone. Let's look at that. But then also various surfaces at that point, Gaussian surface solve an accessible surface or the van der Waals. Right. And so these surfaces, these representations, try and give like a more globular take on the. On the molecule. Excellent. Congratulations on meeting the Nobel Prize winner. See. So with that I think that I'm ready to hand the presentation over.
Okay, thank you. Let me share again. Okay, for those of you who were not an hour ago in my brief presentation. So I'm Jose Martin Garcia, manager of special groups in Research and Development department. And one of the things we do, apart from others like astronomy, is also geography. So today I'm going to be talking about how historical geography has become computable with Wolfram language. So let me turn off my camera to avoid bandwidth issues. The first thing I have to say is that this is functionality developed by my colleagues Cesar Lolly and Francisco Rodriguez Arias in the lima team of BorframAlpha. But it will be me describing them. They are here in case there are questions that have to be answered by the actual developers. Okay, so let's go. So the main geographical computation in Wolfram language was added in version 10 now a decade ago. And since then Wolfram Alpha has increased even more the enormous amount of data they have, geodata in particular. And by now we have also quite a lot of historical data associated to our geo entities. So therefore, In Borfram language 14.1, we introduced for the first time the ability to perform simultaneously with our GEO functionality, both geographical and historical computation. And we have done this by upgrading the existing functionality. So there is no new function to do this. But many of our existing GEO functions are now able to do historical computation. And so the plan of the talk is the following. I'm going to show four or five of these functions and see how they do geocomputation. Sorry, how they do geo computation first and then how we can use them to do both geo and historical computation. So you see that the scheme is the same in all four sections. Okay, so let's start with Geo identify. So geo identify is a function such that you give a location and a domain of entities, and it will identify which country in this case contains the city of Chicago. Now, notice that the answer doesn't have to be unique. For example, we have a domain called geographic region. And so if we ask which geographic regions contain Chicago, we get several of them. The answer of geo identify is always a list. It can be an empty list. For example, we have this location which is in the middle of The Atlantic. And so if we ask which country contains that location, we get an empty list. Okay, so now let's see how geo identify has been extended to do geo and historical computation. For example, what are historical countries that contained the city of Chicago? And here we have now different answers. So we have a notion of the current, the modern United States. And you see that we give dates, dates of existence of these historical countries. It doesn't mean that during the whole period Chicago was inside. It means that this entity at some point, perhaps many years, contained the city of Chicago. So let's do some examples. For example, let's take the city of Paris. So in this case we only have these three. And but for, for the city of Paris we have lots of data, starting with the Roman Republic many years ago. So now the first thing we have to notice is that some of these entities are repeated. So for example, if we call tally, which will count how many times each entity appears and reversed by the last number, we see that the kingdom Francs, for example, appears a time, Neustria appears five times, etc. So why is this? The thing is that there was alternation of power. And so to resolve that we have this other notation. What we do is that rather than saying historical country as the domain, we ask that the results are dated. And by saying all, we mean we don't care about the period. We will see later how to change that. So now we see that the Roman Republic had parties between years 57 B.C. and 28 B.C. and then the Roman Republic changed to a Roman Empire which is a different historical entity in the year 27. So we have to change this and again and again, right? And so for example, here we see the kingdom francs appear, but then it appeared again and then it appeared again here, etc. Right? So you see the alternation of power. And here you have the information of the periods of corresponding to each of the historical entities. So we can graphically see that alternation with this function. And so each of these colors corresponds to a different entity. So here we have the Roman Empire, here we have the kingdom of France. I think this is the kingdom Franks. And so you see how they, they change, right? They change from one another, then these, then the other, etc. Right, so I'm, I guess we have the same issue with, with you don't see in the, the cursor, but I'm highlighting the various different entities. So now with this input, what we do is to say that we are only interested in the period between years 500 A.D. and 1000 A.D. and so you see that the entities are now restricted. And so we start with the first one starting with the year 500 and the last one will end with year 1000 if we represent that with the same period. Again, what we see is that we get some sort of sub diagram of the previous one only from year 500 here on the left to year 1000 on the right. Okay, now one difference that may be interesting for actual computations is that we can restrict the left hand side the domain argument and then we see we get dated results. Or we can do the same operation but restricting now the right hand side argument. So what we get the second argument. So what we get is the same results but now without the dated information. So we will see that several times during the talk that in order to get dated results we have to date the domain, not the actual location we are referring to. And of course we can date both. And then we will get an intersection of restrictions. So we are saying we want results with dated wrapper between year 300 and 700 and then parties from 500 to 1000. So the intersection is going to be from year 500 to year 700. And so those are the results we get because we have dated around the domain, we get the information of the date intervals. Okay, so that's an example with the city of Paris. And now I'm going to do a similar one with London. So this is one that Steven used in his blog about 14.1 very recently. So we do again the same thing. We get the historical entities that contained London at some point in its history. And we now do the very same computation, but with dated results. And so get the actual information of the intervals that contained of time when London was contained in those entities. We do the same thing. We change the dated arguments into rules. And these will make timeline plot to produce named results. We use a vertical layout and so we can easily read the history of London from the Roman Empire all the way down to the modern times. We can do computations with these results. For example, imagine that we want to find the two longest periods of London. So what we do is to say, well, we have these periods, so we have to compare the durations of these intervals. So what we do is that we extract the second argument, the last argument of those dated expressions, compute their duration, and then we say give me the two largest of those periods. So we do that and we get this. So these were the two longest duration periods of London. Okay, so that was geo identify, which identifies larger entities. So we have geo Entities with which does the opposite. You give an entity and you find entities of a domain contained in the original entity. For example, this will give buildings in the city of Chicago and we get many, right? So now what we are going to do is to use geographics to produce a map in which those locations are marked with a, with an icon that we have specific for buildings. And it's going to be a map centered around Millennium Park, a big park in the Loop in Chicago. It's going to have a range of 1km and the background is going to be a satellite. So that's a park, learning park. And here we see a building icon placed at the location of each of those entities that we obtained originally. So, so that's GEO entities performing GEO computation only. So again, now let's look at examples of GEO entities performing geo and historical computation. For example, again you see we have what are the historical countries in the, at the time of, of United Kingdoms, year 800. And so we get that notice again that because we are adding data around the entity, not around the domain, we don't get the dated results. So we add a list around each of these entities. This is to produce different sets that geolist plot will interpret as independent and therefore assign different colors to them. And so here we see the, the seven entities of the Heptarchy at that time, year eight. Okay, let's do something similar for modern Italy. And now you see, I'm placing dated around the entity domain. So we get results with dated. Now of course, because these correspond to a single year, the information here is not very useful. But again, wrapping dated around an identity domain will give dated results. And we can do something similar. We add a list around each of those results and we produce a map corresponding to modern Italy. And with a GEO background you see that corresponds to the country borders at that time, year 1500. And so you see some borders and the background corresponds also with the domains, the, the historical entities of the, of those times. Okay, let's look at two more functions, simple ones this time geodistance and geo area. So we have been using geodistance since the very beginning to compute distances between two entities. This is when these entities are extended. What we do is to compute the minimum distance between the boundaries of those two entities. And we can also compute areas. Now when it comes to areas, it's very important to be aware of which variant of the country we are using. For example, when we refer to United States, currently that doesn't include Alaska, Hawaii or other territories of the U.S. however, if we use the geovariant all areas, then the this means the whole country, including all those territories. And you see how the area is much larger. So we are going to see then how to use the ovarian also with historical computations. Okay, so let's take for example two historical entities, the Roman Empire and the Hannah dynasty empire in China. So we do this and we get this result. This means that this was the minimum distance between the boundaries of those two historical entities. @ some point in time both were moving their boundaries, but at some point in time they approach each other this distance, they were never closer than this. Right. So this, this is something that happened at some moment in time. So what we are going to do now is that we compute this distance in intervals of 10 years. And I have this here the result. So what we see is various moments. So this is the minimum distance. And also we see here two moments in which this fails. This is because it happens that the Han dynasty was replaced by another dynasty between years 9 and 23 A.D. and so these two are returned unevaluated because there is no good result. If we plot those values, we get the result in which we see the change in distances between the two empires and the minimum around this time. Okay, so that's for geodistances. And now geo area. And again this is the area of modern Italy. We are going to compare that with the area of the Roman Empire. So what we do is to reproduce a table of the Roman Empire dated as years from -27 to 395, year by year. And then we evaluate the geo area and plot it and notice that it's divided by Italy. Right. So this is a quotient of the area of the Roman Empire divided by the area of Italy. And we see how it started here at the beginning of the Roman Empire around 12 it grew, this is the peak, the time of Trajan. And then it went down to around nine during the times of the Gallic Empire. And then it went up again. So this is a map of, of the Roman Empire around the maximum, right. When, when Trajan was able to conquer up to this point. And then it quickly went back. And at some point in the year 263 we see when the Roman, sorry, the Gallic Empire rebelled and separated for a few years from the Roman Empire. And so this was the minimum extent. Something we can do using geovariant is to extract a time series of all the polygons of the Roman Empire. You can see that this is a new interpretation of the Roman Empire. Rather than seeing it as a moment in time, what we do is to compute it as a spatial temporal entity, if you want. And so we get a time series in time of polygons in space. So this contains 64 points. And then we can produce a video that shows how the size of the Roman Empire changed over time. Right. And so it takes about 20 seconds, you see here. And you saw how very quickly, at some point, this part disappeared from the Roman Empire. Again, this is an example also taken from Steven's blog. Okay, next function, actually the last one is geonearest. Geonearest finds nearest entities of a given type. So for example, what are the four countries closest to the uk? And so we get those ones. Notice that the UK is included in the list. So if we compare. Sorry, if we compute the distances between those four countries and the uk, we get that the two first ones are of course the distance between UK and itself is zero. And then there are parts of the UK that are neighboring to Ireland. So the distance is also zero. But then other entities, other country entities are farther away. Right? And so we can get those distances this way. So that's the geo computation. Now again, let's look at geohistorical computation. So for example, what are the four historical countries that across all times were closer to the Persian Empire? And so we get these four. And again, as before, you see, it's the same syntax. We can just compute distances from those empires to the person empire. And we see that at some point in time they didn't have to be all at the same time. At some point in time, each of those was a neighbor of the person empire. Now how do we specify a year? Well, we follow the same trick as before. Remember the difference between having dated here or dated around the domain or dated around the entity. In this case, we have in this example the date around the entity, because we are specifying a year, so we know what the year will be if it was around the historical country. And so here we have again the Egyptian empire and other results. And these were the closest four historical entities to the Persian Empire in year 330 BC. So if we compute the distances, we get some non zero values, right? So these were not neighbors. For example, compare the Egyptian empire, it was a neighbor of the impersonal empire at some point, but not in year 330 BC. At that point it was about 753 months away. Okay, and we have seen many examples with a, with historical countries, but we also have examples with another domain, which is military conflicts. And actually I think I may have mixed some examples before we can go back if there is time. So let's find the five closest military conflicts again across all times to the place I am, which is champagne. So we now do a geographics map and what we do is that we have a geomarker at each of those locations. Each of these locations here we can also use timeline plot to see when those five conflicts happen. And we see here the years. Yes, and as. As I was saying, I think I had. Let me go back here for a moment. Geo areas, historical countries. Yes, here. Sorry, I forgot to mention this. So in the function geo entities we can find also military conflicts. And here's a map of locations. So these are conflicts between years -200 and 200. And we can also find locations say in the Atlantic Ocean during the second World War. Or for example, this is a map of conflicts that happened at some point during the history of Carthage. Notice another geovariant, which is the polygon corresponding to the union of all the polygons of Carthage during its history. So you see that all these areas belong to Carthage at some point. Not all of them simultaneously, but all together. That's what the union area Giovanni means. And here are the last examples which corresponds to battles in the Austro Hungarian Empire during the First World War. And they have a property called the parent conflict. So these battles are grouped into phases of this first World War. And so we can use again our key plotting function, timeline plot to see the individual battles together with you see how they are grouped in three colors. This part here, this part here, all the battles around the river Isonso and then this final phase here in green. Okay, so let me have quickly look at the questions. Historical data for Poland is incomplete. For example for Warsaw. I do not. Yeah, so it's a major, major curation effort to get all the historical entity data for all the historical entities. So we're trying to do our best and of course we invite all of you to report any issue that you may find in our data. Are there geofunctions that you recommend for use for historical tourism? Interesting. Well, I would say that this would be a mixture of first using all the functionality that we have been using today to find the areas you are interested in. And then we have travel directions which can help you plan a route between all those locations. For example, driving as least as possible. Jose? Yes, Also we have this entity type historical site that can be a complement for historical tours if needed. Yep, very good. So let's see, can I do random entity or yeah, or your nearest historical site here, for example. I see. But let's have a look at. Oh, sorry, I have to change this. Historical site. Here it is. So if I do your nearest historical site here. I know five. Five of. Very interesting. Yeah. So if you're visiting a city, maybe you can use this to get what's around. Yeah, exactly. Yep. Very good. What? The dates to indicate the duration of the Nazi regime, not the time it ruled parties. Okay, let's have a look at that. Jose. That was part of another question that was already answered by Cesar. So the answer is actually the fact that we show in the historical countries, we show in parentheses all the time they were ruling. They were available, but not the time they were ruling. So I see. I see. Exactly. So, yeah, so this is the time that the entity existed, not the time that it contained parties, for example. Yeah. For that you would have to use this other notation to get those periods here. Is it possible to compute and visualize watersheds? Well, this is not historical information. We have information about rivers, but as far as I know, we don't yet have information about the watersheds corresponding to each of them. Is that correct, Francisco? Yeah, I don't think we have added them.
Yet. Interesting suggestion though. Thank.
You. Yeah.
Absolutely. This has been a great collaborative effort. Appreciate Francisco and Cesar and Jeff assisting here with their expertise. A lot of good questions answered. I'll go ahead and take that share away from you, Jose, unless there was anything else you wanted to close.
With. No, I think that was all. Yeah, I stop.
Sharing. Thank you. So thanks everybody. Thank you to our presenters and to Jose and to Jason and everyone behind the scenes. There will be a short survey that shows up in your browser as you exit and that includes a request for a certificate of attendance from today's event, if you'd like that. So we appreciate that very much. And just a reminder, taking a look on this Wolfmu page, our upcoming event. Here is our webinar. In one week, new and powerful components for AI and LLMs. We'll have more Wolfram experts joining us us to contribute to that conversation and sharing the latest features. We have a lot of events on Wolfram you and a lot of great content here. So please check it out and we look forward to seeing you soon. Thanks everybody. Bye for now.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






