Hey folks, I'm Pat Schloss and this is Code Club. In recent episodes, we've been looking at different strategies for depicting the relative abundance of various microbial populations in different disease status groups from data that was in a paper that I published a number of years ago. I don't quite remember when. Anyway, we've been using these data to look at things like stacked bar charts, pie charts, heat maps. Well, I want to go back to those stacked bar charts because two of the critiques that I had of stacked bar charts is that you can't see the variation in the data for those individual taxa. Again, this is a problem with all of these approaches that we've looked at so far. The other problem is that you don't have a good sense of the number of observations that are being aggregated together if you're depicting the average in a stacked bar. Again, it's a common problem also for what we saw with the pie charts as well as the heat maps. So in today's episode, we are going to take on those two critiques and see if that gets us any closer to being fans of stacked bar charts. To do that, we're going to use geom call from ggplot2 as well as facet wrap and facet grid from ggplot2 so that we can see different panels for each of our disease status groups with individual subjects arrayed across the x-axis and the relative abundance on the y-axis. I strongly encourage you to follow along with me today so you can get the most out of this material. I don't think I'm that entertaining that you just want to watch me code. I think you want to engage the material yourself. So if you want the code that I'm starting with down below in the description is a link to a blog post that's associated with today's video where you can get the code that I'm starting with. Also across the top here is a link to a video where I show how you can install our studio, get the data, install the tidyverse and I think that's about it. Also, if you like this type of material, be sure to check out the link down below where you'll see information on some workshops that I teach that use tutorial materials that are at the riffamonus.org website called general r and minimal r. The minimal r uses microbial ecology data like this, whereas the general r deals with data that are not microbial. And know that I use those materials as the basis for three-day workshops and I have a number of those coming up over the course of the summer and would love to have you join me. Digging into this r script that I have, you'll see that we are loading a variety of libraries from the tidyverse to get all that great functionality available to us. We're reading in metadata information about the sample idea or the subject, as well as their disease status. These are data that are coming from a C. difficile study. So if you haven't already, you'll hear me talk about diarrhea way too much. Anyway, we then read in our O2U count so we know how many times we see each taxa in each sample. We know the taxonomy from the taxonomy file. And then we join all that together. And then finally, we do some styling to get data only at the phylum level, something we've seen in previous episodes. If we look at two finest scale sake of a genus level, then there's just too many little tiles in our stacked bar chart to make it decipherable. So we'll go about looking at the phylum level, aggregating to get the mean relative abundance, and then we do some styling to insert markdown so that when we use element markdown in our theme, we'll get that nice actualization. Next, we go ahead and we pool our data that comes from Fila, where the highest abundance or average abundance for each of the disease status groups is less than 3%. This is useful, again, for getting rid of kind of the shrapnel Fila, if you will, Fila that have facets that would just be way too thin to actually be able to see and just kind of adds to the number of colors in our color palette, making it harder to distinguish between different taxa. So this will give us four Fila, as well as an other category, and that's pretty manageable for us to decipher between those five different categories. Finally, we join this all together, and we then build out the stacked bar chart. Let me go ahead and build this so we know that it works. Got our old friend, our stacked bar chart, each of these three columns represents the average relative abundance of the Fila across the individuals who are healthy, those who have diarrhea but are C-deficial negative, and those who have diarrhea but are C-deficial positive. Again, we are masking the total number of individuals in each of these three columns, as well as the amount of variation in the relative abundance of each of these Fila. The first thing that I'm going to do as we kind of march towards making separate panels for each of the three disease status groups is to go ahead and refashion this so that across the x-axis we put our various subjects that are in the study. We'll come back later and then separate that back out again by disease status. Coming back to our code, we want to remove that aggregation step where we aggregated within each of the three disease status groups. So we'll go ahead for now and turn off the scale x discrete. I'm going to comment it out because we'll probably want some of that code later. I'm going to come all the way back up here and let's look at taxon relabund to see what that looks like. So we've got our disease status, our taxon, and the mean relative abundance. So here is where we are losing our sample ID. I will go ahead back up here and kind of step through this. So I see that we've got sample ID here as a group by variable that we then calculate the total relative abundance for all the otus, all the individual tax that are part of a phylum. Let's go ahead and run this and see what the output is giving us. And so we see that we have the disease status, the sample ID, the taxon, and the relative abundance. This next step is where we aggregated by disease status and taxon, and then we got the mean relative abundance across all those. So I'm going to remove these two lines and put my hundred times up here to get my percent relative abundance. And so now if I look at taxon relabund, I now see that I've got my disease status, my sample ID, my phyla, and the relative abundance. Turning now to the pool step, let's go ahead and run this to see what kind of output we get. And it's complaining input pool mean relabund not found. And that's because we defined relabund above instead of the mean relabund, because again, we're looking at the individual level in taxon relabund. So we'll look at this and we see now that we've got our phyla, the taxon column, pool, whether or not things should be pooled, and then the mean. And what we're finding is that something like tinobacteria, where the mean is quite less than 3%, 0.659% is not going to get pooled. And again, that's because it is saying, do any of the samples have a relative abundance of a tinobacteria greater than 3% rather than do any of the disease status groups have an average greater than 3%. So let's come back up here. And again, we'll look at taxon relabund, where we've got our disease status or sample ID of taxon and relative abundance, we can then group by our tax on but also our disease stat tax on. And I'm going to hold on to that summarize statement for a moment. And we'll do summarize. And I will do mean equals mean on relabund. And if we run those lines, we now see that we've got our disease status, our tax on and our mean. See that we see there's 39 total rows. And that's because there's 13 phyla and three disease status groups. So that's good. I'll go ahead and add dot groups equals drop. We can then group this by tax on to get the relative abundance across all samples within each of the three disease status groups. So we will then summarize pool equals max of mean not relabund. So again, if the maximum mean value within each of the three disease status groups is less than 3%, then we're going to pool that phylum with all the other file that are pretty rare. And then the mean is going to be the mean of the mean, we'll use mean to determine the order of the tiles in our stacked bar plot. And so we'll do that based on the average across all three disease status groups. Again, looking at tax on pool, we see that we have our taxa, whether or not they're going to be pooled, and then the average relative abundance across the three disease status groups. And then we've got 13 phyla there. So that checks out with what we've seen in previous episodes. So again, we'll load tax on pool, we'll then bring that into our inner join where we're going to join our tax on relevant at the individual level with the information about whether or not to pool, and the order of the different taxa in our in our stacked bars, we're going to join that by the tax on, we'll then mutate that so that if if it says pool, then we're going to rename it other. Otherwise, we're going to use the actual name that we defined up above. We're going to group by disease stat and tax on, we actually also want to group by sample ID, so that we're keeping things at an individual level. What we're doing in this group by actually is that we're grouping to aggregate together those new taxa that were re labeled as other, and that we need to aggregate those together. And so we'll call that relevant, and we're going to sum the relative relevant column for those, those rows or those phyla that were too rare. And then we're going to retain our mean column by reporting back the mean and that should be the same, I think across those three disease status groups. And again, if we look at this output, we can see that we've got our sample ID disease status, the taxa, the relative abundance, and then the mean, again, for the phylum across all three disease status groups in this next mutate chunk, chunk, we can then set the order of the phyla according to that mean column. And we do this fct shift, so that we've got our fremicides at the bottom and the bactroid eddies at the top. Again, that doesn't really change much in the output. But we can now feed this into ggplot. And instead of on the x axis putting disease stat, we're going to put sample ID, y is going to be the the relevant, not mean relevant, we change the name. And we're going to use geom call. And we're going to use all our other colors. I'm just kind of quickly look through here and make sure everything looks good. So we'll go ahead and run this. And voila, we have all of our samples across the x axis, each individual is a separate column, it's impossible to see here. So what we want to do now is kind of pull this apart into the different disease statuses. Before we move on to that, though, I want to clean up this x axis, you can't see it down here because there's like 350 sample IDs, but there's 350 sample IDs smushed together here, as well as 350 or so tick marks. So let's go ahead and turn those off, we can modify the axis back up here and axis text x, instead of element markdown, I'll do element blank. And that means don't show anything on the x axis. And then we'll do also axis dot tick, ticks dot x, I'll do element blank as well. Yeah, so now we have that clean x axis edge, we don't have all those sample IDs. Another thing that you can kind of see in here are random striations in the, in the columns. If you were to zoom really far in, you would notice that there's actually space between each of the columns in our stacked bar plot, we saw that earlier in the one where we only had three, right, there was natural spacing in there. And that's what we're seeing in these random vertical white lines. I can turn that off by coming back here up here to GM call and do width equals one. So now we got rid of those vertical white lines, things look a lot better, although they kind of still look crummy. We've got our sample IDs arrayed across the x axis, but I'd like to pull things apart by disease status. We can do that by adding facet wrap. And so I'll do facet wrap tilde disease stat, and row equals one. So this will make one row with separate facets for each of the three disease status groups. Try add my plus sign there. And now what we've got is we've got three facets, but the x axis for each of the three facets is the same, right? It goes from, you know, subject one to subject 350 for each of the three facets, I can turn that off. However, back up here in facet wrap by doing scale equals free underscore x. And so what that means is let the x axis be free to only include the data or the range of the data that's needed to represent the data. Now what we see is that we have three facets, we don't have extra white space in the three facets because we've we use that scale equals free x argument. Something I do notice, however, is that I'm pretty confident that I have a lot more subjects in this non diureal control healthy disease status group than I do in either of the diureal control or cases. What facet wrap is doing is it is showing the facets as the same width. I can change that by using facet grid. And using an argument from facet grid. So we'll turn off and row because facet grid doesn't use and row, because by default facet grid put something in the columns and something else in the row. So here we're putting disease status in columns, but we don't we only have one row. So we don't need that. And then we can also do space equals free. What this does is it allows each of the facets to be proportional to the number of samples or the you know, the range of the x axis in each of the three facets. And sure enough, we now see that our nine diureal control is about the same width as the diureal control in cases together. And so we can now see that we have more dot non diureal control samples than we do in the other. So we've kind of taken care of that n issue that I was worried about earlier. Something else I'd like to do is clean up the order of my subjects. They're not random here, but they're in order of their subject ID, which is basically random. What I'd like to do is let's sort them by the relative abundance of the formicities. To do that, we'll come back up to the top here and create a new data frame that we will build, where we show the order of each sample, each subject by the amount of formicities that they have.  So remember, we put stars around the filenames so we can get that italization in the legend with element markdown. And what we see then is that we've got our disease status or sample ID, tax on and relabund. I now want to arrange this data frame by relabund. And I'm going to do a descending sort. So DESC on relabund. And so now what we've got is our samples, sample IDs, our taxa and the relative abundance, as well as their disease status, which I don't really care about. Next, I'm going to mutate to add a column to indicate the order. And so we'll do one colon n row. And then in parentheses the periods that n row period will say go from one to 350 or however or 338, the number of rows in the data frame. So now we'll get a column that has the order that we want from one to 338. So I'll call the sample order. And I will also clean this up a little bit because all I need out of this is the sample ID and the order. I need to select. So sample order again has our sample ID and the order were in good shape. Okay, let's go ahead then and we're going to do another join to bring that data in. I'll do that down here. After we've already pulled together all our file, so I'll do inner join period sample order by equals sample ID. And then we see that we've got our sample, our disease status taxa relative abundance mean and the order. So that's all good. We then need to modify that to make it a factor that we then order by the order column. And we can then do mutate sample ID to be a factor on sample ID. Okay, and we can then do sample ID, FCT reorder on sample ID by order. And that'll be good. And then pipe that into ggplot and everything else should work. Excellent. Now we have our individual facets. The samples within each of those is ordered and decreasing order of abundance by the relative abundance of the formicities, showing you the amount of variation that we have here. Does this look good? We'll come back to that in a moment. The last thing I want to do with this figure is to bring these panels down to the bottom and make them x axis labels. To do that, I'm going to come back up to facet grid and do switch equals x and quotes. And that means switch the position of the x axis facet label. So the columns, right. And so now we see we have our facet titles across the x axis on the bottom. In our theming, I'm going to do strip dot background element blank. This gets rid of the border that we had around our facet. But one thing you might wonder like why are these underlined? Those aren't underlines. That's actually the x axis. And so what we have is we have the facet labels on the inside of the plot. We need to change the position to be the outside of the plot. We can change that placement or position with strip dot placement equals outside. And now we've got our label on the outside below kind of looking like an x axis label looking pretty nice. And what we now need to do is clean up and make our labels look pretty. And I'm going to come back up here and make a vector that I'll call pretty so that we can use that with our label or function that we saw in a previous episode. And I had code down here that I commented out. So I'm going to grab this and bring that back up to pretty. Because I'm going to kind of recycle some text here. And we've got all this. And we're going to create a named vector. And so non-diarrheal control will equal healthy. Diarrheal control will equal diarheal, diarrhea, cdiff negative. And then case will equal diarheal, cdiff positive. All right. And clean up our code a little bit here. Make sure that pretty is loaded. And then down here in facet grid, we need an argument that we'll call labeler equals function labeler. And then we'll say disease stat equals pretty. And we now have our labels in but we now need to format our label and we can format our label by doing strip dot text dot x equals element markdown. And voila, we have our nice pretty labels across the x axis. I think this looks pretty nice. I mean, about as nice as we're going to get it, I think we do now have our individuals for each of the three disease status groups kind of indicating the end. There's a lot here. And you can kind of tell there's a lot there because the individual columns, the individual stack bars are pretty narrow. And we now see, again, because of the relative proportions that there's about twice as many healthy subjects as there are for these two diarheal groups, we can also get a sense of the variation in the data. Now, again, challenge with this depiction of the data is that I can really only mentally gauge to phyla here. I can't really get a sense of the proteobacteria. And frankly, I really can't get a sense of the bacteria deadies in these two diarheal groups, because, you know, there's some that have lots of proteos, and some that have lots of bacteria deadies to counterbalance what's in here for the formicities. That's a challenge, right? If we were to go down to like the genus level would be even worse, because it'd be far more wedges, or far more tiles per stack here, and it would just get a lot more complicated. Also, you're kind of asking your audience to do a lot of interpolation across all the data. And I don't know how well I can do that. I can see there's a lot more variation, I think consistent variation in formicities among people that have diarrhea than there is perhaps among people that are healthy. Sure, there's some people that have a lot more than, you know, more than 50%. But that's only, you know, maybe 10%, 5% of all the healthy subjects. Whereas, you know, perhaps half the people with diarrhea have more than 50% formicities. So, I think we have gained something in terms of the depiction of the number of subjects, as well as the variation. But, you know, what more can we say than kind of an individual phylum level, you know, basically formicities? I don't know, right? We're kind of stuck here. I think we've gotten a lot out of this, we've learned hopefully a little bit about how we can use facet wrap and facet grid to make a pseudo x axis label, if you will, and to kind of create three different chunks of three different facets of these stacked bars, where we can we can represent the individual subjects. So I'm happy with this how this looks. I'm not really happy about the visual itself. It wouldn't be my preference. But we're getting there, we're getting there, I will show you in the next episode, how we are stepping episode by episode to what I consider to be the best approach. We also need to remind ourselves frequently that there is no one perfect way to visualize data. There are constraints that are placed on us, right? The type of data we have, the quality of data we have, what our boss wants, what our audience wants, those are all constraints that will impact what you do, right? That my choice sometimes doesn't matter, right? The other thing to keep in mind is that the question varies, right? And that there might be questions where a faceted stacked bar chart like this could be what you need to display the data. And perhaps you only have two filers. Well, this would be perfect for that then, right? That could that could be really nice. I don't know if it'd be perfect, but it would be great, right? So again, we've got to keep all these different factors in mind, as we're evaluating critiquing different visuals. And so thinking about the question of, you know, how does phylum level diversity vary across these three disease status groups? This doesn't help me very much, right? I can do it at the fermicities level, but not really at Bacteri Dettis or the Proteobacteria so well. I really hope you enjoyed this and got something out of this. Even if you don't like the actual visual, I think you can learn a lot, right? About faceting, about factoring, about labeling. Again, we've seen this several times now in different contexts, these different kind of muscle flexes, if you will. And so hopefully you're learning that and getting more experienced with things like factors, factor reorder, factor shift, all these different things we can do to change the order of things as well as how we can use and navigate between facet wrap and facet grid to get different types of effects. Anyway, I'll leave it there. Please tell your friends what we're doing here in Code Club. Also, do check out those workshop materials that I have listed down in the description. I'd love to have you check them out. You're free to go through them on your own. People also get a lot out of coming to the virtual workshops that I do via Zoom. Hopefully my banter is a lot like this. And we do have fun with those and people tell me they get a lot out of them. Anyway, definitely check those out and we'll see you next time for another episode of Code Club.


