Hi everybody. Well, I'm going to talk about playing with C Python objects in C Python 3.4. The idea of this talk is to talk about the internal structure of the C Python objects. Well, what do you want in the talk? I want to play with C Python. I want to have 100 plus two, 103. I want to have two equal faults. I want to truncate a tuple. Well, why not? Well, before we can do this crazy stuff, we have to know how is structured the Python objects. Every object... Well, an object in C Python is an instance. It's the same. Every object in Python is a C structure which store data memory in any point of the memory. Every object has a type and only one type. And the type of the object never changed during the lifetime of the object. These have some exceptions in the C Python code, but it's not important for this talk. Every object has an ID. The ID of the object is the address on the memory. And every object in C Python has a reference counter. And when the reference counter reaches zero, the object is free. Well, this is the basic structure of C Python objects. Every C Python object has a list to fields. The OBE of CNT, which is the reference counter, and OBE type, which is a pointer to the object which store the type of each object. Depending on the type of the object, you can have some extra data. Well, I'm going to talk about individual objects in C Python and explain how is the object structure. And we'll play a little with the objects. One object is the simplest object in Python. It has only the reference counter and the OBE type, which is a pointer to the Boolean type. And don't have any extra data. And the non-type, the non-object is a single-ton object for all the C Python interpreter. I'm going to show some examples. And the examples always have this code. I import C types. I define the long size, the insize, and the char size. Okay, for simplicity. I don't show this code in the next slides. And I have some slides doing crazy stuff to the C Python objects. And I call these sections very bad things. Okay? I call these sections very bad things because you don't have to do this. You avoid to do the things I do in these slides. Well, I talk about known. Known have two fields, two long fields, which are eight bytes. These are 16 bytes for known, for nothing. This sounds like a memory leak. Well, we know that when the reference counter reaches zero, the memory is freed. Then we know that the idea of an object is the address in memory. And with this information and some help of C types, I go into free the known object because it's a memory leak. Well, the first thing, I get the idea of known and read the address, read the data in this address position. It's a long, which is the reference counter of known. I set this value to zero. And I free the known object. Well, with some collateral damage like the C Python interpreter. Well, it's important. I free the memory leak. The end object. The end object have four fields. The reference counter and the OV type have an OV size, which is the size of the OV digit array. The OV digit array is an array of integers. And the value of the end object is calculated with the formula at the bottom of the list. I think it's more clear in the example. I can have the seven value in an integer object. And this is stored as OV size of one and OV digit of seven. And we can have 1024 qubit and the OV size is two. And the first OV digit position have a zero. And the second OV digit position have a one. This structure allows to have arbitrary long integers in Python. Well, I can access to the structure of end with the type. I set the X variable to 100. I get the OV size and OV size is one. I get the OV digit and OV digit is 100. With 1024 qubit, I get the OV size and it's two. And the first OV digit is zero. And the second OV digit is one. Well, let's play a little. I can set the variable X to 1000. I get the OV digit of variable X. I set this value to 101. And, well, integers are immutables. Well, immutable. With the types, it's false. But, okay, I get X, X now is 100, 1001. And 1000 is 1000. Okay. Well, 1000 is too much. Let me be a little bit stinky. 100 is okay, okay? I set X variable to 100. Now I change the value of 100, the OV digit of 100. And now X is 101. Okay. But 100 now is 101. What? Wait, wait, wait, wait. 100 plus two is 103. Well, this has an explanation. The CPython interpreter cached the value from minute five to 256. And these objects, these three objects are reused by all the CPython interpreter. Then when you use an integer in this range, you are using this cached integer. Use the same instance for all the values using this integer. And this is the reason. It's not a book. The bull object. The bull object is an integer. The true value is an integer with OV size one and OV digit one. And the false variable have the OV size zero and OV digit zero. There are singleton variables, too. You like the known object. And the OV type points to the Boolean class, to the Boolean type. I can access to the OV size on OV digit of true and false, and it's one and one and zero and zero. Well, if I get the OV digit of, the OV size of true and set it to zero, I get the OV digit of true and set it to zero. And now true is equal to false. True. Nice. Another thing. The type, the Boolean type, is too similar to the int type that I have to play with this. Then I get the OV type of Boolean. This is this address, which is the same of the idea of the class Boo. I get the type address of the field, I get the field OV type of the true variable and set it to the class int. And now true have the representation of an integer. Cool. The bytes, the bytes objects. The bytes objects have this structure with reference counter, OV type. OV size is the number of bytes. The OV hash is the hash of the OV, what do, is the hash of the bytes contained in the bytes structure. And OV as well is on the right of bytes with zero binary zero at the end, like string c and c. For example, if I have the A byte, I have an OV size of one and OV as well of one position A and two positions, A and binary zero, A, B have an OV size of two and three positions A, B and binary zero. I can access to JEP. I get the OV size and the three. I get the hash and match with the OV hash value. I get the first byte of OV as well and I get YEP and the binary zero. The top of the object. The top of the object has a reference counter and OV type and the OV size, which is the number of elements of the top of the OV item, which is an array of pointers to Python objects. For example, I can have the true false table which have the OV size of two and an array of two pointers, one pointer to a true variable and one pointer to the false variable. I can access to a table. I get the OV size and S2. I get the first position and it's a pointer, which and the second position is another pointer and this pointer is matched with the true and false variables. Well, a table. Another immutable structure. A list with immutability. Well, immutability. I set one, two, three to X variable. I change the OV size to two and now I have magically converted a three elements table in a two elements table plus a memory leak. Magic. Well, the list object. The list object has a reference counter, an OV type and OV size, which is the number of elements in the list. The OV item is a pointer to a structure in memory, which is an array of pointers to Python objects. We'll see better in the example. And the allocated is the quantity of memory reserved for these objects, for these pointers. In this example, I can have true and false lists, which have OV size and OV item is a pointer to a block of memory, which have the address of true and the address of false. An allocated is equals to, in this case, but the allocated memory can not match with the OV size. We can have bigger allocated memory blocks and we only use some for the elements. Well, it depends on the way you have created the list. Well, to access a list, I get the OV size is free, I get the OV item pointer and this address in the memory. I get the first position of this address is a pointer to a Python object and this pointer is one. Well, I can get the second pointer and this pointer will be true, will be true. Another very good thing. I set the variable X to an element list and the variable Y to a full element list. I get the OV item pointer of Y, I get the OV item pointer of X and I set the Y OV item pointer to the X OV item pointer. Then, if I get Y, I get the first four positions of Y of X. If I modify X, I can see these modifications in Y. This is not a great feature for using production, okay? It's a crazy thing that don't use this code, please. Well, the big object. The big object is the more complex object that I will show in this talk. It's a complex structure and really nice. There are a pep explaining how it works and the pep 4.1.2 talk about the split tables and community tables structure of the Python dictionaries. Well, every dict in Python have a reference counter OV type, MA used, which is the number of keys used by the dict. The MA keys point to a data structure and MA values store. It's a pointer to the values in some types of dictionaries. I think we'll be better to see it in the example. The decay reference counter is a reference counter for this block, this set of keys. Decay size, okay. Decay size is the total size of the hash map Decay lookup is a slot for function to look up the hash in the entries. Decay useable is the left space on the dictionary useable before the dictionary needs a resize. Decay entries is an array of key and key is a key. Decay entry structure is a hash of the key, the ME key is a pointer to the key and ME value is a pointer to the value. Let's see an example. With a dictionary, 1, 2, 3, 4, I have two keys, then the MA used is two. The MA values is zero because this is an example of convenient tables dictionary. This means the values are stored in the key entries. The ME key points to a data structure. The data structure has a decay size of eight because we have eight positions to store data or store keys. Decay useable has a value of three. This means if I store three values more or three keys more, the dictionary will be resized and the dictionary keys, the entry keys will have an ME key of, will be the address of one, the ME value will be the address of two, the ME key will be the address of three and four. The hash, the hash function, the default hash function in CPython for integers is the same value of the integer. Then the hash, in this case, is easy to know. The splitter tables structure is used mainly for store the value of attribute of objects and, well, it's for don't repeat every time the keys and the values in the dictionary object of the objects in Python. The obi-ri-ri-cian-t, well, I have only one attribute, then the ME used is one. The ME values have one value, in this case, is the address of one. The decay size is A, the decay usable is three and the ME key will be the pointer to the A key and the ME hash will be the hash of the A and ME value in this case is zero because it's binary zero because we are using splitter tables in this case. To access a dictionary, it's a little bit complex, but, well, I get the keys, the pointer to the keys, I get the KN31, the KN37 in this case and, well, I get the key, the value. All these examples will be published in Github and the slide will be published in speaker deck. The key and the value, I get the key and the value, the key and the value of seven. I get the OBD of the first key one, the OBD of key, of bar one, which is three, the OBD of key seven and the OBD of bar seven. Well, extra valve. This is, I don't explain the code enough for understanding this example, but, well, I think it's funny. I will change the add magic method of integer globally. I import the types. I define a callback function in Ctypes, which gets two Python objects and returns one Python object and returns always 42. Now, I get the address of the pointer to the C function that wraps this Python function. I get the integer class data structure. I find the add number address, which is a pointer to the data structure with all the slots of functions, of the functions that implement the number behavior in integers. I get the first position of this data structure, which is the slot for add function. I put my function. I increment the reference counter of 42 for not break the interpreter. And I print one plus one, and I get 42. Well, reference. The main reference of this talk is the Python code. The C Python object is not especially complex to understand with Fama sections like Unicode. The Python objects are defined in the include directory and the object directory. And you don't have to see the rest of Python to understand the C Python objects. The Ctypes documentation is really interesting for play with the C Python data structure. The C API of Python is really interesting too. If you want to know more about the C Python dictionary, you can read the PEP 412. And if you want to see the access code of the examples of the slides in my Github, and the very bad things, examples in my Github too. Well, the conclusions. I don't write C code normally. I'm not a core developer of Python. I don't have a big knowledge of C Python interpreter. But I can play with the C Python objects. C Python objects are simple and not complex. And can be funny. And of course, if I can... Don't be scared about the C Python source code. If I can read it, you can read it. Sure. Questions? Questions? Yeah, this. Okay, first sensible talk. Very interesting. And my question is, what are the possible practical usages of this, except for entertaining the audience? Thanks. I hope for now. This is not for practical use. I use Ctypes for play with the C Python objects, but I don't find any practical use of this knowledge. The talk is not for showing something to use in your normal days. It's for better understanding of the C Python, how C Python works. I hope not to see this code in any production environment or something like that, because it's crazy stuff. More questions? Could this type of code not cause any security problems if you have any bad ideas and you want to access certain objects that should not be accessible normally? Can you repeat the English? It's not really good. Can I use this in a bad way and create a problem with security? I guess private functions, private variables. Private functions in Python are not private. Then the security is not a problem. We have, well, the problem is not the security, the security is broken anyway. Yes, you can access to all the process memory through PROC directory, and then the security is broken anyway. I find it interesting for access to information that you don't know or you don't have to know, but if you share binary code, you can access with these techniques to this information, but there are a lot of other techniques for access to this information. I think it's not a better tool for access to private information. So if you make all these modifications, it would only affect the current process, right? So if you open another interpreter, Python would behave normally? Of course. These changes are done in the memory of the process. You don't have access to modify other Python interpreters. You can create modules that, when are in port, do things like that, but it's a bad idea. Or a good idea for half a funny day with a co-worker. Do you have more questions from the audience? If no, let's thank the speaker again. Thanks.


