This is stock number 9336X. We are here at Summit Automotive in Fond du Lac, Wisconsin, your new and used heavy duty truck headquarters. Today we are checking out this super clean 2006 Dodge Ram 3500 quad cab long box dual rear wheel. This truck has the 5.9 liter Cummins diesel. On this HD video you'll be able to tell that for the age and miles on this truck it is in really nice condition. It has the factory steel rims with the wheel simulators and it has brand new hand cooked dyna pro tires. These are LT 235 80 R17s. We put these on in our safety inspection. Frame and underbody for a 12 year old truck looks really good. Clear coat is the color you can see that the headlights are nice and clear. Chrome trim grille is in excellent condition. No major dents on that front bumper piece. Has one little scuff on the front bumper there but other than that very clean. This tire is brand new as well. We shoot all of our videos in 1080p so if you have HD capabilities on your computer tablet or smartphone, turn them on right now because it's like you're right here looking at the truck with me. As we go down this side of the truck you can see just how mirror light and glass like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make the trip down you can still see the truck, hear the truck and have confidence in the vehicle that you're looking at before you even get here. Really clean down this side. You can see all the lower rockers look really good. Tires are brand new as well and the frame and underbody is in pretty nice condition. A little bit of corrosion but nothing terrible. Those lower rockers and everything looks really good considering that this truck has 147,000 miles on it. As the MBRP chrome tipped exhausts, just go around to the back of the truck, tailgates in pretty nice shape, no major dents. One thing on the rear bumper here, it does have a full towing package which includes receiver hitch, seven pin wiring. It does have a goose neck hitch as well, beds in pretty nice condition and it comes with a Northern Tool and Equipment Toolbox. Let's go around this side of the truck to clean this passenger side. These tires are brand new as well. So six brand new tires on this truck that we did in our state inspection. Very clean down this side of the ride. It has the fold out tow mirrors. They are heated, they also fold in like so. Inside the Laramie package gives you the gray leather interior. Both of these seats are heated. There are no rips, there are no tears in the seats. We have factory floor mats throughout on this truck. Four windows power locks and power mirrors and then it does have the Infinity Premium Audio System. Power pedals as well and as you can see this truck has 141,774 miles. Leather wrap steering wheel that's in pretty nice condition. No major scuffs or wear through the steering wheel. Has the six speed manual transmission and aftermarket brake controller. Here are your heated seat buttons, power sliding rear window, turn dial four wheel drive. You have your dual climate control and it has the six disc CD changer on it. You have your compass, temperature and mileage display up there. Passenger seat is really nice and clean as well. No rips or tears on that and we got a factory floor mat on that side too. Pretty nice truck inside and out considering the age and mileage on this truck. It's in pretty nice shape. Back seats are just as clean as the front seats, no rips or tears and it does have the latch child safety system for your car seats. Like I said power sliding rear window it does have the load floor which goes down like so and then there is storage underneath. These load floors are nice if you got kids or if you got pets you can put them down. Flat surface to lay on and if you have kids they can put their feet on it and or if you got muddy boots or tools don't want to wreck your seats and put them on there as well. Take a quick look under the hood, 5.9 liter Cummins diesel, 325 horsepower engine base very clean runs very smooth has Mopar batteries in it. This truck has been fully safe and inspected by our service shop. Has a fresh oil and filter change. All the fluids have been checked and topped off. Runs really nice and the truck is mechanically 100% ready to go. To see more pictures of this truck or one of our other 400 new and used cars, trucks, SUVs, half tons, three quarter tons, one tons, dualies, dump trucks you name it we got it go to our website www.SummitAuto.com. Real pictures and descriptions of every single vehicle on our lot. Videos of every single used vehicle that we have all at SummitAuto.com. Thank you so much for checking out the video if you like this truck want to make it yours give us a call right now<PHONE_NUMBER> ask for one of our sales associates to make this ride yours today once again that number is<PHONE_NUMBER> thanks again for checking out the video. If you want to check out more videos like this one or just see what else is coming into our inventory go to www.youtube.com. Remember to subscribe, like and share on those videos and this one in fact a second you see a link to subscribe to our YouTube channel on your left a link to more heavy duty truck videos like this one on your right if you haven't been to our website on the bottom a link to this truck on our website click those check us out check the truck out and we really look forward to help you with this super clean 2006 Ram 3500 quad cab long box dual rear wheel stick shift Cummins diesel thanks again.