and Indo-Pacific security, really important stuff with some very important people. Susie Vera Slums, she's the president of the East West Center, that is fantastic. We know her from many shows here at Think Tech in the past. And Bob Riley, who is the Chief Operating Officer of the East West Center. But I need some more for an introduction to Susanie, Bob. Can you please introduce her a little bit? I would be happy to. Susan Vera Slum is now the president of East West Center as of January 1st of this year. So it's been about six months, just over six months. Prior to her service at the East West Center, she was a major general in the Army and worked extensively at Indo-Pacific. And in fact, I met her at Indo-Pacific when I was the ambassador to the FSM and has traveled extensively throughout the region and has a lot of knowledge about many of the issues in the Indo-Pacific region. And I'm sure she will be telling you much about that. Thank you. And Susie, just so we know who Bob Riley is, could you give him a brief introduction to tell us his background as a COO, Chief Operating Officer of the East West Center? Well, thanks, Jay. I appreciate being on your show again. And I'm very happy to introduce our Chief Operating Officer, Ambassador, former ambassador to the FSM, Bob Riley. And we are very fortunate to have him. He has an extensive background in the Peace Corps over a decade in the Peace Corps, as well as the Foreign Service in a variety of roles, including key management, as well as ultimately becoming an ambassador in the Pacific where all eyes are on the Pacific. He also has extensive experience in Africa as well and in the Philippines. So worldwide, you could say, and also at the main state in Washington, DC. So we're very pleased to have him here as our Chief Operating Officer. What a great team. Oh, exciting. So let's talk about the East West Center. How do you see it these days? You've been there for a couple of months now, and what's it look like to you, Susie? You know, it's a place of an incredible legacy. Just in May of this year, it was 62 years since the establishment of the East West Center when President Eisenhower signed the authorization for the establishment after a lot of work by then-Senator Lyndon Johnson in 1959 and then carried on by our own Senator, Daniel K. Enoy and Sparky Matsunaga, as well as many other congressional leaders who realized that we needed a place coming out of the ashes of World War II, that we could promote those better relations among people and nations of the United States, Asia and the Pacific through cooperative study, research and dialogue. So I want to continue this legacy by building on the amazing 68,000 alumni who are worldwide at 53 locations, doing incredible things, whether they've been heads of state, ambassadors, chief, entrepreneurs, as well as community leaders that have come out of this program from the 60s, 70s, 80s, 90s and 2000. So we are embarking on a strategic plan right now that should be out, our foundational plan at the middle of this month, actually, to look at where we want to go for the next 10 years. Wow, fabulous. And it also has a tremendous connection with Hawaii going back to the quote friends of the East West Center. My wife spent many, many happy hours with people in the center in many years ago, but as part of that organization, and that represents the connection between the East West Center and Hawaii. That's absolutely right. In fact, as they were considering with Governor Burns back then in 1960s where to have it, it was clear that Hawaii should be that place, being that we're in the middle of the Pacific, we have our hosts, Kanaka Maoli, native Hawaiian community and values that can be a connector of the East and West, and we have the multicultural nature of Hawaii. So it made sense that Hawaii would be the place. And we're happy to say we have a Washington D.C. office now that connects us to the rest of the United States. So it's fantastic. And I'm grateful for your wife and the many others who have helped many generations of East West Center fellows and participants coming through here as sponsors and supporters. Tremendous. I'm getting this patriotic feeling. That always happens right around July 4th. So Bob Riley, can you talk about the conference that was only, what, a week ago at the East West Center? This was a very important conference and Maria Reisa appeared. It was from media journalists and graduates of the East West Center. That's really an enormous event. Can you talk about it? It was a tremendous event. And it was our first in-person conferences in Hawaii since before COVID and since early 2020. And it's like that intervening period never happened. Our folks did a tremendous job. It was an amazing, both conferences were amazing, just incredibly well realized. And it was a major achievement. They worked very, very hard and with a limited staff at that. And really brought off an amazing conference. As you said, Maria Reisa was there, but many other notable and distinguished journalists were there as well. And James Stewart from, I'm sorry, James Stewart. Anyway, there was a very important VOA journalist who was there as many other journalists were there. And it was, they had much to say and it was extremely valuable, I think, to all who attended. And I certainly came out learning a lot. And then the alumni conference was very inspiring. You know, as Suzy mentioned, there are some almost 70,000 alumni of the East West Center. And many of them came to the alumni conference. And it was inspiring to hear what they had to say about the East West Center. So all in all, it was a tremendous thing. Hey, can I butt in a little bit? Of course. I wanted to expound on what Ambassador Riley said is, you know, we had journalists over 300 in person and many more online that came from 35 countries. And these are not just beginning journalists. Many of them are editors or bureau chiefs. So like the US bureau chief for straight times, Nirmal Ghosh, who, you know, he's based in Washington, DC, but came out here or Kitty Pilgrim, also East West Center alum, CNN, Lou Dobbs, you know, evening report for 25 years and authored. Those are just samplings of some of the amazing journalists who were here. In addition to Maria Resta, we had a representation from Metta. So, you know, having journalists who were here who said, who were alumni and said, you know, before we used to be able to control the content and distribution, now we're relying on virtual platforms like Facebook who have a responsibility to ensure that it's distributed in the right way. But I apologize, I just needed to share that bit of information. No, no, no. I want to pursue that a little bit though. You mentioned early that, you know, part of the role of the East West Center is to bring the East and the West together. No surprise, just listening to the name of the center. And part of that is to get the word out. To get the word out to the East, to get the word out to the West. I have conferences just like the one that Bob described last week. And so my question to you is how do you do that? How do you bring the East and the West together? How do you get the word out through the media and otherwise in order to send the right message to both sides? Well, Jay, you know, I want to share first of all, what we're trying to do is share our vision is that the East West Center over the next 10 years and beyond in collaboration with many, many partners because to do this, as Bob mentioned, required many partners, whether it's Congress, state, other countries, other like institutions around the world. We want to be a premier institution or catalyst in the Indo-Pacific for convening, developing and equipping a network of leaders to solve those challenges of common concern, whether it's the environment or governance or the challenges in economy. And we believe that we can do this by number one, being that place that equips and develops those leaders from the United States, Asia and the Pacific, bringing them together. That's what's unique. That's what's different than a Fulbright scholar. That's what's different than a university. We are intentionally bringing them together in this building that was built by I.M. Pei, which is the Hale Manoa here, designed specifically to create inclusion. The second thing is that we want to convene impactful dialogues. So whether it's the Pacific Islands Conference of Leaders, International Media Conference, Alumni Conference, Pacific Islands Forum Working Group, or ASEAN Working Groups, or as we've seen APEC or the Conservation Congress, we need to continue. Once the APEC happened in 2011, what next? After this happened this week, what next? We got to continue to make sure that we're sharing our voice. The other strategic priorities we have are this. First of all, we want to continue to partner with the Pacific, that the Pacific Islands is the Pico. And Ambassador Riley would tell you that, having been ambassador there in Micronesia, that we see amazing voices in the Pacific that need to be heard. And we believe we have a role in that. We also want to foster environmental solutions. That is increasingly important as we see the impacts of climate change in the Pacific and also in the Indo-Pacific and the world. And the last area, of course, is supporting good governance. We see what happens when we lack good governance, you know, irresponsible investments in economic or infrastructure or, you know, blocking media openness and transparency, poor decision-making that affects and impacts the people in the region. So those areas are of increasing importance throughout the world. And I believe that the East West Center has a key role in helping equipping those leaders so that they can solve those problems and challenges. Yes, yes, amen to that. Bob, you have been through the diplomatic service, you have been to a lot of these places in the Pacific Islands and around the Pacific. Can you talk about how the East West Center reaches or wants to reach those places? And how, as Susie said, it wants to help them environmentally. Well, I think is when I was the US Ambassador to the Federalist States of Micronesia, we had quite a few programs through the East West Center and we interacted directly with those folks. There was a number of leadership training programs, students who went through the scholarship program at the East West Center. And, you know, I think what we're doing now is actually we're broadening the scope. And now we have, for example, we have a large program under the auspices of USAID and SBC, Project Governance, which has its intent to promote good governance throughout the Pacific. And this is a huge project by USAID, it's probably the largest that they've ever done in the Pacific and we're involved in that. And that's a small amount of what we're doing. I think we're also very much involved in the environment. Climate change is a huge part of what we do. We have a RISA program and we have a Green Climate Fund program, which we're actualizing throughout the Asia Pacific region. And these are programs that RISA has been ongoing for quite a while, but this new Green Climate Project is new. And we're just now starting to embark on and these are gonna reach many countries, many Pacific Island countries around the region. You know, Susie, this reminds me of a show we had with APCSS where it came clear that not only did they want to establish better relations with these various countries in Indo-Pacific, but they wanted the countries of Indo-Pacific to establish better relations with each other. And so they would throw them together and they would try to make them friends and so forth. And it strikes me from what you and Bob are saying that that's part of the East-West center mission also. It's not only to bring the East and the West together, it's to bring the elements of the Pacific together so they know each other, so they can cooperate and collaborate and be friends. Am I right? That's exactly right, Jay. And we just do it in a different manner. You know, where we have long-term graduate fellowships, so they actually live here, it's residential program where, you know, whether it's a South Pacific scholars where it's an undergraduate degree, but most are graduate masters and PhDs. So there's a part of the programmatic where they're here long-term. And they're put about one third of the student body are from the United States. And so for many throughout the United States, it's their first time in one place meeting many from the Asia Pacific and showing why Asia matters for America and why America matters for Asia, which by the way is a series that the East-West center in coordination with other partners put out so you can find that as asiamattersforamerica.org and those are, we do it by country. The most recent by the way has been the Philippines. We also have shorter-term programs, whether it's the Jefferson Fellows, which is a premier program for emerging journalists throughout the world. And we saw that at the International Media Conference or the Pacific Islands Leader Program or the Asia Pacific Leadership Program. The young Southeast Asian leaders were just here and those Waistili fellows came and all 20 of them. This was their first time to the United States. It was here. So we're investing in the young leaders and that's where, and then mid-leaders for the professionals program and also not just here in Hawaii, but also in Washington, DC where we have the congressional leaders program and the young professionals program that also is funded through other countries as well. And the difference as well as our funding is congressionally funded going through the State Department, but the other part of our funding comes from generous donors who have left an amazing mark throughout generations as well as other organizations to help fund scholarships which are very much in need. If I just to give you an example, the young Southeast Asian leaders program, we had 20 here, 15,000 applied for that program. We had 318 South Pacific scholars apply for the graduate programs here. The State Department allocates only three. So only three were able to come. So when we look at opportunities that Asia Pacific Islanders would like to have here in the United States through here, they go to the University of Hawaii and participate in our program and live here on our campus at the East West Center. There's much need and we're so grateful to be able to put this information out to find more people who are willing to support young leaders and invest in their future. Yeah, it's so important. I would add just to your point that we bring other countries together. We are also a crop agency of the Pacific Islands Forum through the Pacific Islands Development Program. And this program unites all 20 of the Pacific entities, not just countries, but also territories and even the state of Hawaii. And it's the only organization that does that. And so as such, we also sponsor the Pacific Islands Conference of Leaders. And this is a huge event that we're going to have an event sometime this year, very soon. And it's going to be a major event which will involve the heads of states of most of those entities in person. And I think we'll have a hybrid version too for those who cannot come. So that is very much a way of bringing all of the various states, territories, countries together in the Pacific. Yeah, that's really interesting. I was going to ask you about heads of state and whether you might get them here. And why not APEC before 21 years? APEC at 10 years, for example. Why not have it at the, and you are having it effectively. And I think diplomacy, let me ask you this, diplomacy has changed as it changed in your program last week by being hybrid. And a lot of these conferences you guys are talking about are now going to be hybrid. And COVID has changed the way diplomacy works. Am I right? Absolutely. We need to provide for and be sensitive to Pacific Island nations, especially where medical capacity is not there. And in times of a pandemic, it's very clear that ability to come into another space that might make you more vulnerable, we have to provide this. In the past, someone might have said, there's no way you could do this virtually. Now it is acceptable. And I think it's a wonderful way to get the information out. And in fact, we can touch more people in terms of being able to connect more frequently and have meetings where we would have to wait. So the communication I think is much more open and it's very exciting to have this capability. Well, it's leverage. But what about the public, Bob? Was the public generally invited to the conference last week? Will the public have access to the East, West and now? Will the public be invited? Will the public be able to attend classes and be part of the process now? Well, the public was allowed to attend the conferences last week. Certainly the international media conference was open to the public. There was a fee to attend. And I think we did have quite a few people from outside the media who were there. And that was quite exciting to see them. I think it really helped to spread the word. In regards to opening up the East, West Center itself to the public, we're open. We're open now. We've opened, been open since March. And we, you know, people just enter and then they register as a guest and then you usually have to have a sponsor, but not always if you have a good reason to be there. There's, the receptionist will route you to the right place. But we're open there as well. And in terms of the classes, actually, I think those classes are really in UH. We do not actually have classes. Those are University of Hawaii classes that they attend, but we have our separate East, West Center program within our premises. And together, students from a variety of different countries, as Susan mentioned, come together, eat together, live together and get to know many different cultures. And it really is something that they remember for the rest of their lives. And we have a very loyal alumni base that comes from that. And that's why there were so many alumni at the alumni office. Jay, can I add to that? So we do also, by the way, have an arts program that we don't talk about as much. That arts program is pretty deep. And that is open to the public. We have an arts, right now it's Pacific. So we will be part of the Pacific Festival the Pacific in 2024. And Aaron Salah, Dr. Aaron Salah is also an adjunct fellow here at the East West Center and also the director of that fest. And the exhibition has to do with the last festival of the Pacific in Guam. And that's open to the public. They can come and enjoy that as well. And all of the seminars that are advertised if you go to our East West Center website and sign up for all of the seminars, wonderful dialogues on whether it's Korea or Trilat or environmental issues in the region. Anyone can sign up for those. So I recommend that people go to our East West Center website and sign up for those early registration. And as well as I mentioned that many of our publications are accessible on that website as well. Well, I think it's important that people in Hawaii, people who are here, people who are coming through here should understand Hawaii's role in Asia Pacific and Indo-Pacific.  And so it's important that they have, they learn from you. We have to teach people in Hawaii what it means to be the connector in the East and the West. You mentioned before that you had fundraising activities going on. And I recall, this would be around the time that Hillary Clinton visited the East West Center when she was Secretary of State. And I recall that she was there. I can remember her comments and all. In those days, it was a challenge to get funding. And I wonder if that challenge has, I mean, federal funding. If that challenge has been met, I wonder how you're doing in terms of federal support? Well, I can tell you, we're really pleased at our Hawaii delegation. They have been so supportive. And as well as the US Congress, we just did a congressional round table last week with our Senate and House. Myself and our vice president in DC presented and it was very clear that our Congress is very supportive. So we're really proud that most of our funding comes from Congress and the US government. However, when we talk about those investments in student programs and scholarships, we look to a lot of private funders for that so that we can expand that number that I gave you. Cause, you know, our US Congress is supporting the programs and the center itself, but we do need to match that with other private donors. But Bob, maybe you can chime in a little bit about our latest good news from Representative Case and support for Senator Schatz and Hirono and as well as Haika Helle. Yes, indeed. You know, it was very good news to hear just last week that the House Appropriations Committee has increased our federal budget from a 19.7 million level this year to 21 million next year. And I know that Senator Schatz and Senator Hirono are also very supportive of our program and are trying to ensure that that level is at that increased level or higher. So we'll see how that comes out. You know, they have many budget battles to go through. It's not an easy process. It's definitely sausage making. So it's not a certainty, but it's certainly a great sign and certainly indicative of the incredible support we get from the Hawaii delegation for which we are very, very grateful. I can only see that as getting better and better because I know, Susie, how you present. And I know how persuasive you are. Could I just say a quick word about that? She would never say this about herself, but Susie brings dynamism, energy, empathy and vision. I mean, honestly, she's just the right person for the East-West Center at this critical period. And I think we're gonna see some real success in the future. Yes, you wanna respond to that or should I go on to the next question? Bob is so kind and I really appreciate that. I couldn't do about him without amazing staff. If you would have seen the passion last week and Bob can attest to this. I mean, everyone all hands on deck to make it happen. And it was incredible. So I'm just grateful to be part of this team.  So let me ask you my last area of inquiry, if you don't mind. So the East-West Center is in many ways a diplomatic organization. And it's got an interest in expressing American influence and power through Asia-Pacific to Indo-Pacific and making sure that everybody likes us. Okay? At the same time, we have China. China is a very complicated place. And it's very ambitious and sometimes aggressive. And that's gotta be on your radar. And I wonder, what the dynamic, what dynamic you see going forward in terms of American presence in Indo-Pacific, in Asia-Pacific? And what role the East-West Center would play in dealing with the expression of American influence there? Thanks, Jay. I think the environment has changed and we've had actually many Chinese students. So I think we are, East-West Center is a place where everyone can come together to find out where our mutual interests lay and also areas that we need to work out. It is a trusted, they use the word neutral but it's very difficult to be neutral sometimes. I mean, you want to be neutral, but it's a trusted space, an open space where we have multiple perspectives. And that includes, we have extensive Chinese alumni who also have been through these programs that continue to be very active. And we also have regional leaders who say, help us to build capacity in our economy, in our healthcare, in our students, in our, give us options and relationships and not put us in a position where we have to choose. And I think that's where East-West Center can come in to lay everything on the table, to talk about where our interests meet and where we can help each other to make people's lives better. Cause really the focus here is people to people, nation to nation, caring about one another. And I think that's where the East-West Center needs to focus. Amen. Amen. Bob, you're probably going to agree, huh? I absolutely agree. I mean, it is a real challenge to maintain our traditional stance of neutrality and dialogue in this very competitive environment. But I think we can meet that challenge. In fact, we are meeting that challenge. Oh, fantastic. So one of the next steps going forward, Susie, what's going to happen first and how you see all of this unfolding for you? Well, by the end of this month, we will have our foundational strategic plan on those priority areas I talked about, whether it's leaders, convening, Pacific environment and governance and looking at strategies and programs that meet those needs, not just going beyond the understanding, which is critical, but also equipping leaders to be able to have the financial media literacy and economic entrepreneurship, the connections, understanding where the grants sit so they can make lives better for the people in their countries. So that's where we're going next. Also building more relationships, going out to share the story of the East-West Center and where we want to go next and bringing people along to ride this wave with us. That's exactly where we need to go, in my opinion. We have to, as I mentioned, there's a certain amount of geopolitical contention, but you have to have friends. And that's people to people. And that serves a tremendously important role in the Pacific and in the Indo-Pacific. Well, thank you, Susie. We wish you all the best, make a special blessing. I'm making a special blessing on you now. Okay, see the way I do that. And Bob, you too, Bob. And I wish you well, you guys.  And I hope we get to see you again soon. Suzanne Varislam, President of the East-West Center and Bob Riley, Chief Operating Officer of the East-West Center. What an honor it is to have you. Thank you so much. Thank you very much, Jay. Thank you, Jay. Aloha. Thank you so much for watching Think Tech Hawaii. If you like what we do, please like us and click the subscribe button on YouTube and the follow button on Vimeo. You can also follow us on Facebook, Instagram, Twitter and LinkedIn and donate to us at thinktechhawaii.com. Mahalo.