What's going on everybody got Kyle and Shawn here with latent sports cards, and we are ripping four or eight boxes This is top scorn platinum anniversary lights eight box random team style did a random eyes for the break Had Timothy with the Rockies blue jays down to Jacob with the A's Rangers. Good luck here guys. Let's see it. Oh It's five. It's that on the tonight sheet my bad. It is five. It is five. Let me fix that So this night sheet is ten. Yeah, five bucks. Sorry. Sorry Five bucks 54. 99 or yeah 54 99 per spot. Yeah, thank you. Thank you. Thank you Yeah, so it's a five boxer guys five boxer of sapphire 19 to go on that one takes half case Good luck on the plat over There's a mini diamond. That's gonna be Colton Welker. That's our light exclusives mini diamond Black and white Yeah, probably get one going a little bit Thank you. Becky taking one in our chrome choice Jeremy taking one to select. Thank you Becky and Jeremy my people. There's a two gone for Daniel We are almost full on select guys almost full on select basketball now That'll be after some more sapphire got six to go on that one now guys. Thank you less less. Yeah, I like it. I like it I like the fields one There's two ninety nine. We got a aqua right or aqua lava Billy Martin for the Yankees It's paid up right on right. Thank you guys filling up very nicely tonight It's a refractor Austin Meadows base Austin Meadows back to back Saw that Nathan. Yes. All right Pete Dick Buck. Yes, man. Yeah, man. Saw that There's a X-Fractor Nick magical for the Cubs not numbered. Yeah, that that stinks man. That stinks He just showed me one. It was a fields under passing yards and it was a howl under rushing Luke Williams on the Rayway or the black and white mini diamond I got those two What else I got to one ninety nine got a blue mini diamond rookie Alec Thomas for the d-backs There's Royce Lewis rookie. He's been killing it Royce Lewis killed the game one for the twins. There's a rookie Jew Jew Ellis, excuse me d-backs Grabbed a nice taco on Tuesday. I got Brian Robinson for one touchdown pass rush reception Mason Thompson mini diamond scary Terrence Should be only a 26 man, come on. There's a gold Scott Rowland not bad their reds It's kind of ducked in the hall of fame Scott Rowland gold the 50 the red Scott Rowland George Kirby refractor Tori Hunter Spencer Strider Tommy. What do you think? Hey, let's go James. Good luck, sir. Love James try my best my man O'Neill cruise rookie and John Smoltz Another mini diamond What we thinking Paul? What we thinking Paul? There's a yellow Johnny Bench Yellow Ray wave to 250 Johnny Bench reds getting a few colored already number Fractor Ryan McMahon George Foster Righty guys box to righty guys next up we got tops chrome sapphire Tops chrome sapphire still 19 to go on that one.  There's a Jim Palmer mini diamond Orioles, there's Woodruff to 250 this one is gonna be yellow yellow ray wave Ozzy Smith the wizard Cardinals refractor Albie's Triple braze pack there extractor rookie.  Say Miguel rose Rojas I like it Scary over 60 or about 60 Kilmet 3 Howl over passing. I like it the 299 we got Tori Hunter. I Think how will have a good game today for sure bears defense hasn't been a strongest against the past Yeah, Jim Palmer, there's another Jim Palmer refractor this time finding the gyms Yeah, no it happens. I don't know a Danny might be now Daniel might be a after last weekend geez After Monday night There's a yellow Zanino ray wave to 250. There's a Jason Hayward refractor Yeah Yeah, they played well man taking Philly to OT is not anything to turn your head up at Geoledo. Yeah, man. At least you uh, you play well against Philly and probably play pretty well against other teams There's so 100 for the Guardians gonna be Larry Dobie on the fuchsia Gossman, there's a wander refractor rookie for the rates. Alrighty guys two down Box number three. All right guys. Let me just a second here in just a second Thank you Nathan grabbing a spot in our tops chrome coming up next Scott 18 to go nine 18 to go now guys One moment. Yep 2022 sapphire five box are coming up next All right, all right guys appreciate y'all let's keep it going Let's keep it going. Good luck. That's number three. There is a Orlando sepata on the black and white mini dime Pedro There's a to 75. That's a um rose gold Lou Boudreau for the um Guardians 75 Yes, I believe so slap no uh, no autos in 2022 chrome quarry cluber for the race quarry cluber for the race There's a rookie cooper Hummel extractor Alrighty guys tops chrome sapphire coming up next Let's get some spots going on that. Thank you. Uh, Yolanda grabbing a spot and select basketball Low on spots on that one There's a back and white mini diamond Jackson coar This one is to 100 a pink atomic of marcos deep lawn rookie orioles Say tj fridal refractor rookie face face face Really you got a super that's awesome. The sapphire supers are great. William Smith or will smith William will smith their Dodgers Being a little formal with mr. Will there William Smith There's a um jonathan india green to 99 ones for the reds Yeah, I don't know what that was refractor Alonso always got to find appeal Alonso say Joe Ryan um mini diamond cunha there's a blue for the um The Giants blew mini diamond to 199 willy maccovey a dolus Fractor jesse winker do it for box number three Alrighty guys box four tops chrome lights rights box number four 19 to go guys tops chrome sapphire 18 to go. There's pudge on the uh black and white mini diamond rangers who drove on To 199 we got a julio nice one there for the mariners Blue mini diamond julio to 199. That's a good looking card Nice julio. Thank you tack chun taking one of our um select select basketball We are close on select We are close Got four to go four to go select basketball. Thank you guys Next one up is 18 to go on tops chrome sapphire got a rookie kurtis terry refractor for the twins deakman Louis heel There's a x-fractor louise garcia larry walker He's getting there Matt brash on the mini diamond Old brock purdy. Could you do that on arizona? Anytime andrew ellis I don't know. I don't think so. I don't know I don't think so He's in a perfect situation. Definitely. It's a 250. We got luscious fox rookie ray wave I mean, I can't can't be marked against them that he's Got drafted to the right team I know I know a couple of you wouldn't do it with the niners. Yeah, I know a couple who wouldn't do it Even with the niners There's a aqua lava that one's cold and long to 2.99 brewers the decky Fractor al lopez Come on. Let's see some low numbers Daryl strawberry That's 18 to go break it next got some tops chrome sapphire alexander wells on the rookie mini diamond Cal bradish wongan Blue is going to be harrow banes white socks to 199 robby ray refractor rookie jackson reeds brew crew box five Good luck here guys halfway Platinum anniversary light. This is number four random team style Aussie albies on the speckle There's drew jones on the blue to 199 Justin furlander don drysdale on the mini diamond Mini diamond luck guys. Good luck Thank you. Slat taking one in a tops chrome sapphire guys 17 to go now 17 to go breaking next little five box sapphire This one is the 250 gonna be max crannock rookie yellow ray wave rookie brice elder Hey, let's do it slap. Let's do it man. We're down. We got one super today I'm ready for another. I'm ready Sean's ready. We are ready There's a steven kwan nice one there blew a pattern to 199 little rookie for the guardians Fractor scott roland. There's a mini diamond david comb yankees mini diamond brandy woodruff Thank you arcadius taking a spot in select. I think three to go on select basketball guys not a lot The 250 we got mark burley for the white socks yellow ray weight Cory seager refractor X factor is jeter So now the captain for the yankees yogi bearer All righty guys three to go three to go All righty guys 17 to go We are gonna do a silver pack with every spot here guys not including the ones already purchased here 17 to go guys. We're adding a silver pack for 54 99 a spot Adding a silver pack for every single spot purchased including the ones already purchased guys. Thank y'all Let's get this filled up. Let's rip some top chrome sapphire We will do a silver pack with every spot purchased in this one Appreciate everybody who's already bought in as well be getting those for you guys as well Thank you. Thank you guys 17 to go breaking next There's a ichiro on the uh mariners black and white mini diamond josh low rookie That's the raised rookie i'm looking for here josh low there's two 150 josh low Speak of the devil on the uh speckle rookie for the race Well josh low Kid's good man It is good his brother plays for the rangers too. Nate Say you could tell martyre fractor dog for the dvax x-fractor rookie josh winder twins Rinteria it's a name I haven't seen in a while Edgar rinteria There's a enus slaughter on the um mini diamond And again guys 17 spots left in our um tops chrome sapphire each spot purchase will get you a um silver pack with the order guys Appreciate y'all That one ripping next To 199 we got a edward or rudriguez tigers Now k-line 54 99 per spot will get a uh Silver pack per spot purchased You guys get multiple to get multiple silver packs. There's a nice hulio, uh basework Hey, thank you slap. Thank you 16 to go now guys 16 to go Hit that one breaking next say cal working jr mini diamond Kirby pocket brandon belt and thank you slap Say clayton kershaw yellow ray wave that one is to uh 250 Cinder guard grossman or fracter of gene sagura joe ryan writes all writes It's a lu garig that one speckled a 150 garig yankees There's bow flows fracter george kell Steve garvey and phil risotto risotto Say frank thomas mini diamond The big hurt sack wheeler stevenson box number seven Good luck. Good luck guys And guys every spot will get a silver pack including the guys already purchased. Thank everybody who has already purchased Thank you. David grabbing one and select basketball a bunch of emails just came through at once. Thank you sam grabbing two in choice My boy peter taking one in sapphire. Thank you peter Dustin grabbing the grizzlies and contenders optic anthony grabbing sat or uh select Raymond grabbing select and larry grabbing two in sapphire. Thank you guys Thank you guys down to 13 13 to go each spot will get a silver pack each spot purchased There's a hunter green rookie on the uh black and white mini diamond That's who can throw some heat to 199. We got ralph kiner on the blue blue mini diamond pirates You got two more breaks after this one. Yeah, it'll be after um after our tops chrome sapphire frankie montas Stanton We are a little behind on the schedule filling up breaks. So um, I don't know exactly when don't know exactly when X-fractor clayton kershaw next break only takes about 20 minutes though. We still have to fill up a couple more spots Two girls one shan that troll got a uh got a uh mini diamond tom siever That's gotta be a troll Unless his name's shan To 75 Um, this is frankie lindore on the um On the uh rose gold We have a randomized before the breaks john Um, we run a randomizer random.org. I'll I'll share the screen as we run it And then we'll line up our teams or do one randomizer for the teams one randomizer for the um names of the people in the break So we'll uh, we'll have all that showing on the screen and then line up everything and see who ever he got Eddie murray on the um, yeah sam had some issues on monday or Tuesday Yeah, this guy's keep kept coming back. Say green rookie erin ashby greenway um, 299 nick alan big dumper silver eric davis Thank you. Omar taking some uh, some uh, pokemon personals 13 to go guys 13 to go No, it is it is man.  Thank you. Thank you guys 12 or 13 to go way over halfway on that one Keep it moving guys again every single spot purchase. Um, even before we set it We'll get a silver pack included in their order Every every spot you guys purchase get one per spot Thank you. Thank you guys helping us fill up box number eight hero platinum It's mini diamond robbie grossman urban To 100 this one's going to be jt romuto for the fillies Neatomic fracter yachty JD martinis X fracter craig bijio Astro sneaker horner Jared kelnick There's a mini diamond carlos rodome giants 13 to go guys 13 to go breaking next tops chrome sapphire There's a frankie montos mini diamond for the ace raffkeiner jake the grom 299 we got a rookie for the reds tj fridal on the green wave you darvish glass now Eckersley look at that mustache there we go You go denis You go denis It was always Kyle mewler not as much as roly fingers, but Curly cues going there There's a bob lemond. Eckersley was straight There's as much stash you can fit on the face.  There's a rose goldfield negro for the brapes 75. X was a fashion. It's a rotaru fracter Thank you dustin taking a spot Two spots. Thank you dustin 11 to go guys 11 to go breaking next Let's get some tops chrome sapphire going again guys We'll be giving away one national silver pack per spot purchased here Including the spots purchased before we set that jesse winker That one is to 20 to 99 star Joel jake mires in last pack Magic Johnny bench and ladi senior Alrighty there guys that'll do it for a tops chrome platinum anniversary light eight box break number four random team style Thank y'all we'll get those cards right out to you Next up is tops chrome sapphire last baseball break the day then we'll get going on some basketball then some football