Have you ever thought to yourself, man, I'm really down on my luck, I don't know my purpose in life and I'm really struggling. I should probably consult with Oprah, see what she has to say. No, well, me neither. Unfortunately, though, if you're a woman between the age of 40 and 60, the probability that you've thought something at least close to this is a lot more significant. That's not necessarily a particular judgment on you folks. Each generation has its own set of theological gobbledygook to debunk. Now, Oprah's had no shortage of theologically void statements, some of which are semi laughable. Okay, okay. I need to go back on that. I wrote semi laughable in the script, but I'm being too charitable. These things are hilarious, some of the stuff that she says. Today the video we're going to be engaging with has a little bit more substance to it. I think it will be quite entertaining, but I think we're going to learn a lot from it as well. Even though Oprah isn't reaching my generation, Gen Z, or the millennial generation, it's important to know that the ideas that she puts forward and the ideas for guests that she brings on aren't unique to her generation. Issues of self-love, self-esteem, self-care are perhaps even more popular in recent generations than with Oprah's generation. So today we're going to touch on all those topics and sort through the Oprah insanity. So let's begin. But first, hey, what's up guys? My name is Isaac David and this is The Daily Disciple where I help you find Jesus and follow him daily. If you're new to this channel, subscribe because I'm putting out new videos every single day. A huge shout out to everyone on Patreon. It is because of your guys' support that this ministry keeps going and growing. If you want to help support what I'm doing and helping people follow Jesus daily, head to the link in my bio and become a patron today. Now, on to the video. Jackie Ryan just wrote on Facebook, I'm tired of being strong. I want to be weak. And Yana said that so many of us wear that as our badge. Those of you, how many of you are the strong ones? Not good. You know what I'm saying? Yeah, you know. You're strong. Yeah. And then why isn't that good?  Bro, of course it's inauthentic. Like what? Like, of course it's inauthentic to put others first. See, this is the big problem with the authenticity movement. And I'm a big proponent of authenticity. The problem is sin is authentic to the sinful nature.  You are. The Bible says no one is righteous. No, not one. No one seeks for God. No one does what is right. We are naturally selfish. And even when we do nice things for people, get this, that we're usually doing it to bolster our own sense of self or our own, how we feel about our self or how other people see us. Philippians says, do nothing out of rivalry or conceit, but in humility, count others more significant than yourself. See, we need to distinguish here what is good authenticity, biblical authenticity and bad authenticity, because the world will try to tell you, you're perfect just the way you are that you need to embrace every desire that you have, every inclination and every behavior. But the Bible paints a different picture. We are told in the Bible that we need to be transformed because we have a sinful nature and we are a slave to wickedness. However, when we put our faith in Christ, he transforms us from the inside out and makes us a new creation. We are given a new self and we are to be authentic to that new self, that new creation, those new desires that God has placed in us, those desires for service and sacrifice. It's the worst possible thing for you to be, quote unquote, authentic to the old man, to who you once were because that person, all those desires were in sin, were enslaved to sin and they were just looking out for yourself and you don't want that. You want to be authentic, true to who you newly are in Christ. From that new identity flows a sense of self worth and a foundation for self acceptance, which we're going to talk about a little bit later. Always put other people before you, but you put yourself last. How you treat yourself is how you treat God.  Come on. What? Okay. I'm sorry. Okay. What? Okay. You kidding me? This is hurting my brain here.  I'm trying to figure out where this lady is getting this stuff. Honestly, it makes no sense. I don't, I can't be quite any more eloquent than that. I think she, I think she might be getting it from the idea that, oh, how you treat yourself is how you treat other people.  And I can kind of, okay, I can kind of buy into that a little bit. I do think there's some nuance to it. At the same time though, how you treat God is completely different than how you should treat yourself. You, we got to worship God. We got to, you know, give him all the glory. We got to dedicate our lives to him. That is very different than how we're treating ourselves. We're not worshiping ourselves. We're not giving all the glory to ourselves. We're not submitting our lives to ourselves. We need to treat God very differently than how we treat ourselves, because we are not God. And, and okay. So what's this idea about we are the representative of God in our own life? I think this is some sort of twisted mangled like idea taken from, okay, we're created in the image of God and we're created to image God on this earth. Yes. That's true. To show the world what God is like through my character, through my behavior, imaging God on this earth, because I'm created in the image of God, but I also want to reflect his character to everybody on this earth. And none of us do that perfectly, but that is our calling. At the same time though, we are the representative of God, of our own life, so we need to treat ourselves really well because that's in essence how we're telling the world we need to treat God. Interesting. Interesting. Okay. Like this is this is the thing with Oprah sometimes and the people that she brings on. There's like a little sliver of truth to it and then just garbage, right? And then so you can kind of be like, I can kind of see what she's saying. Like, okay, yeah, don't treat yourself bad, because if you're treating yourself really poorly, then you're, you know, you're telling the world what that what God created was not very good and was not worthy of, of, of, of love or, or protection or, or valuable.  So treat yourself like you treat God. It's like, no, that's, there's a two like distinct things. Yes, don't treat yourself badly. And we're going to talk about that later. And I'm going to make another video. I made videos about self-hate before and self-acceptance and all that sort of, sort of thing, but there's a distinction here. It's like, okay, just because I'm, I'm, I'm holding God to this, this different standard, right? He is holy. He is, he is amazing. He's the best thing ever. And I'm going to worship him. I'm going to dedicate my life to him. That doesn't mean that I need to treat myself that way. Like give myself all the praise, all the glory. And it also doesn't mean that I need to treat myself like garbage. No, that's not what we're, we're, that's not the place that we're in either. We got to recognize, okay, how we're created in the image of God. God has given us value and worth. He demonstrated that in giving his life for us, he saw that as worth it. And, and, you know, we're not trash. He loved us. That is where we find our identity and our sense of self-worth and acceptance in what God has said about us. Because if he is our everything, then his opinion matters most. And if that's true, and that's where we found, find our foundation for how we see ourselves, that ought to change your life. That doesn't mean you start treating yourself like God. Everybody gets so excited here, too. That just wasn't, uh-huh, you don't have nothing right now. Where's my writing tools, Dean? Yeah, guys, the sad fact is about a lot of the programming nowadays when it comes to, you know, when people approach theological or philosophical topics is somebody will say something generally pretty absurd or nonsensical. It just won't make sense. Um, and everybody will be like, Oh, that's deep. Oh, that's deep. Oh, that hit me so deep. It's like, okay, it's not, it's not that deep. It's not that deep. Now, how you, I've never heard it put that way before.  Really? Yes, really. What? I'm just, I hate to just keep doing that, but I had no idea this was going to be this bad. In this lady's world, you are God. You, like, there's no distinction here. It's like, okay, like, if you're not putting yourself first, then you're not putting God first. Well, lady, I'm sorry.   It's like, um, no, that's not part of the biblical story. Um, but people will try to create idols. That is part of the biblical story. People creating idols. You saw it. The Israelites making a golden calf for themselves, even as Moses was giving them, about to give them the law of God. They were already like, Oh, where he left. Let's just create an idol. Same here. This lady is creating an idol for ourselves herself in the image of herself. And, uh, and it's the, the idol of self-care. It's the idol of put me first and we can create a lot of justifications for it and workarounds and, and you'll even hear Oprah here trying to bring out some scripture, interestingly enough. And, uh, this lady kind of, well, like, waddles and wobbles around it, trying to off you, skate, you know, biblical truth in order to maintain her philosophy and her understanding that she is most important and you need to put yourself as most important in your life, which I'm sorry. It, it's just not biblical. It's just not. So let's just continue on. But I thought, I thought God said, Jesus said, what you do to the least of these and how you treat other people.  Okay. That's when you're getting into the service, but in your life, yes, you've got to be as good to you as you want to be the God in order to be of service to others in the world. You got to be as good to you as you want to be to God to be of service to people in the world. Okay. Like this is what I'm saying. We don't need to operate in extremes here. Self-hatred, let me just be straight up here, is incompatible with the gospel, right?  It doesn't make any sense. So obviously the extremes here, it's like self-hate. That's out of the question.  It's like, well, no, actually, I, I, yeah, I need to be secure in who I am, in what God says of me. Um, but I treat God very differently and I'm called to treat God very differently. John the Baptist saying, let me decrease that he may increase. That's the mentality that we need to be thinking here. It's not a popular mentality, but it is, um, we can have that and also not lose our sense of self-worth and, and self-acceptance and, and, um, identity, you know, because that's all founded in Christ says of us. So just because we're decreasing, we want to decrease, you know, less of me, more of you God, that doesn't mean we lose who we are. It actually means that we're, we're growing into who we were meant to be. So it's not selfish to put yourself first. No, it's self-full, it's self-full, self-full to be first, to be as good as possible to you, to take care of you, to keep you whole and healthy.  What comes out of the cup is for y'all. What's in the cup is mine, but I got to keep my cup full. Okay, okay. Um, I'm gonna, she's, she's conflating some verses here. Um, when my cup is running over, it's running over cause I'm filled with Christ. Like that's the difference here. I'm not filled with, oh, watching TV by myself and pursuing my own career goals and putting myself first. That's not the reason my cup is overflowing. It's overflowing because I have Christ and he is more than enough for me. As an introvert, I can kind of relate with a little bit of what, like, you know, it's that sliver of truth. As an introvert, I'm like, yeah, I need time to recharge. I need time where I'm out of social situations so I can, um, you know, regain and, and, and feel myself. Um, so I'm ready to serve other people. Okay. Um, but this mentality that, oh, it's not, uh, it's not selfish to put yourself first, first it's self-full. It's like, okay, well now we should look at what are we doing to fill ourselves? Because you know what, a lot of the stuff that we're doing in terms of self care and, um, you know, putting ourselves first, it's actually not doing us a lot of good. It's not really filling us. It's actually making us more empty. When we look at social media, I got to spend, you know, two hours on social media day. It's me time. Like that's actually draining us more than it's filling us. Um, when we spend more time on, on making sure that all our goals are achieved and all our dreams are met, um, as opposed to looking towards the other people around us that, that might need service as well, that's not going to satisfy us. Ultimately, if we're just completely focused on our self, it's not going to make ourselves full. The interesting thing that the Bible and Jesus talks about is, is, you know, when we serve others, that is where, um, we are in our true purpose, right? That's our true calling. And in that, there is so much meaning and purpose and, and satisfaction and wholeness because that's where we're supposed to be. That's stepping into who we truly are, our, our new authentic self. So let me just say this. I don't think there's anything wrong with, with taking a bubble bath and calling it self care or listening to some music and journaling and saying, I need my self care time. Like that's cool, right? Like I, I do that too. Um, but what I do think there is an issue, it's, it's our posture towards how we're approaching these things. If I see my highest priority as myself and my, my self care, um, then my priorities are out of whack. Yes, it's important. Keep, you know, keep yourself healthy and, uh, and, and well, you know, well fed and well rested and, and great. Right. But God is calling us also to stretch ourselves beyond what we find comfortable. That's something I'm learning. There are a lot of situations that I am encountering that stretch me, that push me. And if I was in the self care mindset or, you know, like putting myself first, then I would just say, no, I would just be like, no, you know what? I don't, don't want to do that. It makes me uncomfortable, stretches me beyond what I, you know, where I feel nice. Um, so that's a no for me because I got to put myself first and I got to be full. No, like, and it's, I'm not saying this is easy. I'm, I'm learning. I'm trying to, I'm trying to battle through this. Honestly. It's like, well, look, God calls us to stretch ourselves sometimes and sometimes he needs to push us beyond where we feel full or when we feel completely rested or taken care of beyond what we can handle in those moments. That's where we most need to rely on Christ. See, if we're just stepping out in those moments where we feel perfectly ready and like I've self cared myself and I have enough self-esteem and I feel totally confident in who I am. Now I'm ready to go out. You'll never get to that point. And as we're serving God, God is going to stretch us. I like that. And so many of us think that, you know, we're going to get brownie points in heaven. Like we're going to get into sit in the box seat section, you know, if we just give and give and give and give. Now here's what the Course in Miracles says, which I love, the Course in Miracles says that when you give to others to the degree that you sacrifice yourself, you make the other person a thief because OK, OK, I think she's quoting her book here. I'm or some sort of new age literature, I would assume. OK, this one of those things again, where somebody tries to say something so profound, it makes absolutely no sense. I've seen a number of opera clips and it's pretty much all the same.  You really need to be in this mindset of just eating up and consuming whatever they say and being like, oh, yeah, that's true in order to get anything from it. But in essence, the other person is a thief if they if they take something that you sacrifice, that should be yours. So, you know, if I have time and and maybe, you know, I got lots to do and, you know, one of my siblings comes over and they say, hey, can you help me with this? And I say, oh, well, I got lots to do.  That person is being made a thief. They're a thief now. Now they're the bad guy because they're taking from you what you rightfully deserve because you need to do what you need to do. It's like, I'm not going to say it's not frustrating when you have to sacrifice the things in your life that you want to get to. It is right. But it's what we're called to. We're called to service. We're called to lay not only our dreams, desires and time down, but our lives down. That's a lot more radical. And so the other person isn't being made a thief. You are actually stealing from God when you do not give him what he deserves. What is his? Because all of our time, our lives are not our own. That is the biggest thing. That's the aha moment that Oprah should be having here. It's like, no, they are not being made a thief.  If you do not submit and give to God and sacrifice all that he has given to you because it is all a gift. When you start sacrificing yourself for other people, you make them a thief because they're stealing from you what you need and they don't even know it. Yeah, this couldn't be any more wrong. I'm, you know, the video, the video is pretty long already, so I'm not going to get into it. But this couldn't be any more wrong. We are called to a life of self-sacrifice. We are not called to a life of safety and comfort. And in your own life, my encouragement to you in application of this because it's really fun to just to watch a video and laugh at Oprah and her guests. Believe me, it's a good time and I hope you had a good time today. But at the same time, I want you to be able to take something from this and apply it to your own life. Know this, you're called to a life of self-sacrifice. Analyze the areas that maybe you've been a little bit selfish. I mean, a lot for me, I've put so much energy and attention into this ministry that I haven't been paying attention to the other aspects of my life and just kind of within the last couple of months. It's now establishing some balance and being able to sacrifice. OK, look, I want to move what I'm doing further along. But sometimes I can't do it as quickly as I need to because I need to sacrifice the time that I want to spend doing what I want to do in order to help somebody else with something or serve a church or do other things. And so that's kind of the application piece that I'm looking at right now. I'd encourage you to look at your own life and say, what do I need to lay down? Where have I placed myself above God? God's going to stretch you. He's going to move you in this time, especially as you begin to lay down things in your life and submit it to him. But it's already his. So we're just giving him the things back that he's already given to us. And that's true discipleship. That's true, truly following Christ is just laying those things at his feet and saying, God, you know what, I don't know how this is all going to pan out. I'm kind of running on empty right now, but I need you to fill me up and he will. Thank you so much for watching this video, guys.  Also, if you want to check out my podcast, all these videos, these longer videos are going to be on my podcast platform, as well as original podcast. So just search up Daily Disciple Podcasts and you can listen to these videos and original podcasts on your commute. Thank you again to everyone on Patreon is because of your support that this ministry keeps going and growing. So thank you again and I will see you guys next time. God bless.