Hi. Well, let me get started. My name is Catherine, and I'm a patch arm developer, and how many of you know about patch arm? Oh, great. Well, this talk is not about patch arm at all. So if you are interested in patch arm, please visit our booth. We'll be really happy to see you there.  And this is actually a lecture taken from my graduate machine learning course. I'm currently teaching at an academic university in St. Petersburg. And how many of you are using NumPy?  Well, I'm sorry, guys. I believe I will not tell you anything new today. And as I already mentioned, this talk is taken from my machine learning course. And you might wonder why this talk was included in such course in the first place. And the simplest answer is here. I started my course with a simple algorithm one can imagine. And it's K nearest neighbors. And this algorithm, you're probably familiar with it. It's used in classification tasks. And the idea is to assign the label which is most frequent among K nearest neighbors to the object. And assignment for this lecture was to use this algorithm and apply it to one's dataset. And that was actually an average code I got in reply to this assignment. And no one of my students actually used NumPy. And, well, it was sad. And this code worked ours. I mean, I can't just wait for so long time to check the assignment. So my teaching assistant and me decided to include introduction kind of NumPy lecture in the course. And, well, that is my motivation to speak about NumPy and this knowledge. And NumPy is the main tool used in all the science. And what I want to do today is talk about how to use NumPy efficiently and how to use it for data-centric computing. And it's relatively easy, but you have to think about in some different ways about your core writing NumPy in order to use it efficiently. So I'm going to go through some ideas that may be helpful. Well, unfortunately, when I was preparing this talk, I found that I didn't have enough time to make proper introduction to IPython. So I'll assume for now that you're all familiar with it. But I will explain some features used in this talk during this talk. Well, let's get back to Python. And let's talk about Python performance. The first thing a person learns about Python is that Python is fast. And it's fast for developing and trying things out. But unfortunately, the second thing you learn about Python is that Python is slow. And everybody knows that Python is slow. But do you know why? Any of you? So let's write a simple function to calculate Euclidean distance. And this is actually also taken from this first assignment. We need this Euclidean distance to calculate nearest neighbors. And on the first row, we got a number of iterations needed and then we just accumulate the distance or the difference between two points and then return this accumulated sum. Nothing special. And I'm going to be using time it magic function included in IPython and IPython notebook. And it allows you to measure your runtime and to quickly get benchmarks for the simple functions like this. And time it function will run your code a couple of times to make sure it has the best result. And if we use time it and we call our Euclidean distance function, we find that it executes in 2.67 milliseconds per loop. And you might wonder, is it fast or is it slow? Well, let's look on something in comparison. And the best way to compare this is to compare this to compile language time. So if we instead implement this exact function in C, and I used here by team magic extension from IPython to load C code directly into Python, so we can use the same time it functionality. Well, it's pretty awesome. And if you haven't checked IPython yet, please do it. And if you time this C function, we find that it completes in 28 microseconds per loop. So we see that C code is 100 times faster than Python. So I'm sorry, it's true. Python is slow for this kind of tasks. And what is the problem with this Python code? Nothing special, nothing difficult is done here. We're just going through the array and doing some simple addition and multiplication. So let's do the next step and we want to find a bottleneck. So we want to learn what part of our code is so slow. And I'll use line profiler installed on my computer. And line profiler has this nice LP run magic comment. And LP run shows us how many times, time you spent on each line of code. And do you see anything strange here? Well, it might be kind of tricky if you haven't seen LP run output before. But the strange thing here is that we spent 38% of our time on fifth line, on looping. So the question is why? And to answer this question, we have to go back and see differences between languages. And C, Java and other languages are compiled and statically typed languages. So you write the code, you have a compiler that runs through your code and decides how it's going to be executed. And the downside of it is that compiler needs to know variable types at a compiler time. That means you have to specify types yourself. Well, actually I really love C and it was my first language. But it's far more cumbersome. You have to write all this extra stuff. I mean, you have to remember to declare variables and et cetera. And Python or Octave on the other hand are interpreted languages. So they don't compile down to the fast machine code, which means it executes a little bit slower. But there are advantages as well. And we all know that Python has this dynamic type system, which makes programming so easy. And you don't have to specify types yourself. You don't have to write type annotations. And my colleague Andrew is going to be talking about Python 3 annotations. And when it becomes useful, so please visit his talk tomorrow. I believe it's going to be interesting. And so back to dynamic nature of Python. Each time you do Python operation, there is a little bit of overhead for things like type checking. And when you do A plus B in Python, interpreter has to check type of A and then check type of B and then find a proper code to execute and then return the result. And there is also reference counting. Interpreter has to augment reference counter and then decrease reference counter as you change the values of your variables. And, well, we like Python because it's even though it's somewhat slow, but it's very quick to develop to write the code. And, well, that's why I use Python. So the question is what do we do with the slowness? And that's where NumPy comes in. NumPy is basically designed to help us get the best from both worlds. We want to have fast execution time from languages like C. And we want fast development type from Python. So I'm going to talk today. Here is some ideas to make Python faster when you are working with the numerical data. And the first idea I'm going to talk about is UFUNX. And it's the simplest opportunity. UFUNX is the short name for universal function. This is basically a special type of functions defined within NumPy library and it operates it element-wise on an array. And the idea behind UFUNX is to combine functionality and the loop together, well, in one. So let me show an example of this. If you're a Python programmer who doesn't use NumPy and you want to do element-wise separation on your array, this is probably the best way you do it. And so we have an array of intervalues and we want to add one to each of these values. And as a good Python programmer, you probably use least comprehensions. So you do for value plus one for value in A and print out the result. So this is Pythonic way to do it. NumPy way to do this is to, which is a bit simpler, is to create NumPy array with special creation functions. And here we don't add one to the end of the array or something like this. What you do here is you treat your array as just a number. And NumPy or lots plus operator and actually produces a result element-wise.  And universal function combines loop and functionality. So what we've said here is when we do A plus one is we tell NumPy I want to loop through all the elements of the array and I want to add one to each of those elements. And we have the same thing for multiplication and for other operators. And please note this is element-wise multiplication, not just matrix product. We'll have nice index for matrix product in Python 3.5, not now. And we'll notice the difference here. We don't have any loop here. So with NumPy this loop actually taken place in internal of NumPy. And the question is why do we care about this? So let's take a look at the speed of view hunks. First of all, we create a large array with a lot of values and 2% in time-ed function means to time everything in the cell. And we're gonna time creating an array and adding one to each element of the array. And for NumPy what we get is 100 microseconds per loop. And if we do the same in pure Python, we do this by hand in Python, we create an array and then we loop through the lengths of the array and then we add one for each element of the array. And again, we got 100 factors speed up. And also I should point out that it's much more easier to type and understand this code. It's hard to get it wrong than the least comprehension. And you might ask, why NumPy is so much faster? So what is the magic that happens under the hood in... Well, here. And what it comes under is the fact that when you use NumPy, you find some functions. The loops are happening in a compiled code. So NumPy is a big package written in C and you have compiled functions for common operations. So the common operations... So we actually access these common operations in Python using the high-level expressions. And that's why it's so much faster. Well, does it still make sense? Well, it's really nice, these new functions. And there are many new functions that are built into NumPy and basically all arithmetic operations, comparison, bitwise operations, are loaded for NumPy to do these sort of universal functions element-wise.  Well, the next thing we're going to talk about is slicing and indexing. And if you used to lists in Python, you know that you can index a list with an integer to find a single value. And you can also index a list with a slice to get multiple values. And you can actually do absolutely the same with NumPy rates. Well, and one interesting thing about NumPy slicing is that there is no memory overhead. It looks like in plain Python lists. And NumPy returns just a view of the array. So if you assign this slice to the new variable and you change only one value in that new array, this value is changed in the initial array as well. So please be aware of this. Well, in multi-dimensional array, we can access elements by row, column, row, column, so indexes. So if you pass 0, 1, and we are asking for row 0 and column 1, and that's the value is 1. And we can also use slicing on multi-dimensional arrays. So in the last example here, we got a sub-maitex. And we can go further and combine slices and indexes together. And here we are asking for row number 0 and for all columns, which is exactly the same to write, well, 0 of X of 0. So NumPy actually offers a lot of other fast and convenient ways to do all sorts of indexing, to index more complicated arrays, to index more complicated chunks of data. And one of those are index arrays. Index arrays is just basically passing a list of indexes to the array. So if you want a second, 0th, and first element of the array, we just put those indexes in a list, put that list to the array index, and came up with the values. And again, we don't have to write any loop here or these indexes. We just pass them all together at once. And it's much quicker to, well, than writing Python loop. But the real thing about this is it doesn't return the view of the array as we've seen before. In most cases, it returns a copy of the array. So you have to be aware of this. You can see here that this assignment didn't change the value of the initial array X, unlike we saw it before. NumPy allows you to use Boolean mask as an indexing. So instead of passing an integer to choose values from X, you can pass this mask. And it will construct the array you are interested in. And so this might seem like, well, why would I need a thing like this? And when it becomes handy, when you combine this with the simple view functions we saw earlier, and if you look at the last example on the slide, here we used X is greater than two to construct Boolean array. Then we just pass this array to the array index of X. Well, and I found myself using this technique mostly on data preparation step. For instance, when we are looking on the array and we want to split data into tests and train sets, well, the nice ways to do this, besides using built-in scipy test train split, is to create a mask with the length of the array and apply this mask to the array and apply its negative version of it to the array. And that's how the same thing achieved by my students. So instead of writing this loop over the list and saying, you know, for freedom in the list, if some condition impending it to the result, it happens automatically, and it happens in one line of code. And it's much, much quicker than this Python by hand version. The next idea I want to talk about is using NumPy broadcasting. So this is something very cool about NumPy. And broadcasting is one of these things that really makes NumPy powerful and allows you to express very complicated operations very easily. And what broadcasting does, it gives you a set of rules by which you function operates on the arrays of different sizes and dimensions. So what this set of rules allows you to do is to do things like, for example, add integer to an array, and, well, you can add row to the matrix, or you can do even crazier things. You can add row to the column, and it will expand to the two-dimensional matrix. So the rules of broadcasting is pretty simple, but it's sometimes a little bit confusing, and it takes a while to wrap your mind around what's going on. But once you get this, you can do a huge amount of operations that really efficiently using these broadcasting rules. So the first rule is if the array shapes differ, left-pad this smaller shape with ones, and then you compare the dimensions, and if any dimension doesn't match your broadcast or kind of expand the dimensions with the size equals to one. And if the dimensions don't match, but neither of them is equal to one, there is no way to match those together and you raise an error. So this is a quick example of how it goes. We already saw adding a scalar to a vector. Example, when we spoke about u-functions, we didn't know back there that it was broadcasting. And looking at this example, we have two by three matrix, and we are adding length three vector. So the first thing we do here, we do left-pad it with the ones to make the number of the dimensions match. And then we broadcast that up and we stretch that vector across the whole matrix. So then we have two matrices to match. And then we just add them together and we got the result shape two by three. And we can think about it like copying memory across a rate to much dimensions, but there is no actual... Actually, there is no copying memory. This is just an abstraction to think about it. So there is no memory overhead. And NumPy is just X, like if this happening under the hood. So what this allows you to do is to do things like rather than writing your loops around two arrays and in Python you can express this with broadcasting syntax. And you get much faster version and much faster computations and also much cleaner code. So you don't have to worry about loops and well, I showed it here for the addition but it works for any binary functions. And one more nice feature about NumPy you might not have seen before. We have a three by two matrix here and what will happen if we add these two together according to broadcasting rules? Well, we got a value error because our shapes are three by two and three lengths array. So there is no way to match those together. We can left pad array with the ones but then we just can't expand this too much the matrix shape. So here comes NumPy new access and what it basically does is it takes the array and adds a new access here and you can add a new access wherever you want and it's very useful when you want to reorient your array somehow to broadcast it in a way you wanted. So does it still make sense? Well, because at my lecture in university most of my students were lost at this point. Okay, I see. Once again broadcasting doesn't add additional memory. It doesn't actually allocates new array. So the last idea I want to talk today is NumPy aggregations and NumPy aggregations is a function which summarizes the values of the array somehow. And as an example, I have a mean function and NumPy has a bunch of aggregations are built in like minimum, maximum, sum, etc. And again, it's something that if you are writing it out raw you have to write a loop, a Python loop. So you will loop over this array and do it yourself but it's much faster to do this using built-in aggregations. And one more thing about NumPy aggregations that aggregations can do is to work on multi-dimensional arrays. So if you want to get a mean value of the entire array you do x.min and if you want the mean value of the columns of the array you pass the axis argument there. So you got the mean of your columns. So there is a lot of aggregations available in NumPy and you should get familiar with them if you're going to do some large-scale data analysis and the cool thing about them is all of them have the same call signature so you can pass axis parameter to all of them. So in a quick summary, writing Python is faster but loops in particular are slow. And if you are looping over the large data set the best way to do this is to use NumPy package and to try some of these techniques. And the very last little thing I want to show you is the example of how it can be used to implement a meaningful algorithm. So we will use K-mins here and I believe all of you know this algorithm and this is clustering one. So it's a quick reminder how algorithm sounds. Well, you select K-points and random and cluster centers and assign object to their closest cluster center according to Euclidean distance and then calculate the centroid or the mean of all the objects in each cluster and then you repeat steps two, three and four. And here we just generate some synthetic data to work with it and here it is. It's visualization for this data and we have a bunch of points floating in the space and we want to compute clusters for each point here. And basically what we're going to do we're going to compute Euclidean distance and here we got vectorized version of it. Oh, sorry, here it is. Just five lines of code and here it is. It's algorithm implemented line by line like it was written before and so I took this words definition and I just managed to translate it line by line into Python. And it can be achieved by pure Python without non-Pyrolysis. This makes me really excited and here it is. So I believe we're just out of time and I'm going to leave you with this and if you are interested in these slides you can go to my Twitter account and I'll post a link to slides there and I want to thank you for listening and I hope this was helpful and please enjoy the lunch and the rest of the conference. Well, thank you, Katarina. Now it's time for questions if you have some. No questions, really? Have you ever compared NumPy performance with PyPy? For example, if any of your students refuses to use NumPy but you still need to check the assignment you can just run it on PyPy to speed up. Well, PyPy and NumPy and several... Well, for instance, just in time compilers are great ideas but it doesn't fit this talk. Sometimes it's faster, sometimes NumPy beats PyPy so there is a lot of work to be done. More questions. Hello. Is it easy to write custom universal functions? It's perfectly easy. Well, I like NumPy because you can write universal functions yourself and then it will work like built-in one. Okay, thank you, Katarina, for coming.