The increasing price of and demand for energy has led to the development of intelligent strategies for energy tracking, control, and conservation. One such strategy is demand side management, which seeks to reduce energy consumption by adjusting customer energy consumption patterns and responding to energy-saving algorithms and directives. To this end, the Internet of Things, IoT, is being used to create a smart energy management system for smart environments. This system combines an energy controller with an IoT middleware module to monitor and optimize energy consumption from air conditioning systems. The energy controller collects data from multiple devices and sends it to the cloud server for processing and analysis. The system is then able to make decisions about when to turn off or adjust the settings of air conditioners depending on the ambient temperature and operational dynamics of the building. The system was tested in four buildings and demonstrated significant energy savings of up to 49%. These savings were achieved by optimizing the energy consumption of air conditioning systems and providing real-time monitoring, advanced algorithms, and user-friendly interfaces. This article was authored by M. Usman Saleem, Mustafa Shaker, M. Rehan Usman, and others. We are article.tv, links in the description below.


Hi, welcome to the practical session for quality control in the Galaxy Training Network. My name is Andrew Losdell, biopetition based in Melbourne, Australia. We're going to get started straight away, so I'll just start by sharing my screen. And here we have my screen. I'm on the Galaxy Australia server, and your server may look a little bit different, but use whichever Galaxy you're comfortable with or you have access to. Now the prerequisites for this course are a basic knowledge of Galaxy. That's not much more than knowing how to log in, run some tools. And what we're going to cover today is a fairly standard and straightforward part of bioinformatics, which is looking at the quality of next generation sequencing reads. I'll just quickly switch to the notes, which you may have in front of you, and we're referring to this throughout. There are challenges in the tutorial that you can try. I'll answer a few of them, but I'll leave quite a few for you to do in your own time. This lesson has expanded quite a bit from previous years. And so we're going to be covering four different kinds of sequencing technology and how to assess the quality of those. Whereas in previous years, only about two of the technologies were covered. So there are some parts of the tutorial that in previous years, the tutorial video goes into quite a lot of depth, in particular the fast QC output. And so if any of those bits you want more information and more description that the company's the notes, I encourage you to look at the 2021 version of this tutorial video. For this one, we've got four kinds of technologies. As I said, there's single-read reads, paired-end reads, long reads from Pac-Bio and long reads from Nanopore. And so we're going to go through all four of those. We'll break it into about two sections. So we'll do the single and the paired-end. And there'll be time for a break, which will also be convenient as the Pac-Bio data takes a little bit of time to download. Okay, so this tutorial is all about sequencing reads and understanding how the reads that come off the sequencer have some quality associated with them. No sequencing technology is perfect. And so there are different kinds of errors and amounts depending on the kind of technology. And it's important to understand what these errors are and to see what you need to do depending on your analysis, whether you need to filter or exclude or just identify errors that may affect your downstream analysis. So the best way to get started is to look at some sequencing reads and see what they actually look like. So if you haven't already, let's create a new history in Galaxy. I'm going to call my history quality control one. And I'm going to download a file. So from the note, you'll have a link to a fast queue file. And we'll inspect what a fast queue file is in a second. What I want to do is import this. It's hosted on Zenodo. So I'm going to go and upload some data. I'm going to use paste fetch data because we've got the URL. And we can just paste it in here and then click start. And there's quite a small sequencing file. Shouldn't take too long. See it's finished. And if we click close, we should see that our history should update quite soon. And it will be downloading there. And there it is. So this file name is specific to the study that it came from. So we're just going to rename this and call it reads. And we'll try and type it currently. So now you can see it's been changed to reads. So we just imported a fast queue file into Galaxy. This is very similar to what you'd get from the sequencing facility. So let's click on the view icon and have a look at what is actually in this file. So it can look complicated. But the fast queue format is almost 20, 30 years old. It's relatively easy to understand once you have it explained to you. So each read that comes off the machine is encoded by four different lines. So the first line always begins with an at symbol in the fast queue format. And then followed by some information. So that's the first line there. The second line is the actual sequence has come has come off the machine. ACs, T's and G's typically third line is a spacer line. It always starts with a plus sometimes it repeats the information from this line. But sometimes it's just the plus like this. And the fourth line is probably the most complicated line is the quality information stream. So this is for each corresponding base here. In the same position is a score to let you know how confident is the machine. This is correct. The machines that came from the companies changed how they encoded. So sometimes letters meant one different quality and then later on they meant and another. Fortunately, things have standardized somewhat nowadays. Unless you're looking at historic data often think will be an aluminum 1.8 bus format. But if you're ever dealing with a mixture of data always should check what the origin of it is. So those notes are there. We go back and keep looking. There's a few questions in the tutorial. So a quick second to have a look and answer some questions. So have a look and see which character corresponds to the worst score. And what is the quality score and accuracy of the third nuclear time? Okay, so if I look at those questions I was quickly going through the answers.  And that up here corresponds to the exclamation mark ASCII code. In terms of the other questions when we look at the first sequence, the third nuclear height is a G. And so if you look at the third position in the quality, it's also a G, which admittedly can be a bit confusing times. But in terms of quality score, a G, if we go back to our notes, a G is there. And you can see that actually corresponds to 38 Q. Okay, and a score of 38. So the final question is about what is actually the probability? And what is the accuracy of this? And so you can look at a third quality score Wikipedia page for more information, but essentially each time you go by about 10, you increase almost an order of magnitude in terms of accuracy. So 38 is somewhere between 99.99, 99.99% accurate. And as you get more into bioinformatics, you'll see that often, pointy is usually kind of a rule of thumb about where you want things to be in the short read era. But as we'll see later on in long reads, currently the quality is generally a bit lower, which is a bit of a trade off for the longer reads if you get. But there you go. So that's looking at just a basic file and seeing how it works. But admittedly those ASCII characters can be a little bit confusing. So we're looking at a file, if you're looking into the command line or inspecting like we do in Galaxy here, it's not really that intuitive. So we're going to use a Galaxy tool now. The Excel is one of the authors on called fast QE, which is a bit of a fun tool to try and translate those weird characters into something a bit more visually appealing and instantly recognizable. So this is the first tool we're going to run on our data. It's called fast QE. And so we're going to go here and search for fast QE and comes down here. It's the only one with emojis in it. So it's easy to find. And so as input, it takes a fast Q file, in this case our own called read. So let's click on it here. We're looking at the scores to show. It can tell us the quality, either the minimum or the maximum at any position in the read for all the reads in a file. So we're just going to choose the mean this type. So let's get rid of minimum maximum and click execute. That shouldn't take too long. And when it's finished, there'll be a HTML file that we can look at. Okay. And after a while, you can see that the results of fast QE will appear here. So we can click on the icon to see what the report says. And hopefully you agree. It's a bit more visually appealing. And what this does is it summarized across the first position, the second position, et cetera, across all the reads. So rather than looking at one read at a time, looks at all of them. And the emoji essentially is meant to convey how high the quality is. So we can see at the start of the read, the quality is generally quite high with the smiling faces. And towards the end of the reads on average, the quality starts to diminish. So you can see in the notes, we've got how the Fred score, the ASCII code and the emoji correspond. As an aside fast QE, you can use it on the command line as well. And you can customize these emoji for whatever purpose you want to convey. So a quick question in there is, what's the lowest mean score in this data set? And so using the notes, so if you go down to the table here, you can do seconds to quickly work out what is the lowest quality. Okay. So have a quick look and have a check. Pause now if you need some more time to answer this. But if you have a look at the guide and even just sort of using the emoji, we can see that actually the sad cat is the lowest score in here. And that corresponds to a Fred score of 13. And as you can see, it stores the end of the sequence. And so as the machine goes on, that's relatively typical. But again, you can quite see. And so we'll see later on what we would do with this diminishing quality and whether there's anything you need to do to modify the data. Now, fast QE is a fun little tool, but it's typically not used in production. And one tool that precedes it and actually has a long history in bioinformatics is fast QC. And so this is actually what you probably would use if you're doing data lab bioinformatics and it's a really standard part of many pipelines. So just like fast QE, we can just search for it. But fast QC instead of E, and fast QE is named to kind of run with fast QC. And it will do the same thing, but I said it much more comprehensively. So I'm going to choose some reads from our history. Reads is the only thing there. We can leave the defaults. We'll explain later on as getting the notes are quite comprehensive. I wanted some of these things do, but we'll leave the defaults and then just click execute. And hopefully it won't take too long to run on your machine and you'll get some results. And we'll look at the HTML in a second. Okay. So my fast QC run has finished. So there's two parts. There's raw data and the summary web page. Let's click on the summary web page to see where it is. And this is a typical thing you would do in bioinformatics. And we might just see, make my screen a little bit bigger so we can see the full plot. Or I might take advantage of the Galaxy overlay. So if I click on that, we can look at this in its own window. And that's a typical thing to do. So one of the questions is what kind of encoding and so fast QC will serve basically with some heuristics. I think about what it is. And so I can tell that it's sangria-alerminal 1.9, which again is going to be the most common addict. Some basic statistics. 112 sequences in there. The length is 296 base pairs. And so this is kind of the main fast QC plot that you'll see in many bioinformatics talks. And if you're sort of comparing to fast QE, fast QE shows the mean in each position, which is essentially this blue line here. So you can see that fast QC is more comprehensive and gives you the whole range of values at each position. So you can sort of see, although fast QE summarizes it at the emoji level, what we really want to see here is that the quality is very strong and high towards the start of the sequences. So it starts off sequences one to 10 and then starts spinning them. But then towards the end of the reads, you can see that quality is quite variable. There are still some very high quality reads, but also some very low quality reads and it diminishes over time. As I mentioned at the start, the 2021 version of this tutorial goes into a low depth about the fast QC outputs, and both that and the nodes are quite comprehensive. So if you're not familiar with the tool, I would really recommend going through those materials as I won't cover them in as much depth during this recording of the video. One thing I will look at, so you've got basically these are the summary reports here. Another thing that's interesting is the adapter content. Okay, and so I said we look in the adapters, we do sort of see some kind of adapter signal from this next era transfer as a sequence and the rest of the fast QC, we're going to skip for this recording, but again, look in the video, but we're going to skip straight to trimming and filtering, which is about how do we deal with the consequences of the quality scores or these other QC such as looking for or adapters. A lot of the other things are often just warnings and most of the time, you can see on the left-hand side here, there are some warnings, some errors. They're not necessarily always critical, but they can just represent a clue that there might be some technical issue with your sequence. So as you get more experienced, you'll often look at these, but again, it's always a, you won't always throughout the whole experiment, but it's important to look at these and then understand what kind of quality landscape you're dealing with, but I said we're going to go straight down to trimming and filtering of short reads in the materials and this is about dealing with the results of this QC check that we've done. Okay, so throughout filtering, what I'm going to do is I'm just going to minimize this report so we can compare so we're going to do some quality trimming and filtering, I'll explain when that is in a second, and we'll compare the reports before and after we do our next step. So let's just minimize that. I'll refer this back later on. So the two kinds of kind of quality assurance that you can do at this stage is trimming and filtering. So trimming is taking the actual sequences for low quality ones or adapters and actually removing them. So keeping some of the sequence intact, but modifying it to remove serious things. The second way is to filter. So not even include certain reads. They could be ones with a low mean quality score, but I can be too short or have too many ambiguous bases, which is usually represented by an N instead of an A, C, T, or G. And so the tool we're going to use to do that is called cut adapt. So it's like everything else. We'll look in our tools, start searching for cut adapt. That should come up shortly. So cut adapt, remove, adapt the sequences, fast queue, fast A files. So the first question of this tool is a single end of pattern. Single end files for the moment. We'll look at paired end reads later. And the reads again, the probably the only reads in our history. So they come through there. There's a couple of things. If you look at the notes, there's a certain adapter sequence that beforehand for the purposes of the tutorial we know is in there. And so you need to copy and paste the adapter sequence. And when it says insert three prime end adapters. So click here, enter a custom sequence. I said there. We don't need to give it a name. We only given a single one. So we're going to look for these kinds of adapters to clean up our reads. We're also going to ensure that reads are at least 20 base pairs long. So if we still scroll down to filter options, you can say the minimum length is going to be 20 base pairs. And look at the read modification. We have a quality cutoff. We're going to say we don't want reads to have a queue score lower than 20 on average. So again, it's going to get rid of some of those really low quality reads. And for our output, we're going to ask for a report from conduct. So once those three things are selected, execute and we'll revisit this when this run finishes. Okay. I hope mine's finished just before I get going and turn off the window manager for a second. So we can see this in the classical view. And so cut adapters given there's two outputs. We've got the read output and the report. Look at the read output. It's quite text based and it's telling you what was happening to the files. Whereas the report is going to be more comprehensive. So there's a few questions in there about this energy range that contain adapters. How many removed or is it the quality? So take a few minutes to look through those. Okay. So pause and finish those questions. You haven't already, but let's have a look at the report. So click on report and look at the questions. You can see that they're essentially in here in the top of the, in the summary. So there's any of the reads with adapters is there. In terms of quality trimming, you can see that this percentage and in fact, no reads were too short. So again, this is the entry information. You can see what's gone in and what's gone out. Next thing you can do is we'll use both of our previous tools for checking the quality of fast QE and fast use and look at the modified data rather than our original data. So let's go back fast QC type of emoji because it's the only tool with emoji in the word in the name. And this time we'll use fast Q. We use the code adapter rather than the original. We'll get, we'll just do the mean again. So it's the same and we'll execute. And so that should finish pretty soon. And we can do the same for fast QC while we're waiting. So just fast QC, do the cut adapt and run it. And so wait for both those two jobs to finish. And then we'll have a look. And so I'll pause until that's done. Okay. So both of those are finished. So we're going to use the scrapbook feature again, which is this little window manager icon here. And we had our original fast QC data. So let's look at the fast QC on data six, which is here. And that's the web page. HTML report. We'll go across here. Sorry about that. Let's just minimize these. Let's just adjust these windows. So you can see them side by side. So look at the basic statistics, both of them. So fast QC, let's put the original data on the left. And you can adjust the data on the right. You can see the file name is different. But it's same number of sequences. Remember they weren't, none were filtered out. But the sequence length varies. So and the GC content, because we've trimmed these. So some of the sequences have been cut by the quality of all adapters. But there's two main things we should look at. So let's look at our per base quality plot. So there we have the new one. Let's go to the original. So here's the original. And we've sort of the quality diminished towards the end. And when we look at the new one, we can see that it a lot higher. I think it's still diminished towards the end, but we've clearly gotten rid of some of the quality reads. So we can also look at the adapter content. So this is the new file and the original file. So remember we had adapter content here in the original, but after using cut adapt. Oops, I've using cut adapt. We can see that. Otherwise that kind of doubt. And go down to the adapters. You can see it's no longer there. So it really has been an effect. And just for completeness, let's look at the fast QE. So we can see that in the original, again, the poor quality, and then it's been reduced on average. And so we can see that our trimmed and filtered out data is a higher quality than our original. And so hopefully any inferences we make on those later on will be more robust. Now that was just my short reads. And the predominantly, probably it's going to be paired in, but you'll see in the wild. So now we're going to look at processes in some multiple datasets to having two fast QE reads. So paired ends, one from one end of the fragment, one from the other end. And we'll see how Galaxy handles those from a quality point of view. So if we refer to the notes, we'll see it when out to the processing multiple datasets out of the tutorial. And we're going to get some two new datasets. So there's a pair of ends of the same set. How about we'll hear from this, what's the story of the note? I think he's copy. And I'm going to go back into Galaxy and download these in much the same way we did the original single end data. So let's switch back. I'm going to upload data. Again, we're going to paste in fetch data. And we're going to paste in two lines here and start and that should finish relatively quickly. Let's wait for that. Come back. Okay. Now those are downloaded. You can see they're just fast Q files again. Still got the overlay turned on. That's a large file. So it's only showing a few, but again, we can see these are just short reads different to our previous example. This is the plus line does have the same information which I talked about. It wasn't in our first example. And you can see in the order that the ID is the same. Reach one. So those are our files. But come on with the quality. We fast QC can read them both together. So we'll click on fast QC, click on multiple data sets. And then control or command. But if you're from Windows or Mac, you can choose both again. We'll leave the rest. And then we'll execute that. And now we're actually going to look at another QC program which is called multi QC, which is really good at collating QC results from different kinds of programs. And so it's, you don't understand sort of the raw output of fast QC and can use its information as plots to sort of collect things together. Which is really nice when you've got paid in reads, but you want to do that. What happens to both of them at the same time. So we'll let this finish.  Okay. So fast QC is finished on data 11 and 12. When you use multi QC, which again is available in the tools. When it loads. And then multi QC is good at aggregating results from different kinds of programs. So we're going to do that. And then multi QC is good at aggregating results. By loading the tool, what we're going to do is we're going to choose both of those fast QC. Now we don't necessarily need to get the HTML reports. So the same multi QC understands the raw data from fast QC and it will pull in the data, pull in the plots and sort of create its own plots. And so what we're going to do is run that in a second and look at the output of multi QC. Okay. So this is the interface. And so we're looking at fast QC. And I'm going to say fast QC output. That's raw data. So the raw data files. And then we're going to choose the two raw data fast QC results on our GSM sample. That's two there. And then we're going to execute. And we'll see what the web page looks like on multi QC and see it's running now. Now I'll just pause and come back when it finishes. Okay. And now that's finished. Let's click on that web page view and have a look at what it looks like. And so this is a multi QC report. And so you can see it starts with general statistics and it's pulled from each of the fast Q files, send it to because it's GC content. A number of sequences. So again, it's just pulling information from the fast QC to show it anyway. But it's a nice little way of analyzing it. And here it's loading and it's going to combine both those samples together. So we just wait for it to finish. Okay. And with the report load, we can now start to scroll through as you can see. Our reads here separated. So you can sort of see how many unique versus duplicate reads. And then we get down to the plot server. It's similar to what comes out of fast QC by default, because they've been overlaid and took each other. So the first thing we can notice is that forward read the underscore one is in general a high average quality than the two. And this is kind of typical for parent reads just because the way the chemistry works. So you can see that the second reads are often of a lower quality and nice thing can zoom in, which is a great feature of multi QC and multi QC combined with Galaxy is a great, great combination. Looking at other plots again, each of the samples overlaid, actually we have lots of samples in this scenario. You can see them all together. And the per base sequence content, the orange here is a warning and readers have failed. So before we had a warning here, the quality being a little bit lower, but it's per base sequence content in the two is very, very, very high. And so there are some quality issues with here. So just like with the single end reads, we can use cut adapt to modify the paired end reads. And so next what we're going to do is do the truing again. So again, let's bring up cut adapt. And because they're paired in reads from almost all purposes, you want to keep the pairs together. So part of one of the pairs is filtered out. You'll typically filter out the other one as well. And so it's why it's important to do it on my program. It's a way forward reading of one, which is the reverse reading that we're doing. So it's quite important to get these right here. And store one for the forward, under store two for the reverse reading. The read one options. If you do have adapters, it's found in those plots, then you may want to scale them up. If you look at the adapter content, see both past there was no adapters really found. So we don't have to do it for this. Read two options. Again, we're going to do minimum length of 20 or cut off 20 red score again. And the output we're going to have a report just as before. So let's execute. And again, it says cut adapt knowing about the paired in reads and treating them accordingly. Just wait for that to finish and come back shortly. Okay. That's finished. Let's look at the report. For the readout with you, which is the result of the training, but the report tells us what happens. You can see 1.4% were too short and 98.6% were written out. Yeah. The quality of trimming to get 2.5%. And so any and we get 96.7% of the ratio. So we've done a bit of tidying up. Have that will be more robust for further down the line. Other kinds of assessment. So again, there's more questions in the tutorial. I leave them to answer in your own time. Have a look. And again, one of the things that cut it out is the documentation is quite thorough. So it's worth reading that to understand how you do it. But to summarize the audience, these first two parts is that we could really see the difference in the quality when we do some quality assurance checks. So we've got tools to help us visualize it and then tools to help us modify our data to have a higher quality subset to use in further analysis. Like with all reproducible research, you don't want to modify our original data. So it's good to have the original data and then the process data so you can compare and go back if you need to revisit or change the settings. And so that's the end of the short resection. And now we're going to shortly move to the long section. Okay. So we've finished the short resection. We're going to go through a little bit of the idea of how the quality scores work and a general approach to cleaning them up. Now long reads are a bit different. It's the name implies they're quite longer, but also the quality was different. So how we deal with them can be different. So let's start a new history. Just so we've got a bit of space in our history. We don't get confused with our short reads. So I'm going to create a new history. Let's call it quality control. So long reads. I'll have a nice blank history there. And also if we go back to the notes, we're going to be at this section here. So long reads. And we're going to use this data file here. And this download can be quite long. So what we're going to do is go back to our history. Going to go upload data. And let's paste in fetch data. And we're going to paste in on there and start to download. And this will appear in our history here. And new part two long reads. So I said this could take a while. So great times go get a drink, stretch your legs, and we'll come back for more of the second half into long reads looking at quality and next generation sequencing. See you soon. Okay. Now that's downloaded. We click on it just like in our short reads. It's a fast queue file is compressed, but we'll see if this, it looks a bit different. And that's just because of the length. So you can see that we can scroll across. These are very, very long reads. And again, the quality information is here. So nano plot is a program. A little bit similar to part. You see is a sequence quality checker, but is more towards long rates. And particularly nanoporbid books with pack bio as well. So we've got nano plot, the file we'll choose will be this sub sample from this pack bio read that we've got. And the only options we're going to do is we're going to customize the plots. We want to get a bivariate plot in the KDE format and also get the dots and do an Instagram of n 50 marks. We're going to say yes. So let's start that. And when it's finished, we're going to look at the HTML output. So pause for a second. And we'll come back when that finishes. Okay. Now that's finished. We can look at the outputs. So now what's got individual stats and filtering, but the HTML report should collapse at all together. And this is a bit more visually appealing. So let's have a look at that. So some summary statistics, the number of reads in 50, the mean quality, all in text here, but then also there's some nice plots as well. We've got Instagram of the read links. So they can say about 18,000 here is the mean. And after a lot of transformation, we can see where it is. Now this isn't necessarily necessarily that surprising because Hi-Fi has a bit of a size selection step. So it generally restricts things to the thing that you're interested in. But again, quite a nice little program interactive using plots. And this is read links versus average quality. There's no real kind of correlation there. So the notes are quite comprehensive on these. You can have a look through and see what each of these is used for. And there's a couple of questions there about the dot plots. And there's something unusual with the Q scores. I should have a look and take a few minutes and then try out the question there and see if you can get the answer. And another optional thing that we might do now, see how long it takes is we just might run fast QC on this data and see what happens. I'll just load up fast QC. And we're picking this and let's get it. So that will take a little while. We'll come back when that's finished, have a quick look, and then we'll look at some other long reads from Nanopore this time. And maybe we can have a comparison and see how the quality changes between the two. Okay, and fast QC is finished on that data. So we can compare and see what does fast QC tell us. So fast QC still works. You can see the binning now is getting quite large. And overall, the read quality is quite high. There's again some variability. Now we have to adapt a bit again. The fast QC was built a long time ago. Well, for long reads, but it's good to see it's sort of still hands up. Although you would, as I said, typically use more modern tools that are designed for long read, long read data. But leaving your own time to compare some of these results with the Nanoplot results as well and see, which do you prefer? Why? Why not? And so the good thing about pipelines is often you can include both. If there's one you prefer, just a small part of and include it. Or like I said in the previous part of the lesson, using multi QC, you could combine things. Okay. So that's the end of the long read from bio. Now it'll go long ways from Nanoplot, which is a slightly different technology. And then the high five is, you'll see in the notes, it uses a circular process to go over read over and over again. And so that way, that's how to get such high quality. We'll now look at Nanoplot, which doesn't have that. And so we can see that the Nanoplot, depending on the chemistry, is a much lower level to high five or to short reads. So what we're going to do is we can create a new history for this part as well. So let's do this. New history. Now we'll call it quality control three again. I hope you're a better type than me. And let's call it now. And like before, we're going to get some sample data. So in this case, we're getting two things from Nanoplot. So it's, there's some links in the materials to Nanoplot. And hopefully you're familiar with the way that it uses electrical charges, things across across as DNA or RNA passes through a pour and that difference electrical charges, what's called base called, and it's converted that electrical signal into ACs, Ts, and Gs. So it's a totally different way to the aluminum sequencing. So this data is already been processed into fast QC or sorry into fast Q files. And also we're going to have some summary data. So here in the notes, we're down to Nanoplot. And so these are the files that I'm referring to. So one is the base called fast QGZ. So it's compressed and in the sequencing summary text as well. And so our first step is to upload it.  So it's quite on the bottom there are files. And then let's start downloading those. Those that'll take a little while, not as long as the other high-five data. And so we'll pause and come back when that's finished for you. And we're going to run high Q, high QC or Pico QC, I suppose on that. So I'll just pause for a second and come back when your data is downloaded. Okay. Now that's downloaded. We'll use the Pico QC. Now Pico QC is a little bit different. So rather than using the raw data that comes off the machine, Pico QC is designed to really work with previously base called things off Nanoplot. It's using sort of sequencing summary files that come from the base calling program. So it is a little bit different, a little bit different to the way other programs work. That means it's pretty easy to run. We just keep pointing to the sequencing summary text and we'll leave all out the defaults. Again, with all these tools, have a look at the manual if you're interested in what the other options do. Let's start running. And once that finishes, we'll inspect it and have a look at what the results are. Now that's finished. Let's have a look at the Pico QC HTML report.  I'm recording this on a Friday afternoon. So even if you just get tired from the week, I just pause the recording and come back. So you don't have to listen to any more of my awkward space filling banter. Okay. Now that's finished. We can look at the Pico QC report. Now you can see how many reads. You can get any information straight from the sequence or so, how long it took. So it's not just the actual reads, but it's things about the actual experimental process. Right now these, there's no barcoding around me, but if you had multiple barcodes that would be in there. And we have a look at the status of the reads. So how many pass, median read length to thread score. See some questions in the material about how many reads do you have in total? What's the mean in the median? And so we can come down here and have a look. Again, my text is a little bit squashed. If you are, you can use the scrapbook feature if you like. I don't know if we'll be this slow this time. I think it a bit bigger, looking a little wild to load. Just leave that there. It might be just a bit slow. So I'm going to look at the basic called the thread quality. So again, one thing you may notice comparing to short reads is the quality is generally a lot lower. So the maximum here is about 12. And you saw before we filtered anything lower than 20. And that's really part of this trade off at this current point in time between the length and the quality. So you get much longer reads and we can do amazing things with them and putting, you know, resolve unique ice reforms if you're doing RNA seek or put together structural rearrangements and the cancer point of view that you might not be able to see with short reads. And so everything's got a trade off in life. And this is this is one of them so that the quality is a bit lower and we don't have that circular process that we did with the Pacific bio high fly reads. Can you come get a pot here of the length and it's an interactive plot you can zoom in. And if it all reads and also just look at the reads that pass QCC so you can see actually all the reads are down here. Look at the Fred score and so in a lot of Fred scores here they've been cut off. So nothing lower than seven seems to have been included and you look at the output over time. So again, it's got experimental information in here and you can even get down to the read quality over time. So it tends to on average stayed pretty, pretty high around 10 but the variability the whole time through and you can see the channel activity. So again, the actual pause on the on the nanopause is the channel ID and you're looking at the experimental time. So you can see how long they were applied for. So again, really quite interesting program. We'll see where else that the nanopause data sits. And again, the materials for this lesson have a bit more information about how to interpret some of these nanopause plots. As a few questions I'll leave you to do in your own time. And where this video has probably gone on quite a long time. So we're almost there again. We could do out of interest sake is we could look at fast QC and run it. So comparing these specialized long read quality assessment programs with the conventional or the old school, if you will program fast QC. So I'll run that and come back when has look and then we'll just get to some conclusions and then we'll be finished. Okay, so fast QC is finished. Let's have a look. I still got scrapbook turned on so we can view that and that looks quite different to our short read. So you can see from a short read sort of viewpoint the reads are all in the danger zone because the Q score is quite low. And no adapter content because we didn't necessarily have adapters in this section. And again some of the other box give warnings but we know it's a totally different kind of technology and even the sequence links you can see here up to 100,000 base pairs. So massively different kinds of ways of thinking about your data. And increasingly we're seeing a mix of the two approaches. We can still do some things with short reads quite well that we can't do with long reads. That may not always necessarily be the case but for now a combination of technology and analysis and economy means that short reads and long reads both sort of have their place I think. So if you've been following my materials you can see that we're almost at the end and I suppose to really sort of conclude or up to we really use this tutorial to look at the quality and fast queue files. It's the first step in lots of different kinds of biophanics analysis RNA-seq, chip-seq lots of other things following NGS. And we looked at a few different quality assessment tools so short reads we used fast QE. For short and long we used fast QC which is sort of the standard for a long time and then in long reads we looked at nano plot and Pico QC which are more specialized to the long read technologies. We also looked at the effects of trimming and filtering on short reads using tools like cut adapt and I suppose some key points that I would like you to take away from this lesson is that you want to perform quality control on every dataset before doing other analysis. So it's often your first step you'll just do it by almost by default. It's always important to assess the quality metrics and if you've improved the quality in a sound way to do that. Good to use these kinds of tools to check the impact of quality control so looking at the before and the after and there are also different tools out there. As with always with these materials if you have any feedback and there's FAQs here there's some of the papers that we looked at there's feedback please send it here. So this lesson has expanded quite a lot in recent years with the advent of long read technology. So whereas before we ended the short reads we're now doing a lot in this lesson and so any feedback on whether you think it works having them both together or we should separate them out would be welcome. You can start this tutorial and again in the sequence analysis package this is a good first step and you can now move on to other ones and into more advanced more advanced lessons in the Galaxy Training Network. So I guess I'll stop sharing now and finish by saying thank you very much for listening to this video. If you have any questions please reach out through the normal Galaxy channels and have a good week. Thank you.