TfNN, headline news update. Good afternoon everybody, I'm Tommy O'Brien, coming to you live from TfNN headquarters in St. Petersburg, Florida, 1 p.m. Eastern time on Monday, three hours left to go on the trading day, and we got markets in negative territory. S&P is negative by four points, trading at $28.91, we get the NASDAQ right now, negative by seven points, trading at $79.31, and the Dow off 118 points, most of that Dow coming from Boeing's negative activity, sliding pretty dramatically today. Dow nonetheless, down 119 points, trading at $26,305, dollar index, negative 377 ticks, trading at $96,625, gold contract up $6 but had been dramatically higher, gold currently trading $130,170, we've got oil trading above $64, up a buck 08, trading at $64.17, and notes and bonds slightly lower in price, higher in yield, 10-year note, negative 4 ticks, $123.15, 30-year bond, negative 11 ticks, $147.19, let's jump through some of the futures markets, we'll start it off with the Dow, a little bit of volatility in both directions, currently sitting $26,311, NASDAQ 100, approaching the highs of the session, $7601 currently, we're up there at $7605, just briefly prior to noon, S&Ps trading at $28.91, we're higher on a couple occasions this morning, there's your crude oil chart, quite a number, $64.27, we reached a high of $64.38 and about $10.30 this morning, that's May crude, gold contract had been as high as $1307.81, pull back a bit, holding above $1300, $1301.65, and as we've seen some dollar weakness, Euro strength, Euro trading, $112.66, so some of the stocks I referenced it in the Dow number, Boeing, quite a number, down 4.6% trading at $37383, had hit as low as $37186 at one point, you got GE trading lower as well, 8.5% to the south off $0.86, and look at that, I mean it's just continuing, we were up there even at 10 o'clock this morning and approaching 9.50, we're now talking about 9.15, some of the other movers out there, I saw Snapchat getting a boost up almost 3.75% trading at $12.28, quite a number, stay tuned, we got a man Steve Rhodes coming up right now with the trader's edge, of course Dave White live at 2 o'clock with a power trading hour and Tom O'Brien live from three till five, stay tuned folks, Steve Rhodes coming up right now.