Want the next screaming silver pick rich TV live members on YouTube get access to it first all you need to do is join today


To those of you who believe you can lose your salvation, I simply say, good luck. As Christians, we really do not believe in luck. As a matter of fact, we understand that we've got a providential God who is working in our lives, who does not sit back and watch us just live our lives and just see what's going to happen. He's got us not watching TV. He's not entertained by the ups and downs, the trials, and the tragedies as well as the successes in our lives. He's not entertained by that. He is actually actively involved. If we believe that the enemy is involved, he is trying to do everything that he can to thwart us. As Peter says, roaring like a lion, walking around seeking whom he may devour. What do we think that God is doing this? So he's just sitting back watching, seeing it unfold and saying, hmm, I wonder what's going to happen? Or is he actively involved? Well, obviously we know he is actively involved. But to someone who says that you can lose your salvation and we have free will, well then, even though we don't believe in luck, I say they must believe in luck. And so I wish him good luck. Why would you say that, Cory? Well, the question is going to be, what in the world does the Holy Spirit do in you? I know what the Bible says he'll do in us. I know what he's doing in me. The Bible is clear. God has stated that when he gives us his Holy Spirit, matter of fact, it's a prophecy going back from Deuteronomy. We see it in Jeremiah. We see it in Hosea. We even see it in Ezekiel. We bring this passage up again. This is Ezekiel 36, 27. He says that I will put my spirit within you and cause you to walk in my statutes. Now, here's my question. Who is putting what spirit in us? God is the one that says I will put what? His spirit, my spirit, the Holy Spirit. We do believe that this spirit is the Holy Spirit. And what will he do in us? In this case, he's speaking about Israel. We find out in John 1 that all of us who are children of God, we have been born of the Spirit. And so this reply is not just Israel, but he's going to make it also apply to Gentile beliefs as well. And so what will his Holy Spirit do? Cause us to walk in his teachings, his ordinances, his statutes. And so that is a promise for those that believe that you will somehow not be affected by the Holy Spirit, that it has no role in your life, or it's a limited role at best and greater is he that's in you, is not the Holy Spirit, but greater is you that's in you, or greater is he that's in you, is actually you, your will. I reject that sort of the Bible, but again, if you reject that, that's fine. Good luck. Paul tells us in Ephesians 1.13, he says, In him you also, after listening to the message that's placed in our faith in Christ, the gospel of salvation having also believed you were sealed in him with what? With who? The Holy Spirit, who or he is given as a pledge of our inheritance in view with a view of the redemption of God's own possession to the praise of his glory. In other words, we have been given the word that uses this deposit, this earnest money, this good faith deposit God has given, which is the Holy Spirit, until we reach our possession. What is our possession? Ultimately, to be with the Father in eternity. And so we have been given the Spirit to keep us, to grow us, to walk us, as Ephesians says. As a matter of fact, he is refining us, he's growing us, he's perfecting us as we have been sanctified according to Hebrews 10. And so this is what the Holy Spirit is doing. If you don't believe that the Holy Spirit is doing this in you, that he won't be successful, well then I say to you, good luck. Jesus makes a statement emphatically, I might add, in my new favorite passage, John 10.5. Speaking of a sheep who are believers, he says that one before I start there first, he says that we will, the sheep, we will follow him. Why will we keep following him? As a matter of fact, why? Because we know his voice. And look what he says, my new favorite verse. A stranger, they simply will not follow. And this is the most, this is one of the most emphatic ways that you could say that this won't happen. As a matter of fact, it negates the future possibility. How do I know it negates the future possibility? Because as I said, they simply will not follow. This is in the future tense. This word here that's highlighted for you on your screen, is achaluthe susin, which is they will follow. But this ume, this delegation, they absolutely at no point in time, ever, ever, ever in the future will follow a strange voice or a stranger or anything strange. This word that's used for stranger is just anything that's foreign. So it could be you name it. It can be porn. It can be some sort of addiction. It can be money. It can be greed. It can be wrath.  And you believe that you have the free will to follow. Well, then my statement to you again is good luck. Now because we are believers, we're told that in 1st John 5, that he says that whoever is believed, the ones that are believing that Jesus is Christ, that person, that very same person, all of us that are believing that we have been born of God. Peter tells us in 1st Peter 1, 3 that all of us who have been born again, he caused us to be born again. Going back to what Ezekiel spoke of and John as well in John 3, that the Holy Spirit regenerate our hearts and cause us to be born again, born of the spirit. And because of that, going back to 1st John 5, he says that those who are believing ones, the believers, we have been born of God. Now the issue is what does that mean? Well go to verse 4. He says whatever is born of God, that's us, overcomes the world. We are overcomers and this is the victory that we have that has overcome the world, our faith, our believing has brought this about and that was brought about because God causes. And so what are we going to do? He says that we are going to overcome the world. As a matter of fact, Revelation 3 says that because we are overcoming ones, he says that we will never ever ever be blighted out. But if you disagree and you think that you can walk away, you think that through something on your own, through your own fault, that God can't hold you that it's up to you to keep walking, it's up to you to have faith, it's up to you to keep believing, it's totally up to you and the Holy Spirit, his work is there but not as great. And that when the Bible says that he who began a good work in you, that he will complete it, well the only way that he can complete it is if you do your job, if you believe that and you believe that you can turn your back on him and the Holy Spirit does not have the power that you think he does or that the Bible says he does and I know he does, then I simply say to you my friend, good luck.