For our first set of practice problems, we're given a graph and we're asked to find the coordinates of the center and the radius and with that information we're going to write an equation of the circle. So these are quite simple if you know how to plug the equation into our standard equation of a circle and we'll start by just finding this point on our graph. Now at the center of our circle, we're just going to find the x value negative 1 and we're going to count up positive 4 is going to be our center and next we're asked to find the radius and for the radius, if we're given a graph, all we have to do is count from the center either horizontally out or up and down vertically to the edge of the circle and in all cases that's going to be a measure of 3. And now we can write the equation of our circle by following the standard equation of a circle. Remember our x and y value is going to be the opposite sign of what the center values are for that coordinate. So my x coordinate is negative 1, I'll change that to positive 1 in my equation and at the same time my y coordinate is positive 4, I'll change that to a negative 4 and I set that equal to the radius and we have to square the radius and so the last step I'm going to leave the x and y values like that, 3 squared is 9 and this is the equation of this circle. Just a quick double check at the end, my x value is negative so in my equation it's positive, y value positive in the equation it's negative and then I take the radius squared. We'll do the same thing for the next problem, we're going to identify the coordinate of the center and then count out the radius of the circle and we'll just plug that into our equation. So my center of the circle if I counted out x value negative 1 and then I'm going down 3, so the center of my circle negative 1, negative 3, the radius of the circle if I start out at the center and then I can count out either left, right, up or down in all directions I'm going to count out a value of 4 for my radius and so when I plug that back into the standard equation of a circle I'm going to have x because this is a negative one I'm going to make that a positive 1 squared and then y, the negative 3 becomes positive 3 squared equals my radius squared and the last step is to just simplify that radius, 4 squared is 16.