Thank you everyone for being here. I'd like to go over a brief overview of what we're going to cover today, which is to address unsupervised learning algorithms in the context of dimensionality reduction. Namely, we're going to review two techniques, principal component analysis and non-negative matrix factorization. And we're going to put both of these in a specific example, which is to explore the decomposition of reactive materials. So if you're a veteran of this series, you'll know that we've been able to go through various different modules that have explored where you looked at learning from data. And this can come in the form of a cyber infrastructure and data repositories. In previous sessions, we've developed predictive models and computed classifications for materials. And specifically for this session, we're going to look at dimensionality reduction, where we're going to have an n-dimensional space our data exists in. And we're going to try to see if we can extract out certain features that can still explain the vast majority of the data. But this reduction algorithm will allow us to take our data further to do more post-processing than to have to consider all the data that we've captured, either in experiments or in simulation. And at the end of the day, this is to help guide our design of experiments to ensure the highest probability that our next experiment will be successful. As I stated, this session will specifically focus on dimensionality reduction. But if you're interested in any of the other labels here, they will be posted on the website shortly. So as I stated, we're going to go over dimensionality reduction algorithms, mainly principal component analysis and non-negative matrix factorization, and put in the context of a chemistry example. So I like to start out by breaking apart machine learning into two general categories, that being supervised and unsupervised learning. In the earlier sessions, we looked at supervised learning, where you take inputs, pass it through a model, and that provides you with some sort of outputs to explain what's happening. For example, we covered linear regression, where we take in a multi-temperature and try to predict Young's modulus over a variety of training data. And of course, we covered classification, where we read in various features such as ionic radius, connectivity, Young's modulus. And we tried to put them and categorize them based on their crystal structure. What we're going to focus here on is the second branch, which is unsupervised learning, where in this case, we're taking in a wealth of data that we've captured either through experiments or simulation, and we're going to try to abstract out certain features that explain the majority of what's happening in our data. This can come in the form of either clustering or dimensionality reduction as two broad categories. In clustering, what you can see here in this example is that we have certain features that we can extract out in our face in this image of a person, such as the eyes, the hair, the hats, or the sky, and the roads. And it's able to categorize that by doing a cluster algorithm, shown here as a K-means clustering technique. What we're going to focus on in this session is dimensionality reduction, where you can see in our base example of the number eight, we have an n-dimensional space, a certain number of components that explains how we can draw the number eight or how we can define it in our data. What we want to do is reduce the dimensions to something lower and still retain the overall outline of our original image, this being the number eight. So I like to start out by explaining dimensionality reduction and try to compare it with the algorithm that principle clone analysis actually does. So what we want to do here is we're showing a simple molecule composed of three atoms, and we're going to try to understand if we can actually describe the motion of these atoms in the system over time. And what we can do is we can break apart this complex motion into a linear combination of independent motions. And what you can see is that for n number of atoms, this being a three-dimensional space, we have a nine-by-time matrix for our complex motion of the molecule. And this can be broken down again into a linear combination of three independent uncorrelated motions. In order to solve this problem, we need to actually compute the covariance matrix. And as the name suggests, what this matrix contains is the correlation between any of the features inputted at the specific index. The correlation between feature one with feature two will go into the index of one-two, so on and so forth. And in order to solve this problem, as it is a linear algebra problem, we want to diagonalize the matrix. And what diagonalizing the matrix will do is we essentially want to eliminate the off-diagonal terms of our n-by-n matrix, covariance matrix. And in doing so, we ensure that we decouple or decorrelate the features from one another, thereby maintaining orthogonality or making sure that the motions are independent from one another. In solving this eigenvalue problem, we'll get both eigenvectors and eigenvalues. And if anyone from science or chemistry or physics or even computer science will know that this is akin to normal modes analysis, where eigenvectors will determine the normal modes or the correlated motions of the specific molecule broken down independently, and the eigenvalues are correlated to the frequencies that exist. Now, as that toy example, I'd like to move on to feature extraction using PCA and determining facial expressions. So to review, again, the mathematics behind how PCA works, first we need to compute the mean. Using the means, we then need to calculate the covariance matrix defined here. And then we need to solve the eigenvalue problem. And in an example of facial recognition, you can see that when we compute our eigenvectors, we get a certain amount of the original image described by each of the features here, going from the first to the mth eigenvector, or in this example, going from the first to the 500th eigenvector. And the way it's categorized is that the first eigenvector will describe the most information based on the original image. What I want you to take away from here is that eigenvectors will encode features. So the eigenvectors of our PCA analysis will actually relate to features of the original image. In this case, noses, eyes, mouths, as they, you do a linear combination to sum them up to recover the original image, which is the face. So let's get started with our first Jupyter notebook. So I would like you all to do. Hopefully you have a NanoHUB account. You can please follow me and go to this link here, nanohub.org, slash tools, slash dim red map decomposition. I will jump over there. So if you open up your web browser and go to that link, you should pull up this tool here, and we're going to launch the tool. And doing so should take you to the landing page. So I'll wait a couple seconds for everyone to catch up. So if you follow along and we're able to make it to the landing page, we're going to first look at this example, very first Jupyter notebook, which is an example of PCA. So clicking on that will take you to this browser here. And it's going to take you through an example of doing PCA in terms of visualization. So I like to just qualify that I've added some comments to help guide this example in more detail. So you're probably going to see more comments here than the actual tool, but hopefully it'll make sense if you're following along in this recording. So what we're going to try to do in this example is we're going to try to understand how PCA can extract out correlations in our data set, as I described previously. What we want to be able to do is use PCA to then de-correlate our data and to show that the eigenvectors that we obtain from our data are actually orthogonal to one another and to understand how the algorithm actually works. So I'm going to go over this toy example where we're only going to address two input variables. But of course, as I stated, you can do PCA on an n-dimensional space. It should handle it. And I will bring up two cases where this PCA will actually fail when this example was set up to succeed. So in this example, we're going to have a population and we're going to state that in this population, we know that there's some correlation between height and weight of individuals. We don't know this correlation, but we know that there is some relationship between them. So I want you to imagine sampling or querying from 500 different people and we're able to obtain their information. And then from the information of both height and weights that we get from these individuals, we're going to normalize the data and we're going to assume that our normalization follows a standard normal distribution. So the following lines of code will set up a scenario assuming that we've already done the normalization aspect. So going through the code, we're going to import two libraries. The first one is NumPy, which is a very popular package in Python. And the second one is Matplotlib, which will allow us to do plotting and visualization. Now this might be a new function or a new statement from any of you, even if you do Python. What we're doing is we're using the random class in NumPy and we're going to define a random state. What this does is it allows us to define a container for pseudo random number generator, one being our seed number. This allows us to generate random numbers drawn from a variety of probability distributions. You'll see where that comes up later. So we're going to do a little bit of math here, but essentially we're just trying to, at the end of the day, we're just trying to set up our data so that we see some sort of correlation. And so we're going to find two different variables, A and B. A is going to be a two by two array. The shape is two by two. And we're going to populate it with random samples from uniform distribution over zero inclusive to one exclusive. The second thing we're going to do is have our array B, this being a two by 500 array now. And we're going to have, it's going to be populated with random samples such that we pull from a standard normal distribution. And again, don't get bogged down in what the actual functions do. We're just trying to set up our data in a way that we can see correlation. And so what we're going to do is a dot product of two matrices. If you remember your matrix multiplication, a dot product, the solution will have A comma B. It'll have the rows of this and the columns of this after you do the dot product between the two. And then we're going to do a transpose of this. So at the end of the day, it's going to return an array of 500 one by two individual rays. So I wrote this code a little bit out for a print statement just to see what the X value is. And we're just going to look at the first 10 entries of our defined X variable. If you plot it out, you see that we have 10 one by two arrays of the data that you can assume is just then we've normalized our heights and weights somehow some way. And following from that, where they're going to plot both the height and the weight normalized height and weight, excuse me, as a scatter plot. We're going to set our grid color, red line color to gray line with the point five. Make sure the axes are equal in length and then we're going to show it. So if you run in that cell, you should see a plot similar to this where again, this data has been forced to kind of show a trend, but we see that there's some correlation between normalized height and normalized weight. We're going to see if PCA can actually learn this. I want to point out that in doing this development of our data points, you don't see data in the top left corner or the bottom right corner of our plot. And this is to avoid specific behaviors because as this method is a linear decomposition algorithm, we don't handle nonlinear data very well. We can't really handle multi-galaxy and data distributions. So this example is set up so that PCA can work perfectly, but know that it works best if our data has some sort of linear correlation with one another. And so we're going to use PCA to try to attempt to learn this relationship. So we're going to move on to the second code cell now. What we're going to do is we're going to try to interpret what PCA is actually doing. And so what we're going to do is we're going to import the PCA object from the sklearn.decomposition module. We're going to use our PCA object. And if you would like, you can go to the sklearn.decomposition website. It's in Python. And you can read what the arguments for the PCA are. We're going to have one argument and it's going to be very simple. We're just going to try to define our PCA as decomposing it into two components. We just want to do a two-component fit. But if you want, you can go online and look up more arguments. We set that to a variable. And then now we want to call the fit on our x data. So if you want to print the PCA, what it actually does is you're going to see, in order to run this cell, apologies if I forgot to say, but to run the cell, you hit shift, enter, or you can hit the run button. If you want to see what this PCA actually does, I stated that it's an object. So it does the fit, but it doesn't output visualize actually what the fit is doing. You can see that here's the PCA applied to our data. And here are the arguments that you can modify also shown in the documentation. The only thing we've changed is now setting end components to be two. So when we do this fitting, we can actually learn some quantities of interest. And the returns are going to be components and explain variants. So in this example, we're going to do some prints and we're going to see what they actually mean. So here I printed out the components of our two-component fit. And I've printed out the explain variants again of our two-component fit. This is the component explaining the first component. This is the eigenvector. This is the eigenvector of our second component. And then these are the explained variances. And what these values actually mean will be explained in the next slide. But I can go over explain variants. It's fairly easy. What it's saying is that in our two-component fit, we're decomposing our data into two components. This is how much each of the principal components explains the variance in our data. And quickly you can do a summation of them and you can show that if I do a two-component fit to our data, the cumulative explained variance of the two components represents 77% of our initial data through being explained in the variance. So hopefully that kind of made sense to you. We're going to go over how to actually interpret the components explained variance in a more visual aspect in the next code cell. So what I want you to know is that when we use our components, it's going to define some sort of direction, right? It's an eigenvector. So it's going to be a direction, in this case, normalized heights, normalized weights. It's going to be a two-dimensional vector. And the explained variance is going to relate to the magnitude of said vector. So going through this third code cell, essentially what we're doing with this definition here is we're trying to create codes such that we're able to draw the vector, draw the arrow on overlaying our data. And so this is a fancy way of defining a dictionary that essentially defines a style of how our arrow is going to look.  And then when we do an annotate, it reads in the variables and this is how we, whatever we read in, we're going to put the arrow in the figure using the defined style. So again, we're going to plot our data. This is the original data scatter of our x-original normalized weights, x-original normalized heights. And this alpha just adds transparency to make sure the data doesn't overlap. We're going to loop over, now iterate over both the explained variance and the components and calculate some vector v and then actually draw that vector v. That's all the lines are saying. Then we're going to plot them. So if you hit shift enter and trust me if the code works, what you can see is our original data in lightly shaded blue open circles. And you can see that we've actually drawn our two principal components onto and mapped it, projected it onto the original data space. And so what this actually shows you is that the first principal component explains the largest variance in our data. And the second principal component explains the second most largest variance in our data. And these are the principal component axes along which the data lies. So hopefully it makes sense now what the components, the arrays themselves are doing and what the explained variance actually means when you do the mathematics and project it onto the original space. So this had the largest explained variance. Therefore the magnitude is longer. The component itself is an array that defines this direction. And again, this is the second most explained variance. And we only have two arrows because we only wanted to fit our data to two components. So now let's move on to actually reducing the dimensions of our PCA, of our data using PCA, right? This is dimensionality reduction. So what we're going to do is we're going to develop our model object again. I'm going to call it PCA2 this time, but we're going to call it PCA object. And now we want to have, we want to describe all the data with only one component. Now we're going to actually do another function in the PCA module. And it is fit underscore transform. So remember previously what we did was we just call PCA2.fit. We did this, what I now call step one. We did PCA2 of the fit. So I'm going to run this and show you what fit does. What fit does again is just creates the object and ensures that what we pass as arguments to our original PCA, which is components equal to one. It's going to learn that here, components equals one. It's going to pass that along. So that was what we did previously in the step. But note that this function is slightly different. We're adding now a transform function on top of it. So if I uncomment these lines and do step number two, which is after we've done our fit and we've modified our variable. Now we're going to transform the data. I'm going to print the first 10 values of step after doing step number two, which is after we fit and after we transform. And you can see what we've done is we've reduced originally we had two by, we had a 500, one by two arrays because we had two component fit. Now we have 500, one by one arrays because we're fitting to one component. And what this command actually does, if you do fit underscore transform is it actually does both of them. It is a two in one step that does the fit then transforms the data and manipulates it in a way that we're only returning the one component. So it's a two in one step. What I want you to notice is that this actually provides our data in the reduced dimension defined by the fit. And it actually provides, so we're going from a 500 by two shape to now a 500 by one shape, right? This is our transformed data going initially starting at two component, 2D, and going down now, reducing the dimensions to a one dimensional object. Because we have one component, we only have one eigenvector, and therefore we only have one explained variance, which is that first component. So now that we've transformed our data and it's been reduced to a single dimension, let's do another function that allows us to actually visualize going from the principal component space back into our actual data space, which is normalized weights and normalized height. So now we have to do an inverse transformation of our transformed data to put it back into the original space. So if you run this cell, what we're going to do so by defining this new data set, x new, and we're going to plot them both on top of each other, right? We're going to plot the original data, what is our normalized height, normalized weight with some sort of transparency. And then we're going to put on top of that, we're going to put our x new, which is our inverse transformed after doing PCA of now a normalized height space and normalized weights. And we're going to have some sort of transparency. And again, the axes are set to be very similar as the lines above. And what you now see is that we're able to take our data that could be explained by two different principal components. Remember the first vector pointed in this direction, that was the most explained variance. The second vector was this direction, that was the second most explained variance. And what we've done is we've gone from two components to one component by completely getting rid of the component that explained the least amount of variance. And so we've mapped all the points that have variability in that principal axis, and we've projected it down to this line to the first principal component axis. So essentially we've collapsed all this data onto major principal axis. So that is what PCA is doing when you do dimensionality reduction. The components explain the largest variance in your data. And when you do dimensionality reduction, you are getting rid of variability in the, you're getting rid of the principal axes that show the least amount of variability or explain the least amount of variability in your data. And then you kind of project that onto the remaining principal components that explain the largest variance. So hopefully that gave you a little bit of a flavor of how PCA works. And with that, I'm going to go back to the presentations and move along, oh, sorry, move along to the next portion. So as I stated, we went, we started by looking at normalized weights versus normalized heights, which is a two-dimensional space. We've done dimensionality reduction using PCA to reduce it down to one dimension. And then we projected it into the one-dimensional space. And we've actually been able to successfully learn this linear correlation. Of course, this was a toy example in a setup in a way that is understandable. So let's actually move on to another example in the context of chemical decomposition. Before we do that, I'd like to bring up the concept of non-negative matrix factorization as we have been focusing on PCA the entire time. This is a very good paper. I'd urge you all to read it on your own leisure. So the authors wanted to test the effects of PCA and non-negative matrix factorization by looking at facial recognition of the original data. And this is just an image of a face. And when they conducted this PCA algorithm on the face, you were able to break it down into a product of two-cell matrices. Again, the principal components and the weights. And if you do the dot product, you should recover the initial image of, say, the first principal component. What I want you to take away from here is that the weights are a varying color, white, black, and red. And what red actually indicates in this paper is that we have weights that are negative. And if you think about it in the context of this algorithm, all we're doing is diagonalizing the covariance matrix. So it makes sense that we can get both positive and negative coefficients. But when you're thinking about it in terms of image recognition and interpretability, negatives really don't make any sense. What do negative eyes mean? So it doesn't really make any sense in the context of interpreting the algorithm, PCA algorithm. So now we're going to move on. And they looked at non-negative matrix factorization. And what you see are vastly different results, shown here are only white and black, which are zero and positive values for the weights, as well as their components being positive and zero. And this is the hard constraint of what is considered the non-negative portion of this matrix factorization technique. As you can see, it's more interpretable because we can extract out certain features in our components that are attributed to the overall facial expression. This being eyebrows, maybe a little bit of the mouth, so on and so forth. And so NMF actually provides interpretable features when you start adding them up doing summations to recover the initial image. So let's move on to the next portion and explain it in terms of a chemistry example. Let's look at the interpretability and make sense here. So if you can imagine a simulation or experiment where we start off with a bunch of reactive material, it's stable and ambient conditions, and then we do something to it. And all of a sudden the material takes away, reactions start to occur, things start to happen, the atoms are interacting with one another, and it's a very complex process. And what we want to be able to do is use the information we obtained from here. We want to be able to down sample or extract out common features of our complex chemistry and explain it in just very simple curves. That someone from an introductory chemistry course might realize as, say, a reactance starting at a fraction of one going down over time, forming intermediates, and final gas products. The end goal of this is to develop great equations which we can then pass into mesoscale models or continual model models and actually use this data in a meaningful way. A naive approach to doing this would be to track all the atoms over time and track how they interact with one another, bonds breaking, bonds forming, their positions evolving. You can imagine that this data set will be very, very large and it'll be very hard to handle it in do post-processing. So what we are proposing is that you can do PCA or NMF on this manipulation of the data somehow, some way, and we can extract out only a finite number, 280 different environments that explains the overall behavior of what's happening here. And what you can see from these curves are shapes that more or less can map to the common understood interpretation of reactance intermediates and products. You have curves going down, curves coming up and going down, and curves going up. And what you can see is that there's a huge bundle of data that are more or less centered at zero, and this is information we can throw out. We can do dimensionality reduction to eliminate these unnecessary curves. So I'd like you to move on to the second notebook so you can follow along and go back to the landing page. We're going to now go to the second example, which is shown here.  The overview goes over what I just explained in terms of the context of the problem. At your own leisure, you can read about PCA and NMF and what it does. But in the interest of time, I'm just going to get started with the actual notebook. So we're going to run the first code cell, doing so, shift, enter. And what you're going to see is we're going to be able to plot the data of what we're reading in. This is our file. What's interesting is we're going to read the data and show the first few lines using pandas to actually manipulate it and show this. This line of code just says that we're skipping the first six rows, which are useless information in terms of header. And then we're going to show five rows plus the very first one, which this is considered the header now. So you can see that our data is situated in such a way that we're going to have to do some manipulation. So because this code takes about one minute to run, I'm going to ask you to run it and then we're going to go over it briefly. So shift, enter to run the cell. You're going to see that it's going to start running. So to go back to the very top, what we're doing is we're going to try to manipulate data so that it's in a more readable form. And that we can capture each of the individual bonding environments in that 280 different combinations or different features. The reason why we come up with this 280 is because for CHNO atom types, this is organic reactive material. We have a finite number of combinations and we assume from basic chemistry that we can only have a maximum of four bonds. And here are some examples of how the bonds can look. These are different molecules we know from intuition that can happen in our system.  These just help with post-processing our data. And I'm going to just go over some of the code. So this is a simple line. If you're not familiar with Python, we're just opening our file and we're going to read it. This is the R. We're going to loop over all the lines in our input file. And we're going to start delimiting or splitting the line based on spaces, or in this case, a white space character. This is in Python how you define a conditional statement. We're going to say that we're going to take the second item of our line that we've split, and we're going to make sure that it matches exactly the expression of time step. Why is it the second element, you would say? Because in Python, we start out counting at zero. This is for loops. This is for comparisons. This is for arrays. This is for lists. And if the condition is met, we're going to take now the third item and we're going to pass it to some set variable. Hopefully that gives you a little bit of a flavor of how what we're using in terms of this Python code and the very root of metric level. So I'm going to go down and hopefully, yep, the bond table is done. The one thing I will briefly go over is that what we're doing here is we're writing a file and we're going to read from the file, which is okay. But the one thing you need to know is that sometimes if you're going to write a file out and then actually read directly from it, it might not actually be written completely in time. So what I want you to take care is to make sure that you flush your output file. So we're going to visualize the bond environment. This is going to essentially bring up the curves that you saw previously and running this. So again, to review, we want to extract out three commonly correlated curves that are could be represented as a loss of the initial structure, something coming and going and something coming up. And so how many global concentration profiles or similar shape curves do you observe? Because of our basic chemistry example, we're going to say three looks like we can explain this by three correlated curves. So again, we're going to develop the PCA model you might have seen as previously where we import the PCA object, define our number of components to be three. Put that with a bunch of other arguments, but the main important part is that we define our PCA with three components and fit our model. And again, in order to actually obtain information about it, we need to transform a model after fitting and define the number of components. So in the interest of time, I urge you to run this code and you can see that the amount of variance explained by each component. The first one explains over 93%. The second one is 5% and the third one is 1% for cumulative explanation of the variance of over 99.6%. This is a great, great fit. Three components is more than enough to retain the original information of our original data. We're going to visualize what these three components actually do. And uh-oh, it doesn't look like what we'd expect from a concentration profile. We actually have some negative values, which we might say is not really interpretable in terms of concentrations. So maybe PCA is not the way to go. Maybe instead we should move on to applying the NMF algorithm. So I'm going to move on to this code cell and we're going to run it. Again, what we're doing is developing the NMF model, calling NMF object, again defining three components, defining our model, putting in three components as our argument, doing a fit underscore transform, as you previously saw, and extracting out the number of components. Doing so, we'll run the code very quickly and we've completed the application of the model. Now let's actually visualize what's going on here. And wow, that actually looks very similar to what we'd expect. First, we have all the curves being greater than or equal to zero. We have a curve going down, a curve coming up and going down, and a curve coming up and staying at a number greater than zero. However, you might think, well, it seems interpretable, this is great, but we actually need to normalize, because remember concentrations are on a scale of zero to one or zero percent to one hundred percent. So we do so in this code cell, normalizing the concentrations. And what you see is, okay, we put it in the form from zero to one in terms of concentrations. We have a component that's red, which can be a pure, more like reactants, a curve in blue, which looks like intermediates, and a curve in green, which looks like products. So with that, I'd like to bring you back to the presentation. Let's see. So this is what we just saw, which is we were able to extract out a three component fit using NMF, which has greater interpretability to our data. And now we can fit it to Kinex equations. And we've done so. So these are for a variety of conditions, which is the initial temperature of our system. And you can see that we can get a fairly decent fit of our kinetics model with the actual post-process data after using NMF. So this is really useful in reducing the dimensionality of the problem. So I'd like to go over very briefly what NMF actually does in terms of matrix factorization. So if we have our V matrix, which is our encoded matrix, all the data that has been post-processed in some way to be able to run this NMF algorithm on, we can express this or equate it to a dot product of two sub matrices, our W matrix, which is our features, and our H matrix, which is our weights or coefficients. What you'll notice is that P is usually of smaller dimension than our N or N dimension. In the previous example, this was 280 different body environment or features, and the N was our time variable. And so we decided to pick P of three, which is of course smaller than 280, and I believe about 90 frames worth of time. What makes it non-negative in contrast to PCA is that we have now again that hard constraint the elements where the entries of both the features matrix and the coefficients matrix must be greater than or equal to zero. They must have non-negative entries. And a common approach to achieving this constraint is to minimize the Frobenius to calculate the Frobenius norm or the difference between what our initial data was and what we expect to obtain in our features multiplied by our coefficients matrix. And if you're interested in the algorithm, I urge you to look at this paper. They go into very great detail about pseudo code and how to actually compute the W and H matrix. So I'd like to summarize and wrap up this discussion by going over characteristics of both PCA and NMF. So we've shown that PCA can provide you with both positive and negative weights. Remember the image where we had faces or features that could be expressed in positive and negative weights? What ensures that the vectors or the eigenvectors that we obtained are orthogonal to one another? And this is a global transformation because what you might have noticed in the PCA is that some of the eigenvectors we obtain had both faces and noses. It wasn't very localized. It was more of a global transformation of the original space. And the way that PCA does its algorithm is it defines the principal components as such that those having the largest variance. And when you do a dimension reduction, you remove the components that have the least amount of explained variance. On the other hand, NMF is more specialized. As I just stated, we know that the coefficients in the components matrix must have non-negative entries. And this is due to its only additive properties. And we also saw in the face example that some of the features were parts-based. We actually were able to extract out only eyebrows or only noses. And so this actually allows our results to be more interpretable in those specific examples. So with that, I'd like to thank you for your time. Hopefully you understood as we went through the rundown of principal component analysis and non-negative mixed factorization. And with that, I'd like to reiterate the grand scheme of data science, machine learning, and science and engineering. Again, we have cyber infrastructures that allow us to learn from a variety of data. We've shown that we can create predictive models and do classification. In this session, we focused on dimensionality reduction, going from n-dimensional states and reducing our data down to very simple three-dimensional features. And all this is to help guide in the design of experiments. So with that, I'd like to open up the floor to any questions that you may have at this time. Thank you. I'll start with a question. So in your first example, Michael, you were describing PCA with two different components. Yes. So how much of the variance can be explained by the first component? So in PCA, we're trying to explain a complicated phenomenon using simple components. How much can we do with the first component only for your toy example? I'll go back to that right now. So as explained in the first example, the explained variance will not change if you do this dimensionality reduction. So this example, let me find it, we're able to explain the first component already 75% of the original data space was being explained by the first variance, 75%. And you can see that when we do this dimensionality reduction, I believe this variable should not change at all. Because they were still explaining it by the exact same first principle component. So to answer your question, we were able to explain 75% of the variance through the first component, and the second one really didn't add much. It didn't explain much more variance. So this was an example that we wanted to show, yeah, you can do a dimensionality reduction going from one component to two components to one component. And you'll still more or less retain the majority of your explaining the variance in your data. So 75%. Thank you. So I was wondering, can you hear me, Michael? Yes. I was wondering whether these types of techniques of dimensionality reduction could be used in tandem with machine learning. So it could be the first step to reduce your problem. And then you could, for example, use some of the machine learning techniques that Saquette described in the in the previous sessions of the workshop. Do you have any comments on that or Saquette? I mean, I believe it's all you have to make sure I think is ensure that you do the correct post processing. Make sure that you follow along in what you're mapping it on to what space. If you're doing dimensionality reduction, make sure you map it back into the original space. Just don't do the fit and say, hey, this is our data.  But I think there's definitely value in taking this what we've done in our reduced dimensional space and actually moving forward with it. I think I definitely agree that you can do machine learning, training a neural network with this information. All we were trying to do is remove unnecessary variants or more or less we were trying to remove any values that might contain noise in our in our data set, I believe. So I'm pretty sure you can definitely link this and move it forward in machine learning algorithms as a calf. Maybe he can provide some input on that. Yeah, I was just going to say that in the past few years, there have been many examples of auto encoders or encoder decoder pairs of networks that try to do the same thing. You would have one sort of network that would learn the minimum number of features that you need to then predict the quantity of interest. If you can do the net reduction using non-negative matrix factorization or PCA, it would just fit in and replace the encoder part of the encoder decoder network and then the subsequent part stay the same. Right. So if you are interested in describing a given material, you can have elemental descriptors, you can have descriptors that comes from DFT calculations. And maybe not all of them are necessary. And the technique like this can reduce it down, distill it down to a set of features that you actually need to make predictions of, say, conductivity or strength or something like that. Yeah, there are many cases in almost every engineering or science application. The, when you have a high dimensional space, the actual states of your system are much lower dimensionality manifold in that very big space. For example, important sampling techniques to do integrals. That's their need is because if you do brute force exploration of your space, most of the time you're going to explore areas that are completely irrelevant. You can kind of see that in this 2D example that Michael showed, where if I throw points randomly there in that square, a lot of those points would lie in the blank spaces where that's completely irrelevant for my problem. In 2D, that's not a big deal, but you can very quickly see that if this happens in higher dimensions, you're completely wasting your time. Doing brute force exploration of space. That's the reason for things like metropolis. Markov chain metropolis type algorithms is to do important sampling. They're all based on the fact that we're in engineering and science. We always deal with a very lower dimensional manifold that we care about and identifying that manifold is key to people to start even thinking about solving the problem. Here's a question from the chat. Does the non negative matrix factorization capture non linearities or non linear correlations? I do not believe so. I'm sure it's very similar to the algorithmic approach is very similar to PCA, but it just has that constraint of non negativity. So as like PCA doesn't handle non non linear behaviors, just like if you as I was talking to say, if you have data that exists here and data that exists here, or if you can imagine that this data space was more circular, it's not going to handle it very well. I know there I'm aware of approaches that can actually handle such behaviors. These being kernel PCA is another one. So kernel underscore PCA. I'd urge you if you're interested in these, this sort of, this is just a flavor of PCA and MF, but if you're more interested in go taking this further, I'd urge you to go to the side kit learn dot decomposition, something like that. And it'll go through a variety of examples of how to do the decomposition techniques to handle more non linear manifolds, non linear behavior. So kernel PCA is one of them that I'm aware of at this moment. But there are a lot more listed there. And that's a lot more detailed lists. They have a lot of examples you can go through and try to read upon your own time. But for the interest of time, I only wanted to focus on PCA and MF in this tutorial. Another question from the chat. It says manifold learning algorithms can capture non linear data. Are you familiar with manifold learning algorithms? Oh, I mean, I think there was one of them that I explored, but I can't remember off the top of my head. I am aware that that does exist. But I think for the interest of the research, we've stuck with linear data. These are great. These are linear transformations. It's an, I can value, I can vector problems were essentially solving. But yes, I am aware of it. I just wasn't applied in this in this tutorial. I think the answer is yes. And it'd be good to maybe we can volunteer an expert and give us a. A seminar, one of these hands on tutorials on manifold. Learning algorithms that that can go beyond PCA. That'd be an interesting topic. Yeah. Are there any other questions? I just want to interject. If you don't have any questions or they come up at a later time, you're more than welcome to email me. And I will try to address it and get back to you as soon as possible. If you're not comfortable putting it here. Or if you're interested in helping us with some of these sessions, if you have, as professor shock and said, if you have expert knowledge in any of these areas, we'd more than welcome your ideas and maybe discuss with you how we can. Further provide interest into the community. Yeah, if you want to volunteer to run 1 of these, or if you have topics that you would like us to cover. Let us know. Okay, so if there are any, if there are not any other questions, please unmute your mics and join me in thanking Michael for this session. Thanks everyone for coming.