Do you want some potential new details on the Hyrule Warriors Age of Calamity expansion pass that goes beyond what's been unveiled by Nintendo and the Musou team over the last, I don't know, handful of hours? I got you. Hey everyone, today we got a bunch of really happened last night, technically on the Japanese Musou account, but today we got the English translation versions of new news for Hyrule Warriors Age of Calamity expansion pass, I have it up here on the screen and we'll go over that in a moment, but I have additional information here from Samus Hunter, and what's interesting is a lot of the stuff that was announced by Nintendo and the Musou team was actually things that Samus Hunter already talked about before, so Samus Hunter was right again, Samus Hunter hinted we were going to get the ancient armor added, hey guess what, we're getting the ancient armor. Who knew? Well Samus Hunter did, literally gives a screenshot of me wearing it, suggesting that we were getting it in Hyrule Warriors Age of Calamity, and we got it, also suggested what the expansion pass could be, at least some base premises, and it looks like she's right, so we want to cover this additional information she has because we want to make sure that we cover our bases and give you all the information on the DLC that we aren't really hearing yet, because they basically gave us the info on this infograph and not much else, so I'm gonna go out to this infograph, let's go here, so you can purchase it on May 28th, that's next week, it'll come with a purchase bonus for Link's costume, which is the prototype ancient gear, which again we talked about how Samus Hunter told us that was true, Link's weapon is going to be a prototype ancient short sword, which also Samus Hunter said we were going to get, and then wave one is called Pulse of the Ancients, it's going to be available in June 2021, I presume we're going to see it at E3 before it releases, or maybe it releases during E3, we'll see, it's going to have an added playable character, new challenges in the Royal Ancient Lab, added weapon types and action styles, newly added challenging enemies, and then wave two, which is available in November of 2021, is called Guardian of Remembrance, this is going to have newly added character Viginettes, expanded roster, newly added stages, and new battle skills for existing characters, and when you have new stages that typically comes along with more story, they're not saying that specifically, but generally when new stages have been added in the past to Musso games, it comes along with story, so it seems the second one, kind of like the second part of the DLC, Pass for Breath of the Wild, that story, looks like it's going to be that case here, and here's what Samus Hunter had to say on this, she said I want more details on Hyrule Warriors, Age of Calamity, Expansion Pass, the lines I wrote in the tweet, in which I included some of the aspects that would be part of the two DLC packs, now have an official name, and I will write in detail what they offer, Pulse of the Ancient, right, that's the first one, Pulse of the Ancients, the purpose of this pack is to provide a degree of challenging, capable of being difficult, a degree of challenge, capable of being difficult, even for those who have already completed the post game of the base game, and an increase in the replayability factor of the title, by completing the missions assigned by Pura and Robbie in the Ancient Court Workshop, you'll receive several rewards, including new weapons, both will also actively enter the battle, so it says added playable character, maybe it's characters and they're keeping a secret here, we'll see, the new enemies will not actually be completely new, even though it does say newly added challenging enemies, it's saying they're actually going to be reskins, think like golden versions, golden linals, like yeah, I think golden versions, which that's what they did in Breath of the Wild, they'll get the master mode, you didn't get new enemies, you got upgraded enemies, right, and more of them, so it's possible that that's kind of what's happening here, I don't think we're going to get newly never seen enemies in Zelda before here, so I kind of agree, it's probably just going to be like reskin, golden versions or something, I think that actually makes a lot of logical sense, and then while for the weapons they were initially planned, the possibility of assigning elemental statuses, so they were going to have element like firewind, you know that kind of stuff, such as fire to inflict more damage to ice, to grass, etc., but they scrapped it during development of the main games, so it's possible that these elements are going to make a presence in this DLC, so the new weapons and stuff potentially have elemental factors, so we'll see about that. Guardian of Remembrance, the second DLC pack in my opinion, the most exciting of the two that comes out in November, is a content focused on the narrative aspect of the game, so she's claiming story, which would make sense with the new stages, it will highlight several events that were hinted at in the game, putting more focus on the villains, such as Aster and his origin, which that's kind of sort of what happened with Hyrule Warriors back in the day, a lot of the DLC story added like the other side of the coin, so yeah that seems to be what's going to happen here, although the game is a spin-off and I hardly think we'll see heavy references to these events in Breath of the Wild sequel, some aspects of it could be considered canon, now this is always a controversial point, is Hyrule Warrior Age of Calamity canon, is it not? I feel it is, other people say no, there's been no technical word from Nintendo if it's on the timeline or not, maybe they'll release an updated timeline at some point and we'll see that it is on the timeline, that's really when we're going to get official word, otherwise we're all just debating to the wind on words said by Eiji Anomu and what it means, what it infers, and can a spin-off game be part of the series, yes a spin-off game can be part of the series, but that's neither here nor there, it says it's the content with the least amount of recycled content, so the second the second pack has like you know the first one with the enemies, the recycled but like you know different colors stronger, this content's not going to have as much recycled content, although it's probably going to be shorter and actual gameplay than the first one, so the first one's going to have more missions, more gameplay, more playability to it, but the second one's going to be smaller but like more original, right, actual story elements etc, so it's going to be more original but not as, it won't take as long to beat it, that's basically what she's saying, so they'll be adding more challenges to the first pack along with this content in order to update it with new editions, and that's all, and then she takes some other people to cover it, she didn't tag me specifically because she actually messaged me, so she posted this stuff about two hours ago, so around nine o'clock, my time, she gave me this information seven hours before that, I was sleeping, and then this morning, I got my kids out to school and then I kind of sort of went back to sleep, I was pretty tired, so I had an epic live four-hour live stream last night, so I was a little bit late getting this stuff up in comparison to maybe some others out there, maybe Andres Restore Game Overdressing, HMK already have videos up on this because that's what she tagged, maybe they don't, I don't know, but I'm getting a video up on it because I am highly, highly interested in Hyrule Warriors in general, I find Hyrule Warriors Age of Calamity to be one of those games that just makes me smile, right? You know, the big debate, obviously they sold it on the premise of it being a prequel, if you recall, we kept calling it a prequel at this channel, Igianomo is the one that kind of inferred that it was a prequel by coming out and saying, hey, this is the only game that's going to explain the events that happened 100 years ago, to me that's like a definitive this is a prequel because it's referencing 100 years before Breath of the Wild, it's the only game that's going to explain 100 years before Breath of the Wild, how can it do that if it's not a canon game in the series, right? How does that actually make factual sense to do something like that? So that's kind of where it's coming from in that regard. Personally, I think it probably is canon, it probably is a prequel, and I do think it possibly creates another split in the timeline, it's not as if the Zola series is new to this, Ocarina of Time had three splits off it officially, I think one of the splits was tacked on to try to make sense of a timeline, it didn't make sense, but whatever, it doesn't really matter, that's what factually occurred, it makes the Hyrule of Historia, we now know all that, so it's one of those things, I think this is just another instance of a timeline split, but whether something comes from the timeline split, I have no idea, but that's my personal opinion. So I want to throw it to you guys, first up, are you excited about this DLC? It's only 1999, that's basically what they've charged for these, you know, the combo DLC, pack, pass things, expansion passes, they call it, you know, every single time that's what they charge for Mario Kart 8, so they charge for Breath of the Wilds, what they charge for Hyrule Warriors, back on Wii U, that's what they charged, you know, now for Hyrule Warriors, Age of Calamity, seems to be the go-through price for expansion passes, so besides Smash, right, Smash was 25, whatever. Anyways, you guys let me know what you think about that, also I hope to see all of you guys, one, tonight at our livestream, we will have a livestream tonight, it is our end of week stream, we'll probably be talking about this, other news, we always do Q&As, Monday, Tuesday, Thursday, Friday, essentially sometimes there'll be a day skip like Tuesday, I didn't do one this week, but Monday, Tuesday, Thursday, Friday, we always have our nightly streams, I'll be sitting right here talking to you guys about whatever you guys feel like talking about that day, plus all of the biggest news stories, we actually broke, if you're curious, the original base news about this that released in Japan, it broke on our stream, like I'm not even kidding, we talked about this Hyrule Warriors news last night as it came out on Japanese Twitter, that's what's also kind of neat during our stream, is that any breaking news that happens while we're streaming, we talk about it during the stream, as it happens, it's kind of neat, we were working on translations and trying to figure this all out, going to various websites, using Google Translate, and we got a lot of this information that's in this infograph, but now, you know, now we have additional stuff potentially from Samsung, video will be listed as a rumor, hope to see you tonight at my stream around 8, 8.30 p.m. Central Time, will also be obviously streaming for E3, I hope to see you guys all at E3 2021, there'll be a link down in the description, it'll be the top link, it's actually gonna probably be before the fold and all that, for you guys to tap or click on that and go set reminders for our E3 stream, our pre-show, we are going to be streaming the entirety of E3 all four days, probably 12 hour plus long live streams, we're not really sure how long it's gonna be until we get the full schedule from Nintendo, and then we schedule our stuff throughout E3 while live reacting to everything happening at E3, $3,500 worth of giveaways, some of this giveaway stuff is back here, some of it's over here off camera, there's more stuff coming today, more stuff coming next week, the stuff keeps rolling in, we have a whole bunch of companies, our partner, a bunch of games to give away, it's gonna be a lot of fun, I can't wait to give back to the community as much as I possibly can, because you guys are a community that provides so much to me, you guys lift me up, you guys make YouTube exciting for me, I mean as an example we don't have an active giveaway this month and we're having one of the biggest growth months in channel history, it's not the biggest growth month but it's one of the biggest growth months in the four years or so that I've been doing YouTube here, and it's really nice to see that people seem to be coming in because they love the content, you guys love what I'm doing and want to subscribe, I'm not even asking in most of my videos for you to subscribe, you're just doing it, I think that's really, really neat that people are just enjoying the content that much, so thank you for that, we are a community, hopefully a good community, and one that hopefully continues to grow together and build lasting friendships and just lift each other up when we're having rough times, alright folks, I'm Nathan Robodance from the Tanner Prime, hopefully I'll see you tonight, see you at E3, see you in my next video, probably have maybe one more video today, we'll see, I got a little extra time today, so we might be getting another one out, but otherwise thank you so much for tuning in and I'll catch you guys in the next video.