Rich Picks Daily is an online community for traders to exchange smart, straightforward, and profitable investment ideas. And join us today at richpicksdaily.com. Subscribe to us on YouTube to learn useful stock trading secrets and discover the next 10-banker. Hi, how's everybody doing today? I'm your host Rich here on behalf of Rich2eLive with our very special guest, Jack Regan, the CEO of LexiGene Holdings. How you doing today, Jack? I'm doing great, Rich. Thanks for having me on the show. Hey, my pleasure. And we'd like to learn a little bit more about LexiGene Holdings. So LexiGene Holdings is a molecular diagnostics company that develops molecular diagnostic systems for pathogen detection and genetic testing. Can you tell us a little bit more about the technology you've developed and the markets it will serve? Yeah, sure. So LexiGene, as you just said, we're a molecular diagnostic company. I would say prior to 2020, the vast majority of investors out there didn't know what PCR was. And I think we've been sort of inundated with PCR testing in the whole COVID space right now. And so what we do at LexiGene is we take PCR. PCR is typically done in a reference lab. It sends off-site. It takes time to get that result back. What we've done is we've developed an instrument called the MyQ Lab. It brings PCR to the point of need. We often say the point of care. And so we've simplified a very complex technology made in a very simple ECUs box that can really be used across multiple market verticals. We've just mentioned coronavirus. We're certainly working towards the FDA. We'll get into that a little bit later on. But our primary market right now is actually veterinary diagnostics. And we're also looking at other markets like food safety testing, the contract drug manufacturing sector. There's a tremendous amount of sectors that want to do PCR-based testing. And our technology can really be used in any of those. Very good. Now what sets the MyQ Lab system apart from other rapid diagnostic systems currently available on the market? Yeah, so vaccine technology is unique in several ways. First and foremost, we are what we call an open access system. So what does open access mean? When you hear the word open access, think of the ability to customize the test. This might not be important for, say, strict COVID testing, but there are many spaces out there in research labs like academics, government labs, the contract drug manufacturing sectors that want to have control over what tests are done. And so we enable that through open access testing. And so it's a feature that currently isn't available at all in the marketplace. We are the first technology that is open access. So what this means is we have the ability to really define markets, really create new markets where previously people were forced to manually do PCR in a lab. And that is a fully equipped lab with people who are highly trained to do PCR. They can then swap that out effectively for a very simple, easy to use box where they can effectively hire a person with no technical background to do a very, very complicated test. So open access customized testing is a selling feature of our technology that's not available in any other technology which should help us really define new markets. The other unique feature is we are a flow through system that allows for us to process larger volumes of sample. And this allows for us to have higher sensitivity than other technologies in the market. So where is this important? Food safety, we're aware that the food safety sector is a big deal.  The industry is looking for faster, better, cheaper ways to do passage and detection on our food items, including the drinks. And so how do you get more sense of detection for food safety? In this case, it's not some animal or human that's sick. It's literally E. coli on a head of lettuce and how do you detect that? One of the ways in which you detect that is you process a larger volume of fluid and that drives your sensitivity down, which is a good thing. So those are two selling features. The third one is cost of goods. For us to manufacture are consumable. That is how we make our money. At high volume manufacturing, the manner in which we assemble our technology allows us to provide that a much lower cost. This allows us to get into industries that are very price sensitive and importantly have a very, very healthy profit margin. Now you mentioned that LexiGene just expanded its sales team and will focus on the veterinary market initially. You touched on that. What fueled the decision to pursue this market first and how will the MyQLab system help both vets and pet owners? So I founded LexiGene in late 2016 and I intentionally focused on markets that I felt were underserved and had great opportunity. That for me was not immediately human clinical diagnostic. Human clinical is certainly on the roadmap and the coronavirus pandemic has brought that to the forefront somewhat, but nonetheless, as a new company launching a technology for the first time, it's advantageous for us to go for effectively the lower hanging fruits and generate some sales. So for that reason, the vet diagnostics which has a lot of corollaries to human clinical diagnostics with the exception of the regulatory hurdle is a great greenfield opportunity for LexiGene. There's effectively no competition in the vet space. Veterinarians are desperate for technology. Pet owners these days are willing to pay anything to keep their pets, their family members, healthy and well. And so there's a clamoring on the vet side to provide better quality care for their animals basically rule in or rule out an infection and figure out how best to treat an animal given the fact that we have antimicrobial resistance cropping up and being more and more of a problem and that gets to the strength of LexiGene technology. If I didn't mention it before, not only do we do PCR but we do what's called highly multiplex PCR. Why is that important? We look for many different targets at once and for a certain disease states that can be caused by multiple organisms for say urinary tract infections. There's about nine or 10 organisms that commonly cause the illness plus many of those sometimes harbor genes that confer resistance to the drugs that we often treat these infections with. And so what we want to be able to do is provide a test of veterinarians and ultimately human clinical market that allows for veterinarians to very quickly identify what's causing the infection and inform them on how best to treat the infection. So if that animal isn't coming back into the clinic a couple of days later with the pet owner in tears saying, listen, fluffy here is downward spiral because they haven't been treated appropriately. And we have the ability with point of care genetic testing to provide informative data on how best to treat that animal. That's huge. People love their animals and they're willing to do almost anything for them these days. The MyQ lab for open access testing is another area of focus. Can you tell us a little bit more about the system and why it has the potential to completely revolutionize various markets? Yeah, so as I mentioned, open access is really unique to LexaGene. We are the only platform out there that is open access, easy to use, multiplex PCR testing. So our open access bin really is a catch bin for many different market verticals. We have say border crossing looking for our cultural pathogens coming in from New Mexico or say Canada. We have looking for pathogens that might affect the aquaculture industry like shrimp and salmon species. We also have things like contract drug manufacturing. In this past year, there's been a lot of focus on these major pharma companies like the Pfizer, the Moderna, the Johnson Johnson who are cranking out these vaccines. Where are those vaccines produced? They're produced in these organizations called contract drug manufacturing organizations. They have these massive bioreactors that literally can hold 100,000 if not millions of dollars of product. And it's very, very important for these contract drug manufacturing organizations to do proper QC checks on the raw materials. When they scale up the size of the bioreactor, are they checking to make sure there's not a contamination in there that's gonna bring down the bioreactor? And so what they're looking for are not human pathogens, but they are contaminants that can destroy a product and thereby the FDA won't allow it to be sold. So what are they looking for? They're looking for technology that's easy to use that can do multiplex testing like we can do. And that is very sensitive to effectively identify the contamination hopefully of a raw material before it even goes into the bioreactor. And certainly if somehow during use, the bioreactor gets contaminated by personnel, identify that quickly so they're not investing hundreds to millions of dollars in action to this bioreactor to have it all set in crash out and lose all that product. So the contract drug manufacturing sector is a sector within open access that we see a lot of promise in because our first sale went to a contract drug manufacturing organization. And so we've looked more and more into this industry. It is an industry that I would say is second, if you will, to veterinary diagnostics for us. Again, a non-regulated industry that we can immediately start selling into. And so for that reason, we see it as a fantastic opportunity for the company. That sounds great. Now I know a lot of our investing community is really interested in learning about your FDA emergency use authorization for SARS COVID-19 testing. Can you tell us a little bit more about that? Yeah, certainly. So lexigene views are a technology as a premium product and it is certainly better than a lot of the technologies being used for coronavirus tests after on the market today without a doubt. That doesn't necessarily, that doesn't mean period that the FDA all setting gives us a green path to go start marketing technology. We have a brand new system that has to go through many checks through the FDA in regards to our firmware, our hardware, our software and our chemistry. Everything needs to be validated as a completely new system because they've never seen this before. This is in contrast to some of the multi-billion companies out there that actually have previously put technologies through the FDA. It's already 510K cleared. So getting the EUA on top of that is very, very simple. For us, we're going to the FDA for the very first time. And so the FDA does take a very close look to make sure the system meets all their requirements, including making sure lexigene's quality management system is up to snuff and all the validation work has happened. So we are progressing our way through that work. It is a large body of work. We feel very confident in our technology of what we will be able to do in regards to human clinical diagnostics, but it does take some time. And because of that, until we feel like the submission and approval is imminent, we're going to be relatively quiet in the airways regarding FDA just because we don't want to, you know, set a false pretence to how quickly this is going to happen to the FDA. But we're certainly optimistic in our prospects. Now the company's ongoing success can be attributed to its impressive leadership team and advisory board. Can you talk about some of the key members of the team and what the experience they have brings to the table? Yeah, and so just going back to the FDA thing, you know, if you look at our staff, one I'm extremely proud of the staff that I've hired, they come with a tremendous amount of expertise. You know, if you look at Steve Armstrong, he's our COO. He has helped companies launch more than 50 devices through the FDA and not just the FDA in the United States, but actually placing these devices in over a hundred countries worldwide. So he is effectively a regulatory expert and he is really our lead engineer, manufacturing QC person at the company. And so he is phenomenal. We also have Dr. Nathan Walsh. He's got a biochemistry degree from Brown University. He went on to get his doctorate at MIT. He's brilliant. He has over 20 years of experience working in the genomics and microfluidic space. And then I'm not going to go into all of our directors, but I encourage your viewers to go look at our webpage, look at the bios of the team. The team is extremely talented, not just the executive offices, if you will, of the company, but look at our directors and also look at the scientific advisory board. I've gone to great lengths to build integrity into the company. And I'm very proud of each and every one of the higher management, if you will, of the company. So look into their backgrounds and I'm sure you'll be pleased with what you say. So we've got investors here at Rich TV Live that will be watching this video from many countries all over the world. What should investors watch out for from Lexi Gene in the next few months? So looking at Lexi Gene now is actually an opportune time. If you look at the history of the company, again, found in 2016, at the time we had effectively nothing. I had licensed two patents from a private company. We had executed a reverse takeover of a public shell in Canada and we were a prime target, if you will, for pump and dump artists. And so we went through some fluctuations early on at the highly speculative stock with effectively nothing behind the company aside from my name and my integrity. And so with piece by piece, we worked on developing the story, developing the product and over the first two and a half years, again, very slow progress because the company had effectively very little funding. But we built an alpha prototype and demonstrated principle in the first two and a half years. The following year, we built and tested the beta prototype. That was actually field tested very successfully. And this past year, we've been working on our commercial system called the My Key Lab. So here we are today. And it is now, I guess it's May. And if you look at the stock price over the course of this past five months or so, a lot of the market cap companies have been hit hard, particularly diagnostics. A lot of people are thinking that the coronavirus pandemic is on its way down and up the door. We certainly hope that to be true. But one of the things that I wanna emphasize here is that LexiGene is not just a coronavirus company. It's certainly something that's on our roadmap. But again, this company was founded on the principles of basically serving the underserved markets, the veterinary diagnostic space, the contract drug manufacturing space and certainly with time we expect to be through the FDA and servicing the human clinical space. But within open access, again, we have the ability to target many different market verticals and our technology is prime to do that. So as we approach basically June and the rest of the summer, we've just hired four sales reps. And the reason we've done this is because we have a lot of confidence in our technology where it is today and we're gonna be pushing strongly for early adopter sales. And so as we progress through the summer, we expect to be announcing progressively more sales with every passing month. And we think we're gonna be in a great position in a few months. And the stock certainly, I would expect the value of the stock to reflect that. Yeah, and when we look at the stock, we can see a company that's undervalued, in my opinion, underappreciated, underexposed. Hopefully these types of interviews will help you gain more exposure and get more eyeballs on the security and get people to learn more about the company. What is the best way for an investor to get in contact with the company if they have any questions, Jack? So we always try to be as responsive as possible to any inquiry coming to the company. And so if an investor is contacting us, we have IR at lexigen.com. That email is available on our website. You have general questions regarding the company. We have an info at lexigen.com. And generally we try to respond, generally it's been 24 hours or 48 hours. And certainly if it's a level of high concern, it could elevate it to me and I try to address it. So we appreciate any comments that come in. Well, thank you so much for your time today. Jack Regan, the CEO of LexiGene Holdings. Thank you for having me. My pleasure. And before everybody says goodbye, just remember Rich TV Live is strictly for information education purposes. Please do your due diligence, do your research before you invest in anything that we discuss here in Rich TV Live. If you liked the video, please smash the like button, comment down below, share the video everywhere and subscribe if you're not winning, you're not watching, we bring you the winners and we bring them to you first. Thank you for watching everybody. Thank you, Jack.  Thank you.


Look in the distance just look across the room like you're looking at across the sea and Just look to your right Look to your right All the way right just in the distance Now look to your left all in the distance Okay, now look at my finger at my finger. Just keep looking at my finger I'm gonna bring it in keep looking at my finger Now just relax That movement happen try hard to see if you can make it happen yourself Maybe look pretend you're looking at something like on the camera So it really is coming on when you look at something up close Look at my finger now again All right sit back