Hello students, I hope you know from the previous sessions you got motivated and you started playing with certain online tools available for you to start analyzing your own data set and more importantly how best to plot your data and start you know visualizing the data, start presenting data and then start making the biological sense of the data. So once you analyze your data, you end up getting a shorter list you know from the very big large big data set which was the starting point from the NGS or MASPEC or microarrays and now you know you have narrowed down to a shorter list of the most significant proteins. But now you would like to put them together into the biological context that what are their roles? These proteins belongs to which pathways they interact with which other proteins are the part of you know the network or the given physiological pathway where that makes more sense, right? So then once you start getting that idea then only probably you will have you know the follow-up experiments plan can I now start thinking about a drug which might be able to inhibit and control a given pathway, right? So many times these clues only comes when you start your big data set, you start looking at the most significant list, narrowing it down and then further you process after looking at the pathways and networks they come up with the hypothesis and then look at what can be the actionable hypothesis to build the next set of experiments. So there are many online tools which are currently available which are really good some of them are you know developed from lot of video resources and funds are provided by the national governments but with mandate to make it publicly available. You can start utilizing these resources and start looking at various example data set and see whether you are getting comfortable in doing these kind of analysis. So today my research scholar deep through this verse he will walk you through different steps involved in looking at the pathway enrichment analysis and network analysis using various tools. So let us start today's lecture. Till now we have learned a lot about statistical power, primary analysis and secondary analysis to generate the expression data set. Now the main important thing which is coming that we got a very good pattern of differential gene regulation. So the questions come what next? I want to start with two important question how do my data relate to known biological function are there specific function that are characterized by gene expression changes. After the secondary analysis what I feel the most important things to do is the tertiary analysis that means identify the functional group. This function group identification is based on different pathway enrichment, network analysis and PPI modules that is protein-protein interaction modules. So in the workflow what I have added is the last one after the identification of the differential gene is identify the functional group. Different kind of softwares that generate different IDs. If we are using any proteome discoverer, commercial software or trans-proteome pipeline they will give you different kind of IDs in the protein identification. But we to start a tertiary analysis we have to get multiple ID and that is possible only through ID conversion. So this is a very basic thing but still I want to take a little time and want to tell you how this ID conversion can be done. So there are mainly three important platform which we can taken into consideration. The first thing is David. David is a multiple ID conversion tool. Apart from this it can help in also different types of annotation and enrichment studies. Next is WebG salt and this platform can also be used for different kind of ID generation. The next is protein identifier cross-reference. This is another platform where we can upload our ID and we can get a multiple ID converted from this software. So David, WebG salt and protein identifier cross-reference is a very simple tool where we just need to put the ID, the list of ID and we can select what are the, what list of ID we will get as a conversion. But there is an important tool that is kegmapper converter ID. That is a very important tool because like other platform we cannot put any other ID in the kegmapper. We have to get the keg gene ID from the kegmapper and then only we can put it in the identification toolbox and we can get the kegmapping pathway. So I will show you a glimpse like how from a test data set we can approach to kegmapper and we can convert the ID to keg gene and after that we can put those keg converted ID into the kegmapper to get the pathway. So I have already shared the test one, the test test one text file you have to open the text file. There is a list of gene that is mainly a GBM repository data set a processed file which I have taken and we will copy paste that list into the keg converter ID. So I have already shared the link in the slide. So please go to the keg ID converter and copy paste the link. So this is the homepage of kegmapper convert ID where in the first outside DB you can choose what is the different NCBI gene ID or NCBI protein ID or uniprot ID you are putting. So as I have given a list of uniprot ID so I will be selecting uniprot ID here. After that the important thing is the what is the organism. So when we are clicking this so we have to write the name of the organism and as I know I have taken the file from the Homo sapiens repository. So I will be selecting the Homo sapiens and I will select the tab and so it is showing here HSA. Here in the enter outbox outside identifier we will copy paste the list of the uniprot gene and then we will select we will click on the execution tab. So it will take a little time and it will give you the complete converted ID from uniprot to keg ID. So as you can see the conversion result is giving you the name of the uniprot list. So we will be copying only the keg ID. So we will click here display keg ID only where we will get the name of the keg IDs. So we will copy paste the complete keg ID from here. So we have to come to the home page back again there is a option of search pathway. So we have to click the option search pathway here and the search pathway dialog box will open. So here we have to paste the keg ID which we have already converted and here we have to select the homosapiens pathway. So after selecting the homosapiens pathway we have to go down and click the execution tab. So after clicking the execution tab you can see the keg mapper has already generated a complete profile of what are the different kinds of pathways are there and how many path how many hits are there in each pathway. So if we click into each of this pathway it will redirect you to the complete to the pathway and you will found that what are the proteins that are present and they are highlighted with a yellow color and the red font. So this is the glimpse of how you will use keg mapper and how you will convert your uniprot ID into a keg ID. Next thing what I want to show you is the WebG assault and I feel this is one of the best software in omics platform where it is giving a complete downloadable data downloadable image from your data sets. So ORA sample run, GACA sample run and NTA sample run are three important platform that WebG assault is providing. Apart from this in 2019 they have also included phosphosite sample run into this software. So I want to show you the different kind of images downloadable images it is providing. So in the left you can see it is providing a complete list of different kind of classification like starting from biological pathways, cell components and so on. In the middle there is a complete list of gene ontology, different kind of gene ontology from your data set what they are coming and how they are linked. Apart from this whatever I was talking about WebG assault gene conversion. So they are also providing a complete conversion of your ID into different kinds of gene name and entrance gene. Apart from this it is also giving a glimpse of the network whatever you are getting through PPI interaction protein-protein interaction module. So now I will be talking about a very new but a widely used software that is Reactome. So Reactome is nothing a database which can help you to link your proteins, link your candidates with a different kind of pathway. This database, this software is so much robust and dynamic that it will not only end up with giving a single pathway rather than it will give you a different kind of sub-pathway and sub-network and followed by single-single reaction. So after clicking the analyzed data, another window is opening which is asking for to submit your data. So here we can submit the data in two way. First choosing a file where we can choose a text file with the name of the candidates. Apart from this we can just simply go to the box and copy paste our candidate gene. After that we have to select the continue. So here are two options. The first option is project to human and the second option is include interactors. Include interactors means what are the proteins that is interacting with your candidates or what are the chemical compounds that mainly are metabolized that is including different kinds of drugs that can be linked with your candidates will be also shown. So we will be clicking here and we will start analyzing the data. So as you can see there is a complete list of different kind of pathways they have given and here they have also given what are the identifiers that are not found that may be due to the upgradation of the databases. So now if we want to check the top pathway which has coming that is related to disease of signal transduction. So when we will be clicking thus that pathway we can the reactant database will show the complete details of the pathway and when we will zoom in the pathway we will find that this has given a complete glimpse what are the different subnetworks that are present. So apart from this if we come to the expression the expression is nothing but whatever the different candidates that are present in the pathway and what are their expression throughout in different tissues are present here. So if we select different kinds of tissues from here and we can find that what is the expression level of that candidate in this tissues. If we go to the molecule tab over here we will find there are couple of options are already available that means chemical compound proteins DNA RNA and drugs. This says what are the different kind of molecules that are present in this pathway of which chemical compounds are mainly the metabolites different kinds of proteins DNA and RNA and different kind of drugs. If I am selecting one disease and we can found there are different kind of sub pathways that are coming and in this sub pathway there are two important symbols that is one is U and one is plus. So if we keep the pointer over here we can find that the U says that this is the updated databases and the plus is it is related to a disease. So likewise reactive gives a lot of information about your data set to large aspect. So now the important thing is like downloading the result file. So here is a tab of downloading the result file where clicking this one will download the result in .csv format. So the .csv format will have all the data sets and all the complete data file of the analysis. So from there we have to select certain criteria like P value or FDR which are already given as you can see. So on the basis of that we have to select and we have to filter the complete analysis. So after sorting and filtering a data on the basis of P value and FDR I have found some top pathways which I will be taking for the next part of the analysis. So as you can see this is this is the table I have taken from the result file and you can find the pathway identifier. These are nothing but the unique identifier ID of each pathway in reactome. These are the pathway name, this is the P value, this is the FDR, species name and these are the hits. That means these what are the proteins from your sample data is matching with this pathway. So this data we can put into any kind of protein-protein interaction module and from there we can take the .cif file or the jason file and we can put it directly into the cytoscape and check what is the visualization is coming. So as cytoscape is having different kind of plugins we can generate different kind of visualization network. But apart from this today I want to show you a very robust visualization visual analytic platform for comprehensive gene expression profiling and meta-analysis that is network analyst. So network analyst will give you different kind of visualization platform where you can do single analysis and multiple analysis even multi gene expression analysis. So now we will go to the next hands on that how the data that we have already generated from the pathway we can link it to a network platform to generate a network analysis. This is the homepage of network analyst where there are four top platforms. First is the gene list input where when you are having a normal gene list with p-value or fold change we can use this one. This one is the multi gene expression tables where multiple gene with different expressions can be checked. This is the gene expression table where micro RNA microarray and RNA sequence data can be done and this is the raw RNA sequence data from where we can take the sequencing data and we can start with. This is the network file where analyzed file of .cif or jsn can be directly incorporated and we can get the visualization. After clicking the gene list input we will be having this homepage where we have to select the organism that is homo sapiens we have to select the ID as we are taking the IDs from the same test one file. So we know that this is a uniprot ID. Then we have to copy paste the ID names. After this we have to select the upload here and if we are getting any kind of duplicates or errors so it will be shown over here. If everything is fine we have to select the proceed option. So first we will check the list enrichment network that is a pathway enrichment network visualization platform where after clicking this you can see there is a complete network interaction module generated from different kinds of pathway. So in the left we can select the reactant database. After this we have to change the background color to white and submit the database. After submission you can see there is already a huge number of pathways are already there and we really do not need this many pathways as it in making the complete network very much complex. So now we will go to our table sort a table that we have generated from the reactant and we have all the pathways that are present and we have taken on the basis of significant p value and we will select those pathway which is already present there like this one downloading signaling matrix signaling of EGFR signaling of FGFR signaling of NGF and like this way we have to select some of the pathways from here and we have to come to and we have to extract this pathways. So after extracting this pathways we can see there are only few pathways which we have extracted. So just give you the glimpse I have selected some few pathways but your data set may have different top pathways that you can take into account. So after this there is a option of view and from here we will be selecting the bipartite network that will not only give you the name of the pathway but also it will give you the name of the proteins. So as you can see whatever pathways we have selected are already present there and apart from this whatever the proteins that you have submitted in your data set is already available now. Now if we select each pathway each proteins from like this and there is a option of label and label the selected nodes. So already these pathways these proteins are already labeled. So by this way we can select different proteins different candidates according to our data set and we can select those and highlight those proteins. Even we can change the color of each protein like if I want to show that this protein is upregulated. So I can put in red color whereas this protein is downregulated. So I can put green color and here again I have to select the label selected protein and it will show that IRS1 is upregulated one whereas the PINCI1 is the downregulated one. So there is a lot of thing that can be done in this list of bipartite network and network analysis. So now we know how to generate a very good pathway enrichment model. So the same way we can go for the protein-protein interaction model. So to get the protein-protein interaction model we have already uploaded our data set in network analysis. We will be choosing the generic PPI. So there is another very good platform that is a tissue specific PPI like if someone is working in brain or someone is working with kidney. So there are already these kind of tissues are already available in the database and they can check. But as I just want to give you the glimpse so I will be choosing the generic PPI where three names of the databases are already there. So these three are the PPI that is protein-protein interaction database. One is IMEX Interactome, String Interactome and Roland Interactome. So people generally use string but IMEX Interactome will give you a very big profile of different kind of interactors that are present which they mainly update their database from the curated literature. So if I am choosing the IMEX interaction and we can see like there is a one sub network with 4677 nodes, 114 to 7 edges, 176 seeds. So from here you can download the .cif file of the interactions and we can upload it again into the network for future use. So now we will proceed and we will found the data the software has generated a complete protein-protein interaction module which is a big module and now I will show you how to make this module small or informative and how to decrease this complexity of the network. So as you can see the software has generated the complete protein-protein interaction module which is really very complex. So first we have to select what is the database we want to choose. So let us go with reactome database and after that we will be changing the color to white. Now I have already given you at in the test one file. So now there is a option of batch selection which says that whatever what are the proteins that we are interested in we can copy paste those protein accession ID and after that we have to click the submit. So after submission we can see there is a highlighted candidates that we can found in this complex network. So now as we are very much interested with these candidates we will select and extract those candidate from this complex network. So after selection and extracting the candidates we found that these are the proteins that we have selected and is present in this network. Apart from this these proteins which are there are the top-notch interactors that is coming in this protein-protein interaction module. So like this we have to make some adjustment to make this network visually interpretable. So that can be also done from their given layout which are different kind of layouts are already available but for reducing the overlapping I will choose this one to reduce the overlap and as you can see the complex network has got some clarity. So after adjusting little manually we can download this one with as a PNG image and we can save the file as a PNG or JPG. So now we know, so now we know how from a dataset we can generate the pathway enrichment model protein-protein interaction model. So after this I will show you an example of a recent paper that got published in Nature Scientific by Fan et al in 2018. So they have given a very good they have used this network analysis software to a large extent and they have given how this network visualization platform can be used to produce this kind of network analysis images. In the first one you can see they have differentiated this protein, differentiated the protein candidate list in upregulated and downregulated manner. And they have also generated different subnetworks like this four subnetworks they have generated and on the basis of different pathway or protein-protein interaction. So now if I want to check like what are the different clusters that is coming in my protein-protein interaction module in terms of pathway that can also be done checking the curated sorted reactive list that we have generated. Apart from this they have given a complete view of what are the proteins present and whether a single candidate is present in multiple pathway or single pathway with this help of the with the help of this diagram. So that is all. Thank you. So as you have got some sense today that all the experiments that are defined are based on certain hypothesis and therefore the data analysis and interpretation becomes really crucial. What is very important that you have to be very unbiased when you are starting on a big data field you have to be very unbiased you have to start from the big data big table and look at what is most significant changes happening looking at the statistical value looking at the p values and then thinking about you know various threshold which you have set it up to you know very high stringency filters which you have applied to obtain a much shorter list which is the most confident candidates the genes or proteins which you would like to take forward. Now based on these then you would like to make some actionable hypothesis and then you would like to do a follow-up experiment to test out is my hypothesis working. If not then you will look for you know other proteins or other set of you know genes on the same list and look at is there any alternate hypothesis which might be more effective right. So you should start with very unbiased way looking at the data at the same time you should also be on top of literature and what is has already been published in the PubMed you know if you go to the various publication of that question what people have already published. So you would like to also make some sort of strong foundation from the publication already available and look at data independently then start trying to map the things together are there certain part of the published report is also getting mapped in your you know unknown data set and if that is the case then of course you are more confident okay people have reported these pathways and these you know set of the proteins which are very significant in their publications and we also see that among our top 100 proteins 50 of them are coming but then there are 50 more which are protein new and unknown proteins and what those proteins are now then you know you are more curiously will be further how to test these out how to ensure that these proteins what we are finding our top hits they are the real proteins right. So the pathway analysis and the network analysis really try to give you the much you know comprehensive picture which is very close to the biological question which you wanted to address. So it's good idea for you to get familiar with these software tools with these bioinformatics aspect of analysis so that you know you can start looking at your data in a very different way which is otherwise not possible just by looking at your excel sheet and just looking at proteins and gene list in the isolation. We will continue more of these discussion in the next lecture till then thank you.