So here's what I do on my last day as a hospitalist every single week. So if you're not familiar, working as a hospitalist requires seven days of hard work in a row, then you also get rewarded with seven days off. You do whatever you want. So here are all the main things that I do on my last day of work. Number one is to try to discharge as many patients as possible that are ready to go safely. This prevents a new person coming in and forgetting something that they may have to do for that patient, either a medication or a referral. Trying to get all of that done before that new person comes on really helps. Number two is to try to clean up my notes as much as possible. At least personally, I love to walk in to a note that just makes sense. I know what this person's here for. I know what they have to do. I know what they have left to do. And the final thing that I do is I send a sign out or a handoff to a provider that I'll be taking over. This is usually a text message or an email for every single patient. And again, it's more or less a line of who that patient is, why they're there and what is left for them to do. If you guys enjoy this insight and behind the scenes of being a full-time physician, make sure you hit that like and subscribe for more content just like this one.


Welcome to All Hands Update, I'm Petty Officer Jonathan Pancall. The Navy wants you to know what retaliation is and how you can prevent and report it. Retaliation is a harmful action against someone for something they did or said and is a violation of the UCMJ. Professional retaliation against a sailor could be the loss of privileges, denied promotion or training, or being transferred to a less favorable job. Social retaliation is the exclusion of someone from social acceptance or denying the privilege of friendship because someone reported or intends to report a crime. From recruits to the most senior officers, it's your job to report retaliation when it occurs. You can contact your chain of command to report an instance of retaliation or call the Inspector General's hotline at 1-800-522-3451. You can find out more specific information on the Inspector General's website.