Welcome everyone. My name is Magier Jachowski. I was working for a couple last couple of months on fuzzing NetBSD kernel. However, this knowledge also applies to fuzzing other kernels. It shouldn't be hard to get this working also on freeBSD. I was also doing some work to get this on freeBSD, so you can also apply this to fuzz your freeBSD kernel. So the outlet of the presentation, first of all, what we are trying to achieve. And this talk also assumes that you don't have a lot of knowledge about the fuzzing and breaking the kernel. So this will give you a pretty good overview of what you can do, what techniques are available, and some background knowledge like how these things work under the hood. So we'll talk about the coverage as a kind of feedback for our fuzzer that is used for the fuzzing. I will also mention a little bit of sanitizers, but I won't go too deeply to sanitizers because this is also a very white topic. However, yesterday was a very good talk about sanitizers on a VM dev room. So if you missed it and you want to learn more, you can also see the recording. We'll also show how to do the basic setup for the fuzzer. And as a demo, we will try to run fuzzing on the FFS, on NetBeasD kernel as a virtual machine. So hopefully we may find something interesting. Sure. Okay, so the first thing to justify why are we trying to break things or why I'm doing this is essentially need for having multiple different ways to improve the quality of software. And as we all know, kernel is a very critical part of the operating system. If you break the kernel, you have serious issue. And there is no known silver bullet to solve all the issue and ensure software quality. So usually what people does is multiple parallel actions to improve code quality and software quality in general. Because we know we always will have some bugs or some issues. But from the other side, we would like to have reasonable quality software and something that won't break very easily. So we can have some list of things that we can do to improve our software starting from stuff like getting code reviews, applying best practices and so on and so forth. This list is far from being complete and probably it can be a couple of other slides to just list different techniques that we know. But I think one of the most important and most interesting or some other people may say boring things is about testing the software. For me, testing is like the time when software meets the truth. So if you just do the reviews, if you are just doing analysis of your code without testing, without running the software, of course it's not good. From the other side, technique is also very wide. There's a lot of resources how people do testing. But I think in our context it's fair to say that fuzzing is also a kind of testing for our software. So first of all, what the fuzzing is. Usually we call fuzzing when we have some way to test the software which expects some input. And as a testing technique we are trying to give our program some strange unexpected input and we are observing what is the behavior for this particular input. So the simplest fuzzer that can be written is just, for example, let's say we have some binary that you would like to fuzz, which is called fuzz binary, and this binary gets us an input 1000 kilobytes and some raw byte input. So what we can do, we can just write some very dummy fuzzer in a couple of bash lines or even in one, if you like, very long sentences and just get some random input, save it somewhere or pipe it to the binary and then run binary. And the funny thing is if the program is not written having validation in mind, in that way you already can break some programs, which is very funny. But the good thing would be to think how we can improve our dummy fuzzer. So what we can do to get the fuzzing smarter. And one thing that came usually to head is how we can generate the input in a more intelligent way, more smarter way. So one of the techniques is mutation-based fuzzing. So mutation-based, essentially, assuming that we can come up with some strategies that will be smarter or have some logical sequence instead of just getting the random bits. And we can, based on those strategies, we can mutate the input and provide this input to the application. By definition, mutation-based fuzzing doesn't really care about the state of application because we are just caring about strategy. So we have some strategy to flip certain bits or the strategy can also be aware about the grammar. So for example, if you are fuzzing the HTTP requests, you can get some payload, which is like in order with HTML standard, and then play with different tags. You don't have to have just raw bytes that you are modifying. So in that way, we are able to much easier find some interesting inputs than in just a random way. And also, if you get a random input, usually if your program expects some different tags, some different header in the input format, you're usually just stopping on some first couple of checks that are making sure that your input has some, for example, certain header, certain pattern at the very beginning. Another way to improve the fuzzer is introducing the feedback loop. So in the feedback loop, you essentially get some feedback from running application about application state. And this state can be measured in different ways. The most popular one is the code coverage. But we also can think about other things like timing, CPU resources, and stuff like how application behave with the environment. And so the funny thing when I was doing those slides, I just put timing because first of all, timing is known from cryptographic software. For example, if you have some cryptographic software which have different timing for different requests based on the execution path, you obviously have security issue. But I was thinking, yes, that's a good example, but from the other side, I didn't saw many timing-based fuzzers. And yesterday when I was waiting for my Fosden t-shirt, I met my colleague, he's working for Tor project, and we started talking, and I told him, oh yeah, I'm doing the talk on BSD Devroom about the fuzzing. And he was like, oh really, I have a friend who actually was doing the fuzzing based on mutation, and he used a timing for execution of this program to the firmware, and based on this execution time, he was doing modification to the software. And by this way, he was able to break some popular electronic device, a string device. So I was like, oh really, so that means this really works. I will also try to depult it in this timing way to measure the feedback from the application. So it was pretty funny. Also from the testing court, we have stuff like, we can think about our fuzzing based on the application that we fuzz. So if, for example, in similar way as we are doing testing, so we have white box testing, black box testing, if we don't have, for example, all information, but we have some information, we can also say we have gray box testing. So this feedback loop also depends what kind of fuzzing are you doing. In our example, we'll be doing white box testing because obviously we have a kernel that you can compile, we can instrument the code, and then we can monitor the state of the application based on those informations. So coverage tracking. As I said, that's one of the main technique how you can get the feedback from the application, and that is how many fuzzers works. Main coverage trace is PC trace, program counter. It tells us about the execution path, and the good thing how we can start our understanding of this format is essentially the way how it's stored in our program. So whenever we run the program or whenever we have a kernel, because kernel is also a kind of program, we need some array, we need some memory location where we will be putting the sequence of PC counters. So in our example, we have an array of size 100, with 100 entries, but it can be much wider. And when the program is executing, this can be done for example per thread, per process, or if you are running the kernel, it can be also something per kernel thread, but also you can think about some global array. For example, if you don't care about the threads, but you care about the execution path, because what can happen if you are fuzzing the networking, you can put the request to the networking queue and then another thread will be getting this request from the queue. So if you are fuzzing based on the thread, then you will be just seeing the path when you put the packet to the queue instead of seeing another thread which can be different that will be processing your request. So how this exactly works, as I said, those are compile time instrumentations, so they are put by compiler. So on the right we have a program, very simple, which have main, which call bar, which call foo, which call bar. So what will happen during the compilation phase, our compiler will put some magic instrumentation at the very beginning for all functions and those will execute when we are executing the program and won't interact with our program. But what are those magic instrumentation? So I get a code listening from NetBSD kernel and this, I'll leave it modified just to give you some brief idea what is going on. So every time when we hit the instrumentation, we call this function instrument code and this function need to get our memory that we reserve for presenting the PC counters. And obviously we get the index because we need to write another entry. We also need to do stuff like border checking because based on also your intention you sometimes may overflow and if you do the questions for you what you would like to do. But the most important part we are just getting the PC from the function from which we were called by just compiler macro. So if you run our very simple program, I will end up with array of three entries main foo bar. So it's very straightforward. And we don't have only PC trace. We have also a couple other different trace. We have CMP, DIFF and GEP what they are. CMP trace is used for application or is used to instrument the comparison instructions. DIFF is for every time when you're doing division between the arguments. GEP is for manipulating indexes of the arrays. So compiler have some understanding about those. And when it's compiled the code it will put the instrumentation before every instruction is performed. So then you can have better understanding what you need to have different types. And so you can imagine like based on your program you may doing some mathematical operations like you can compare the argument, you have some graph or some tree that you are traversing. So only the PC counter doesn't give you full information because you may always see the same path. However, the path is not the same because you are just getting different arguments. Or if you are manipulating a lot of indexes of array you may also see the same function called over and over again. But from the other side you use different arguments. So I here present the CMP trace. It's a little bit different than PC trace. But from the other side is something that also you have in all DSD kernels as far as I know. And also other one are similar in terms of format. So instead of just one information you have arguments of the operations. We have the numbers that we are comparing. And the types tells you about the size of the arguments. So it's 8 bits or 16, 32, 64 so on. And also you have PC trace. So you have a sequence of those sets of four values inside your array. And as I said everything depends on your code that you are fuzzing. So it depends which part for example of the kernel are you trying to fuzz. It's always good to think. So if the PC trace is the only one that I would like to see in my fuzzer. Other important tools, synthesizers as I said I won't be going how they actually works. But I'm trying to convince you that they are very useful. And the reason why they are very useful is when you meet any issue in your code. The code may not exit after invalid operations perform. For example you can have memory corruption but this memory corruption won't expose easily. So in that case you can run the fuzzer and then don't have any crash even if you corrupted some data. So if you get the sanitizers, here we have three kernel sanitizers, other sanitizers, leak sanitizer and memory sanitizer. They are available in NetBSD. You can also have undefined behavior sanitizer. There is thread sanitizer. I didn't know too much about thread sanitizers at the moment but I am also looking about them. So the very simple one to start with is CASAN because it's the text things like out of bounds for chip stack and other like a common mistakes from the software. The downside is you cannot have all at once because some of them are mutual exclusive with other ones. So for example by definition you cannot have ASAN and MSAN, other sanitizers and memory sanitizers because they are relying on the same data so they are overlapping each other. So in LLVM it's specified that you cannot use both. And from the other side they also provide some slowdown because they are compiled times and they also introduce other instructions. But as I said they allows you to fast box easier and faster so I think it's a very big leverage for the fuzzer to actually run your fuzzer with address sanitizer or any other sanitizer. Depends on what kind of bugs are you expecting. Let's go to the fuzzer. The one that I was using for a couple of months is American Fuzzy Loop. I think everyone know American Fuzzy Loop is very popular. It has very good record for found bugs. Some people also claim it's pretty old at this moment but I think as a starting point it's very good because first of all it's very easy to use. It's rock solid but from the other side it didn't have a goal to fast the kernels but just the user space program so you cannot use it directly. To fast your kernel you need some modification. So what that modifications are we can think first of all what we have from the kernel site what we have from AFL site what format AFL require. So Unix Linux 3BSD, NetBSD, OpenBSD and other expose the coverage using coverage device slash dev slash cake off. Using this device you can get for example PC Trace, CMP Trace. The way how you access this data you configure the device using iOctos and then you do the memory map. Then you run your program and after you finish your map memory I should contain those areas that I discussed previously. From the other side AFL use its own specific format where AFL focus on part pairs of the PC counters. So it stores unique PC counter pairs which means every time when we perform another instrumentation which means we have another PC we remember the old PC counter or zero if we just started and then get the old PC counter and the current PC counter explore them together very easily make sure that we don't overflow and then increase one in our map which gives a compiler which gives a father hint. This pair of those two PC counter just happen. So then the father can analyze this array and say okay so I got another pair that I didn't solve before or maybe I always get the same pairs of PC counters which mean I need to do something different. So it's very easy to convert PC Trace to AFL Trace because they look the same. But from the other side we don't even have to do that. We can just store because it's just storing redundant data we can just do this and fly. So we can store two values and this map and this is everything that our AFL needs to work. In order to do that we did some work and modify a little bit and it did take off and essentially we allow you to plug in another kernel module which will hook to the coverage functions that are already there. By doing that you don't have to manage the default resources but you still can use them if you like. But from the other side you can do things like as I show like converting one input from coverage to another one. You can think about any other type of fuzzer that you can use and you don't have to copy all cakeoff code and then manage file descriptors, make sure that threads are open, closed, all of those things that you need to copy from cakeoff. You can just focus on coverage functions and M-Map that's what you really need and then you can leverage on what is written already. So how this looks. First of all when I think about the fuzzing I first of all think what is the input, what is the output. So here we have my setup for fuzzing the FFS mount. So my input is my file image. My output will be the result of mount or kernel clash and this sequence also requires a couple of other things like a wrapper as I said there is just like a plugin for cakeoff and it works like we have a fuzzer. The fuzzer creates the file system image. We need a wrapper that will prepare the file system image to be mounted but also will execute the code that we need so it will be executing the mount. Also we do not trace the wrapper. This is just a thing that help us to trigger the execution path in the kernel and then we do the MAM. MAM is calling skull, VFS, file system layer. On all of those layers we get the coverage data, the coverage data then transformed by our AFL plugin. This plugin is exposed to the fuzzer as this map of the pairs that I showed before. And then after every run the fuzzer will get the input, run the input will get the output from the short memory. We'll see what different strategy as our feedback we should change or did we found any interesting things and after the feedback phase it's just perform another operation over and over again until we've hit something interesting. So I would like also to talk a little bit more about the wrapper itself because also it's interesting. So the way how you usually write those wrappers is I write them in shell. I focus okay so what kind of operation I'm doing and then after I'm done with shelling I need to translate to some other better performing language. I usually just use C but you can use C++ or anything else that can expose your interfaces like system calls because you don't want to run on top of libraries, someone else libraries you just want to have the simplest, maybe not even the simplest but the shortest code that you can do. And this is also well documented on every fuzzer that the performance is very key even if your fuzzer is very smart and doing very good guesses about different inputs and analyzing the output very well. It still can perform much worse than much simpler fuzzer which is just faster because in order to find some bugs you'll need to run this 10,000 times, million times iteration maybe even billion times iteration if you have some very well-tested software. So in that regard you need something that is performing cooperation very quickly. So remember performance is key, use raw interfaces. Other things also that are useful when we are doing the fuzzing is how I can see what is going on inside my fuzzer and for example the problem that I had was when I run my first fuzzer into the first fuzzer it's not very slow but from the other side it's very unaffective so I was thinking what's going on inside this fuzzer how I can debug that. So then what I did, I run the takeoff on my fuzzing wrapper and I monitor what kind of execution path is inside so by the fuzzer. And I realized for example in NetBSD we have much more verbose kernel and we got a lot of operations from a virtual memory even if you are doing mount you see more virtual memory operations which mean you are actually not fuzzing the mount you are fuzzing stuff related to the management of the pages. So this is also a bit tricky and for example in this way you can get the input you can understand what is actually going on under the hood. Other thing that you can also do before you start or if you would like to tune something it's also doing coverage benchmark, fuzzer benchmark so you can see for example if you want to understand if your wrapper is fast or slow you can for example put some very dummy code inside the kernel what I've done was create some simple character device we just get some input compare this with the pattern and then if the pattern match you want the lottery so your kernel crash. If it doesn't you just run over and over again but then I can see how well my because this code is very simple I can see how well my operation in my wrapper perform and from the other side also you can compare this kind of check with user space which also gives you some intuition how well are you doing. So to do the local setup of the fuzzer we also need to have some initial corpus so this initial corpus you can create corpus from for example just raw zeros it's very well documented that AFL is able to reproduce some different formats so for example if you are fuzzing the JPEG or some other images AFL is able to reproduce those images but from the other side if you are running a little bit slower because you are in the kernel space and also you don't want to spend like a initial CPU cycle just to figure out what is the header or what is the magic number for the file system inside the image you can just create one and provide this as a raw initial data for the fuzzer so this also very helps with speeding up the fuzzing and once we have that we can run our fuzzer with option K which was added in AFL by a guy from Oracle when they also were doing the fuzzing of file systems so essentially I reused a day work and integrated this with NetBSD and FreeBSD to make them work for both and then you also need to specify the wrapper so the important thing is in that case you are running on the same binary that you are running on so do not shoot into yourself in foot because if your kernel crashes then your data may disappear you may not even see the latest output in the AFL so you need to make sure that you know what you are doing so if for example you are fuzzing something what is unstable and you will be finding a lot of bugs maybe it's good to get this input and output somewhere outside of your kernel so you can mount this on NFS for example it will be slower but from the other side you will have less issues and then run this process remotely because if you don't then every time when you crash you can lose the data that you are looking for but from the other side if you have well tested software and you just will be happy if you will find a couple of bugs or maybe one bug even you can just run this natively on your kernel what I have done for example was connecting the debugger to the kernel run AFL if anything crashes I can just get output from the debugger and see what is going on I can also get crashed somewhere sometimes I realize that it depends on the path that you crash you still may have some problems with getting the output because the ideal scenario is you get the output which is the latest image that you are fuzzing and then you can get this image and check if this image always breaks my kernel this was something that was from before testing so usually it's very nice if you have output that is a payload that you can just mount and then it breaks your kernel so how many iterations to find a bug in fuzzing FFS so what we will be doing we will just run on the same virtual machine the fuzzer and that's actually some other issue that I found at the very beginning but hopefully we can find something interesting okay so we need to get I don't know how big it can be because then the fuzzer needs to also okay so we have here the fuzzer it's modified version we have inside in a file which is our it's not zero so the name is a little bit misleading but we can see that oh this is zero okay I was fuzzing this anyway it's actually this is zero so I was fuzzing this before and I think yes thanks okay so it's not zero so you can see this is the legit file system image so we have the offset which is 8, I think 8k and we have some some magic from the headers of FFS I want to go to magic in detail but we see the structure is it's not just a zero file and so the way how we run it we can have this okay so I won't run this yet because I usually also get wrappers absolute buff wrapper so we run afl-fuzz minus k i from input out from output the intro number exactly but I think this definitely will work if we will get the wrapper itself okay from the other side this running on gdb so we have connected debugger because this is just a virtual machine and this is the debugger that is debugging the kernel so we can stop in every time we can see the trace we can continue trace we can also see that because we stopped virtual machine just froze we can just continue so then our virtual machine is still living okay let's run this thing oh we already get something so this run the dry so this this run the so it was running the dry input at the dry run at the very beginning so at dry run it's just do some simple modification and what you can see here is yeah usually it also should show you the afl console but because we hit something probably because I was testing this before so we have some old history so it was also running something that was found before but we can go here and this is already running in getting the core dump from the kernel okay but we have operations that crash so we have vfs reclaim which was called we know that was reclaimed from the vcache so that's kind of moment when you start debugging the kernel and I won't right now be doing this because it requires some time and also I'm not in the right now great position as a presenter to start debugging that but this is some this is something that it broke our kernel so this might be related to them to the data from the vnodes and this we can get this as a core we can start debugging this we can start debugging this in gdb okay okay so conclusion so fuzzing the kernel is another way as I said earlier we need a lot of different ways to test our kernel that we can just we can just do to make sure that our quality of our drivers, our file systems is better also if you like to start searching for some bugs this is also a very easy way to start and we have recently a lot of good work for improving things that allows us to run the fuzzing so for example gathering the coverage in netbsd and other bsd in general improved also sanitizers in particular in netbsd become much better over the time it's very easy to start as you see it doesn't require much knowledge so I think in this half hour I give you almost everything that you need to start your adventure with the fuzzing and also you should run the sanitizers by the way this was not run on sanitizer because we didn't have any sanitizer output so future work I would like to have some discussion with other people I saw Andrew presentation from FreeBSD.his also doing something on AFL so maybe we can came with some similar way that we fuzzed bsd I saw previously on linux they introduced another device it was slash diff slash afl which community didn't like it and it was not upstream at the end so I think if we will try to get this on common interface that will be beneficial for everyone because then people from security projects can just you know fuzz our kernel in the same way I also need to spend more time on improving the remote fuzzing because it didn't scale very well if you want to find many bugs and just continue with fuzzing and fixing the bugs the resources so our netBSD blog there is also paper oracle paper from 2016 my collection of mount wrapper clonic documentation also was very useful source of information and I will be happy to get any questions if any thank you very much one group for all the questions and the answers the question was can you use afl for remote fuzzing not for the fuzzing that was presented the answer is yes but you need to do additional setup because as I said afl use the same data on use input and output directories so you need to mount to have them remotely you need to run this as a process and then you need also some way to send back the information to fork serve that crash happened because your process just stopped and the thing that I'm currently looking on is how to get efficiently the kernel dump because then you have the dumping process so this location for dump also need to be mounted for something like NFS again or some other protocol I mean the simplest one but you can potentially come with some other good ideas and I don't know how hard it will be to get afl console to analyze those crashes to say because when you're fuzzing the user space library or user space binary you see those unique crashes for example so afl is going through the core dump of the process and then saying okay so this one occur so then it's not unique it's like something similar or this one is not unique because it's something different and then afl also take strategies from those crashes to improve so I think that part about analyzing the core dump from kernel is some unknown for me other things can be done easily go ahead okay maybe someone wants to leave the room before the second question okay


Hi, I'm Petty Officer Raheem Lumpkins from Monroe, Louisiana, Washington, Parish, and I'm station number one at the USS Enterprise. I'm a culinary specialist. I've been here about four years now, and I prepare food for an enlisted crew on the ship. As a culinary specialist, I'm born at the Enterprise. I prepare and ensure the meals of over 5,000 enlisted sailors in the Ford Galway. In the Ford Galway, we serve a speed line that consists of hamburgers, hot dogs, pizza, chicken wings. You name it, we have it. What I think makes me different about being a culinary specialist is that I'm the only culinary specialist from Louisiana, and what I do is kind of bring that Cajun flavor to what we're trying to offer here on the board at the USS Enterprise, and my grandmother being a native of New Orleans is really helping me fuel that fire by me being in the kitchen with her when I was younger, to just excel in everything that I do in the Navy. On my spare time on board at the USS Enterprise, I like to do a lot of different things. I'm very interested in karaoke night that we have on Saturday night, sponsored by our morale warfare and recreation department.  Growing up, my mom used to always invite her friends over. They used to play spades and dominoes all the time, and me and my younger brother would never understand it because we were too young, but when we got older, she started teaching us slowly and slowly and slowly until we got really good and started playing her to where we would kind of beat her and she would just kind of send us off to our room or whatever, but those are the good times that I remember about it. When I get back home to Monroe, Louisiana, the first thing I like to do is kind of walk around the community that I grew up in because it built the foundation that started my naval career, being in a strong, positive community like that really made me the person that I am today. Well, I'd just like to say to everyone back home in Monroe, Louisiana, thank you so much for letting me be a part of your family, all the way from Carver Elementary, graduating from Richwood High School, my church family, a little flower, and I want to give a special thanks out to my mom, Rosalind Lumpkins, my little brother, Raquelman, my grandparents, Benny and Charles Ross. Thank you for everything that you've done for me and I'm hoping I'm making you proud.


I welcome you for module 3 lecture 7. In the last lecture, we started discussion on various kinds of limit gauges. We will continue the discussion. Now, we have a plane ring gauges. See, these ring gauges, they are used to check the shafts that is the external features diameter of the shaft. If the external feature that is diameter of shaft is plane, that means there are no threads, then we use these kind of plane ring gauges. Now, we can see here normally they come in a pair, one for go and other for no go limit. So, again these are made as per IS 3455 of 1971. Also, one more standard that is followed is IS 3485 of 1983. So, all these gauges, they are made to the accuracy of IT 1 grade. Now, in these standards they are mentioned what should be the size of the outer portion and what should be the thickness of these ring gauges and it is necessary that we have to mention the size, the basic size with the tolerance and then manufacturer details. All those things are to be mentioned as per these Indian standard. They are available with different materials, gauge materials. If it is carbide, they are available in this particular range 6 millimeter to 40 millimeter and in hardened steel, they are available from 6 to 100 millimeter. If the bigger size gauges, ring gauges are needed, they can be manufactured as per the customer requirement. Now, we have this carbide ring gauge in a steel ring. That means, it will be like this. So, we have this steel ring and then inside, we have carbide ring. So, this is carbide ring, outside is steel, inside is, this is only to save the material, carbide is costly compared to steel. So, the outer body is made out of steel and this gauging portion is made out of carbide. So, it becomes economical. Now, these are adjustable indicating snap gauge. So, you can see here, these are adjustable snap gauge. The reason is the distance between the measuring faces can be adjusted and then indicating. You can see here, there is an indicator with limit setter. Two limit setters are there. One can be set to lower limit and another one can be set to upper limit and then when we use these adjustable indicating snap gauge, when we insert the workpiece here, shaft here, the pointer will move and if it is between the upper limit and lower, these two limits, the workpiece is accepted. If it is below the slower limit and above the, it moves after the upper, this particular limit, then the workpiece is rejected. There are some special features in this adjustable indicating snap gauge. There is a lever. We can see here, backside of this tool, we have a lever. So, when we operate this lever in this direction, this spindle or the measuring face will move in. That means, this will move in and then we can insert the workpiece, so that it will come in contact with this anvil and the adjustable center stop and then we have to release this lever, so that this moves in the reverse direction due to spring and then it comes in contact with the workpiece and then we can see the position of the pointer. Then, we can accept or reject depending upon the position of the pointer. Now, this adjustable center stop is provided for automatic alignment of the workpiece, so that the center of the workpiece is in line with this axis. So, for that purpose, this adjustable center stop is provided. Depending upon the workpiece size, this can be adjusted and then we can adjust the range of this snap gauge by moving this anvil in and out. We can see here, there is a fine adjustment is provided here. By operating this, this can be moved in or moved out and then once the proper gap is fixed using slip gauges, this can be locked and then it can be waxed. These gauging surfaces, they are hardened. If they are stainless still, they are hardened and sometimes carbide tips are also provided, so that the service life will be more. Another advantage is here, the operator, he need not have to push the workpiece. He can withdraw this anvil and he can place it and if when he releases this lever, the anvil moves and it comes in contact. That means, there is no wear of these surfaces. So, the service life of the instrument is more. Then, coming to the taper gauges, this is a taper ring gauge to check the taper of workpieces, external taper. So, this is the workpiece. Now, we can observe here, there is a step here. Now, we have to insert the workpiece into this tapered board and then if the surface of the workpiece is between these two limits. So, this is the top surface and this is the second one which is below this. One corresponds to the go limit. This is go limit and this is no go limit. That means, the workpiece has in between go limit and no go limit, then the workpiece is accepted. Now, we have taper plug gauge to check the internal taper. So, in this taper plug gauge also, we can observe that there is a step here. Now, the tapered workpiece is like this. This is the tapered workpiece with the internal taper and we have to insert this plug like this. Now, if the surface of the workpiece is between these two limits, so this is go and this is no go has entered into the board and no go has not entered. If this is the case, this workpiece is okay. Sometimes instead of step, the two marks will be provided and this is for go and this is for no go. Go enters and no go does not enter, then the workpiece is accepted. So, one important thing in using these tug gauges is sometimes the, so this is the workpiece with the taper and then we have the workpiece like this. Now, the taper angle is more, taper is more in the workpiece, but it is laying within the two steps. The tendency of the operator is, it will simply accept. The reason is the work surface is between these two limits, but actually the taper is not okay. So, it is necessary that we have to check whether the taper is proper or not. So, for that there is a method of checking, see this indicates only the maximum size is okay, maximum diameter is okay, but it does not guarantee whether taper is okay or not. So, for that there is a method of checking a taper. So, what operator will do? He will take the workpiece and he will coat three lines on the workpiece using the pressure blue pigment. That means he will take that pressure blue, he will mark one line, second line and third line on the other side, equidistant lines are marked. And then he has to insert that into the hole and then he has to rotate the gauge maybe for 1 or 2 turns and then he has to remove the gauge and then he should check whether there is a uniform holdout of the rubbing off of the line. If it is uniformly rubbed out, then the taper is okay. If it is not disturbed, the lines are not disturbed, the lines are as it is without any rubbing off, then it indicates that taper is not okay. Now, there are some limitations of using ring gauges. They indicate only overall size limits. They indicate that the bigger diameter and minor diameter are okay. There is a possibility of accepting the out of round workpieces. That means this is the workpiece with the hole. Say there is some ovality in the workpiece and now we are inserting the gauge. So, now you can see this out of roundness cannot be detected by these ring gauges. And worker is prone to pass the workpieces with excessive taper. That means he checks whether the surface of the workpiece is within the limits. If it is within the limit, he will just accept without bothering about the taper. So, use of pressure and pressure blue will be useful in checking the taper. And other thing is workpiece must be taken out of the machine and it should be deep deburred before an effective check can be made. That means workpiece should be removed from the machine. It should be cleaned and then he will take the ring gauge and then he will try to enter it from one end. So, time taken to gauge the workpiece using ring type gauge is more. Whereas, if we use snap gauges, C type for snap gauge, without removing the workpiece, you can insert this snap gauge and you can check the size. Now, coming to the thread plug gauges, now you can see here these are used to check whether the threads are proper or not. For checking the internal threads, we use the plug gauges and for checking the external threads, we use ring thread gauges, which we will be discussing after a short while. Now, here double ended thread plug gauges. Now, you can see here this is a go end of the thread plug gauge and this is no not go. And you can see the length of the go gauge is more as compared to not go. The reason is go gauge should fully enter into the workpiece and you should check the maximum possible features like pitch and then pitch circle diameter and major diameter etcetera. Whereas, not go, they are not expected to enter into the threaded hole. So, full form of thread is not provided. Only some 2, 3 threads are provided. Another thing is as per the standard, all the details are mentioned here. This is for metric thread 16, m 16 and with pitch of 1.5 and the 6 pitch indicates the tolerance that is provided. So, whenever they are not used, not in use, we have to apply the protective coating like this. This is one more gauge with m 10, 1.5 pitch with the tolerance 6 h and again we can see the hole is provided and these are taper lock type. So, whenever these gauges are worn out, we can remove them and we can replace them. This is a thread roller gauge, C type thread roller gauge. One will be for go and another one will be not go and up to 30 millimeter interchangeable go no go thread plug gauges are used. That means, whenever they are worn out, we can replace them. That is interchangeable go no go gauge double ended and 30 to 52 millimeter reversible go no go. That means, sometimes this portion is used and this is worn out in the case of reversible type. So, the gauge is removed and then it is reversed and put into the handle. So, they are called reversible thread plug gauges and over above 52 millimeter separate go and no go gauges are used. So, we have adjustable thread gauges. That means, say the fixed type thread gauges, if they are worn out, we cannot do anything. We have to remove them and we have to use new gauges, but here we have a ring type adjustable thread gauges. If there is some varying of the gauges, we can adjust them and we can reuse them. So, once the adjustment is made, again the screw is waxed. So, that unauthorized adjustments are not carried out and this is ring type fixed thread gauge. You can see this is go gauge and this is no go gauge. This is for a particular case m 10 1.5 and this is the tolerance that is provided and this is the manufacturer detail. Again, you can see there is a group to indicate that this is no go gauge. Now, I am showing ring type thread gauges. This is m 10 1.5 pitch go gauge and this one is m 10 1.5 pitch go gauge 1.5 no go gauge. The tolerance limit, tolerance that is provided on these gauges is 6 g. Now, you can see the length of the go gauge is more or the height of the go gauge is more when compared to the no go gauge. This is the workpiece screw thread which is to be inspected. Now, the go ring gauge should go into the workpiece. It should fully enter and no go gauge should not enter. If that is the case, the screw is accepted. Now, in the go thread gauges, full form of threads are provided and here full threads are not provided. Only 2, 2, 3 threads are provided. The reason is it should not enter into the workpiece. So, there is no necessity of providing full length of the thread gauge, threads and full form of threads are also not required. This go gauge should check all the elements, most of the elements of the screw like pitch circle diameter pitch. Whereas, this will check whether p c d, this will check only the pitch circle diameter of thread. Now, we can see that there is a groove provided on the periphery of the no go gauge to indicate that this is no go gauge. The surface is nulled to provide proper grip. Now, I will show how to use the go gauge I am inserting the workpiece into the go gauge and I have to turn the screw. Now, I am rotating the screw. You can see it is entering into the go gauge. So, go gauge has fully entered into the screw. Now, I am removing it.  You can see it is not entering into the gauge. So, go gauge is entering into workpiece and no go gauge is not entering. No go gauge is entering into workpiece and no go gauge is not entering. That means, the screw is acceptable. Now, these are the special type of coated thread gauges. They are coated with titanium nitride coating is performed on such gauges. You can see the gold color on the gauges. They have some special, this is double ended type, this is single ended type and this is again a gauge for a bigger diameter. Now, what are the advantages of such tin coated gauges? We can see here there are many advantages of tin coated gauges. So, tin coating is an extra hard surface and it has some lubricity, lubricant properties are there. So, because of that, wear life is more. So, the service life of tin coated gauges, thread gauges are more and they permit longer frequencies between recalibration because of the wear life, extended wear life and gold color serves as a wear indicator. So, with the continuous usage of these tin coated gauges, what happens is that gold color is faded out. So, that indicates that the gauges are getting worn out and then we have to replace them or we have to send them for re-coating. Now, due to inertness of the tin, they offer high resistance to corrosion. Corrosion resistance is provided, making them ideal for use when humidity and other atmospheric conditions create corrosion problems. When gauging soft materials, loading up of material on the gauge flanks is prevented due to the lubricity of the tin coating. This tin coating, it is non-stick surface against most of the materials because of that buildup problem is eliminated. Then they have the service life of the tin coated thread gauges, the last 3 to 8 times longer when compared to crown plated gauges and typical tin coating thickness varies from 0.2 to 2 micrometers. Since the coating thickness is very, very less, there is no problem of peeling off and adhesion of tin which steel is very good. Hardness of tin coated surface is 85 rockwell sea whereas, tungsten carbide and chrome plating chrome plated gauges. In the tungsten and carbide chrome plating, in that case, the hardness is 70 rockwell and if it is only hardened steel, the hardness is 60 rockwell sea whereas, in the case of tin, it is higher 85 rockwell sea and then coefficient of friction of this coating is very less 0.4, 0.6 up to 0.9. So, because of that the wear is less. Now, we will move to the wire gauge. These are used to check the thickness of metal wire and metal sheets. I can see here, this is a wire gauge made out of hardened steel and the slots and they are made like this. Now, you can see here, this is the how these wire gauges are used. They can be used to check the sheet metal thickness and then they can be used to check the thickness or diameter of the metallic wires. Now, how to use this? We have to take the workpiece, say sheet metal and we have to say insert from this side. We have to always insert, say this is the slot. Slot is like this. So, we have to take the sheet metal. So, this is the sheet metal with some thickness. So, we have to move the sheet metal in this direction. If it is rod like this, we have to take the rod and we have to move in this direction. Now, initially we have to take the sheet metal or rod and say we are trying to insert in this particular slot which is marked as 20. This indicates the gauge of this particular slot. Now, say it enters. Now, what we have to do? We have to remove that sheet or rod and then we have to try to insert into the next hole marked 19 gauge. Now, say it does not enter. So, what we have to do is, when it does not enter, we have to consider, take the previous number that is 20 in this case 20 as the gauge of that particular sheet metal or wire. Now, once we know the gauge, using the conversion tables, we can, we will come to know the thickness of sheet metal or wire. If the gauge number is 20, the thickness is 0.912 millimeter. If the gauge number is 19, it is 1.062 millimeter. As the gauge number decreases, the thickness increases. Now, this is a radius gauge, plate type radius gauge. They are available in the range of 0.5 to 13 millimeter radius in steps of 0.5 millimeter. This is a set of radius gauge and what are the uses of radius gauge? They are mentioned here. So, this radius, a particular radius gauge, it can be used to check the inside radius, this fillet and then it can be used to check the groove radius and it can be used to check outside radius, ridge segment and then roundness or diameter of the shafts. This is an angle gauge set. Different types of sets are available. This is a set with 16 pieces. You can see here, the radius gauge, there are 6 angle gauges, 45 degree gauge, 30 degree gauge, 15 degree gauge, 5 degree gauge, 3 degree gauge, 1 degree gauge. Like that, in minutes, 30 minutes, 20 minutes, up to 1 minute and in seconds, 30 seconds, up to 1 second. So, like this, totally 16 piece set and 13 piece sets are also available. What is the accuracy of these angle gauges? If it is tool room set, the accuracy is plus or minus 1 second. If it is laboratory type, then accuracy is plus or minus 0.25 seconds. Again, similar to the slip gauges, these angle gauges are ringed to assemble to the required angle. So, here an assembly is shown here, 30 degree is ringed with 3 degree to get 33 degrees. You can see plus symbol is on one side. Here it is in the reverse, plus is here and plus is here in this particular. So, 30 minus 3 is 27 degrees. So, this angle is 27 degrees, 27 degrees. Like this, to any required angle, we can assemble the gauges. Now, we have spline gauges and serrations gauges. You can see here, this is a go type spline gauge and this is a no go type spline gauge. Full form of spline is provided on go gauge and only two splines are provided on not go gauge. So, this go gauge should check all the elements like width of the spline groove and height of the spline groove. All those things, this will check. Whereas, not go will check only whether the spline width is proper or not. This picture shows how the spline gauges are used and this is a serration gauge to check the serrations. The gauges are available for to check internal serrations as well as external serrations. So, we should use in pair one for go and one for not go. Now, there are gauges like key way gauges used to check whether the key width is proper or not. For example, say we have some shaft like this with the key way like this and we want to check whether this key width is ok or not. In such cases, we can use these key way gauges. So, one end will go and other end not go will not go. So, if that is the case, the key way is proper and there are different kinds of gauges like plate depth gauge and then combined bore and face gauge and then position gauge and then length gauge over to bore. Now, you can see this is a plate depth gauge and we have to check whether this particular depth is ok or not. There is certain dimension for this depth with some tolerance. So, in that case, we can use plate depth gauges which is shown here. So, this is go side. It should go into the workpiece and no go side should not go. If that is the case, the workpiece is accepted. Similarly, we have a plug depth gauge. This is the plug. Again, this depth is to be controlled with some dimension D with some tolerance. So, this side is go side that should go into the depth and no go surface should not go into that. If that is the case, then the workpiece is acceptable and this is combined bore and face gauge. Now, we need to control this size with respect to this axis. The radius is to be controlled with some tolerance. So, in such cases, we can use combined bore and face gauge. This spindle will move into the bore and then you can see here there is a step here. This portion should go and then this surface should not go. If that is the case, then this workpiece is accepted.  It will also check whether this particular surface is parallel to the axis or not. This is a position gauge. We have to control the location of the recess. So, this is to be controlled with the dimension D with certain tolerance plus or minus 0.1 millimeter. So, in such cases, we can use a position gauge which looks like this. This is the datum surface and this is the go side. Go side should enter and no go should not enter. So, this is equal to go the upper limit and this is equal to the lower limit. Then, in some cases, we need to control the length of the workpieces. So, in such cases, this is the length L with plus minus 0.01 millimeter. This is to be controlled. So, in such cases, we can use this length gauge. So, this side it is go. It should enter and this is no go. This should not enter. If that is the case, then workpiece is accepted. Now, this is an indicating gauge. So, example is bore gauge. So, this is used to check whether the bore is within the two limits, the maximum limit and minimum limit. That means, using master's, the two limits are fixed in the bore gauge and then they can be used to check whether bore is acceptable or not. Another example for indicating gauge is a dial gauge. A dial indicator using slip gauge, we can adjust the two limits. One slip gauge for lower limit and one slip gauge for upper limit. Then, we can note down what are the pointer locations for go and no go. Then, if we insert the workpiece, if the pointer is between the two limits, then the workpiece is accepted. So, like this, dial indicator can be used as an indicating gauge. Now, we will move to air gauge. Now, in the conventional snap gauges, plug gauges, what happens is, the workpiece surface will come in contact with the gauging surface of the gauge. So, because of that, there is a lot of friction is there and then the surfaces are worn out and the sizes will vary. So, such problems will be made there. In the case of air gauge, the gauge will not come in contact with the workpiece. That means, there is no frictional problems and there is no problem of veering of the gauging surface. That is the advantage of air gauge and we can always have very high magnification like 5000, 10000, 15000. Magnifications are very small distances can be amplified up to 20000 times and a clean air is used for gauging purpose. This is an indicating type air gauge. You can see the piping to supply the compressed air. The pressure will be something like 2 bar to 5 bar. We have to use the all regulators, pressure regulators, filters etcetera to clean the air and then clean air is supplied here and the air will enter into the gauging probes. We say probes and this is a snap type probe. You can see here it looks like this. So, this is a snap probe, air probe. So, air will enter like this and here there will be nozzles. So, air will escape from here. So, when there is no workpiece here there will be air will be freely flowing and there will be certain position of this pointer. When we keep the workpiece here, now air escapement is restricted. So, the pointer position will change. Initially, using masters we can set two limits, one for upper limit and one for lower limit and then we can remove the masters and we can use it for gauging the workpieces. So, depending upon the size, if the workpiece size is within the limit, then the pointer will be within the two limits. In such cases, the workpiece is accepted. Now, this is an advanced type of air gauge, wherein RS-232C facility is available. That means, the variation of the workpiece can be stored in the computer for statistical process control and this is a air plug gauge and this is a air ring gauge. Inside, there will be pores and similarly here there will be outside, there will be pore. This plug gauge is used to check the bores. So, we have a workpiece like this with a bore and then this plug gauge can be inserted like this. So, air will be moving like this. It will be escaping from the nozzles and then this instrument will give the reading, whether the workpiece is acceptable or not that the level will change depending upon the size of the workpiece. Now, this is the air gauge circuitry. The compressed air should be supplied to the air gauge and many valves are there to control the air flow. A filter is there, a restrictor is there, a pressure regulator and then this is flexible hose and there is a pressure gauge. Now, this is the probe, air probe and then we have to keep the workpiece in front of this. Now, say we are checking this distance. If this distance is within the limit, then the pressure gauge pointer will show the, it will be within the two limits, upper limit and lower limit. Then this distance is ok. So, like this we can use the air gauge. This is the pressure gauge. When the workpiece distance is proper, the pressure will increase and then the pointer will move. Similarly, we can use the rotometer also. So, there will be air flow and there will be the float at a particular position. This is the scale of the rotometer. Now, when this distance varies, then the flow also will vary. Say this distance is x. If this distance is less than x, then the air flow is restricted. So, this float will come down. If distance is more, there is more air flow. There is no restriction. So, air flow will be more. This float will move up. Now, whether the float is within the two limits or beyond the limits that we have to see and then we have to take the decision whether the distance is ok or not. Now, these air gauges can be used for various applications like inside and outside diameter measurement. You can see here this is the workpiece and bore we have to check. So, the internal diameter can be checked and this is the shaft. The outside diameter can be checked and for average size measurement, multiple nozzles are there and then gauging out of roundness. See here gap is less. So, there will be a particular position of the float and when we rotate this probe, now the gap is more. So, the float, the position will change that indicates that there is out of roundness. Also, whether there is any loading that also can be checked. Straightness can be checked whether the surface is straight or not or any taper is there in the hole. Cylindicity can be checked. Groove width can be checked. Flatness also can be checked. We have to move the workpiece in this direction and see the because of this error, the gap is varying and then the float or the pressure gauge pointer will change. So, that indicates that there is some flatness error. Now, the different kinds of arrangements are possible. Two jet air ring gauge, three jet air ring gauge and then air snap gauge. So, this is see in the case of ring gauge, what happens is we have to push the shaft from one end. If the shaft is too long, then it becomes difficult to check the diameter of the shaft. So, we have to go to one end and then from one end, we have to move that ring gauge. So, in such cases, the air snap gauge will be very useful. At any point on the shaft, we can move the snap gauge and we can check the diameter and it is always necessary that we have to check the diameter at 3, 4 places and then we should find the average of the diameter. These are some air ring gauges. You can see the pores here and ring gauge and then plug gauges and then snap gauges. These are commercially available. Now, what are the advantages of these air gauges? Now, we should understand that these air gauges, they are non-contact. They will not come in contact with the work part. Hence, there is no problem of wear. So, the replacement of gauges and such things are not there in air gauges and these moving parts, number of moving parts are very less. So, the maintenance is also less and inertia since the probes are very light in weight, the inertia effects are also less and the measuring pressure is very small. It varies from 2 bar to 5 bar and this year, compressed year, it also helps in cleaning of the work pieces. If there is some dust particle in the work piece, the work pieces get automatically cleaned. Whereas, in the conventional gauges, metallic gauges, we have to clean the work pieces and then we have to clean the gauge and then we have to use. Whereas, here self-cleaning is taking place and it is possible to have a very high magnification and then indicating instrument can be removed from the measuring unit. Air probe can be at one point and then indicator can be at some other point. So, remote operation is possible. This is suitable for gauging diameter of holes where the diameter is very, very small compared to length and it is probably the best method for determining the vitality and taper of the circular bores. It is very easy to check the vitality and cylinder city of the bores. Now, what are the disadvantages of air gauges? See, elaborate auxiliary equipment is needed. That is, compressor is needed and filter regulator is needed and flexible hoses are needed, accurate pressure regulators are needed. So, the investment may become slightly more compared to the fixed gauges, the other conventional gauges. The scale is generally not uniform. That is another problem. Only within the short or small linear range, we have to operate these air gauges. When indicating device is glass tube, then high magnification is necessary to avoid the miniscuous error. So, we have indicator in the form of a glass tube with a hole like this and then there is some liquid which is moving. So, there will be a miniscuous error problem will be there. So, in such cases, we should go for higher magnification and operators is not easily portable and is rather elaborate for many industrial applications. So, whenever we want to move it, the complete set we may have to move and then different gauging heads are required for different dimensions. Now, let us study what are the advantages of limit gauges. These gauges can be comfortably and conveniently used in mass production to check the dimensions of the workpieces and they can be used by semi-skilled operators. There is no elaborate training is needed to teach how the gauges are used and they are very economical compared to the measuring instruments wherein they give the actual dimension. Since these limit gauges, they give the status whether it is acceptable or not acceptable and no measurement is made. So, investment in the inspection tools is very less and it is very rapid. So, the gauges can be used to check the sizes rapidly. So, inspection time is less and coated gauges have a longer life and there is no operator fatigue and high strain. In the case of measuring instrument, operator high strain is involved. He has to take the reading and sometimes he may have to use magnifying lenses. So, in such case, high strain is involved whereas, in the limit gauging such problems are not there and there are very little chances of making error. Go should enter, no go should not, then we just decide that the workpiece is acceptable and no external power is needed except in the gear gauges and less moving parts in most of the limit gauges. Hence, little maintenance is involved. Now, there are some limitations of limit gauges. They do not indicate the actual size of the component. That means, if statistical process control is required, in such cases limit gauging cannot be used and they are susceptible for wear and expansion. For example, if there is slight change in the temperature, they expand and also in the case of snap gauge, if the operator applies over pressure, then it will expand and we may get some error in the inspection and need for large space for storage of gauges and they cannot handle finer quality jobs due to precision issues that are involved and require frequent checking of gauge dimensions. Again and again, we have to calibrate. As for ASO standard also, once in a quarter, we have to inspect them and we have to calibrate them and we have to take some care while using the limit gauges and while storing the limit gauges, mask gauges, inspection gauges and working gauges. These are different types of gauges. They should be used for which they are intended. That means, working gauges cannot be used as master gauge and inspection gauges, they should not be used for regular inspection. And before use, gauging surface should be cleaned and oil should be applied and we should not over force the gauges and we should always supply rust preventive oil while storing when they are not used, not in use for a longer duration. We should always conduct proper calibration before use. Now, we will stop at this stage. We discussed about different kinds of gauges. We also discussed about the year gauges and what are the limitations of limit gauges and what type of care should be taken in using limit gauges. We will stop at this point. Thank you.


My name is Timur Dixite. I'm working in in Yulich with Cartridge Ammuz. I'm a computer scientist, not a neuronatomist, so the expertise is overlapping but highly complementary here. I try to give you a first impression of what you can do with the human brain project tools with respect to the atlases. But just to quickly summarize again, so the way that we look at an atlas is usually on the high level. We have a definition of a coordinate space, which usually comes with an image of a brain in that coordinate space. Then we have a map, so a delineation of the coordinate space into different regions, which might be more complex than just having clear borders, but it's in principle it is a map. And then we have a terminology or a taxonomy on top of that map. So basically something that tells us what are the names of these different elements and how do they relate to each other. It might be hierarchy or whatever. So these are the three basic parts that Drikwe has already mentioned. And then in each coordinate space we might have different maps for sure. That's not different from how we are dealing with maps of the Earth, where you can have a political postulation or something regarding climate regions or the topography and things like that. We also want to have a flat version of your map too, right? Yes, that is also an analogy that's true. So for the Earth we usually look at a flattened version and that is what some people do for the brain as well. Oh yes. And then in the HEP we currently support a range of coordinate spaces. Drikwe already said it. It's the L-Miles, the Waxhorn Red and different reference spaces for the human brain. Before we look into the tools let me just give you a little idea of the postulations that we use in the human brain because it's a bit different. Maybe for some of you that is something well known, for others maybe not. So in the human brain we have this particular, maybe I just turn the slides around, we have this particular situation that the brain is highly folded and highly different in different individuals. So if you take brains of ten different humans and you map in this case the visual areas, the primary and secondary visual areas, you would see that the location of these areas is very, very different in the different brains. So here we have this problem that it is very, very difficult to give a good explanation in the reference space because it might be very different in the individual subjects. And that is something we do in really for many decades and which is the basis for the Cytoarchitectonic Probabilistic Atlas that we support in the human brain project. So here we typically have one scientist or often it's a PhD student delineating a single area in the human brain and they do it in histological sections where we, at the one micron resolution, where we actually try to find the differences in the laminar patterns of the cell distributions. And what they will do is they take histological like few hundred or less than hundred histological sections in one brain, try to find these borders and then there is an algorithm that can confirm, a computer program that can confirm that there is really a significant border so it's not arbitrary and they will do it in many sections in one brain, but then in ten different brains so that we really capture a little bit of the viability in the human brain. And then these maps will, these 2D delineations are projected into a three-dimensional, common three-dimensional space where we can then compute a probability map which basically shows us, as you can see here on the right, in red would basically mean these voxels have been assigned to this area in ten of ten brains. And if you see here blue colors or low probability it means at this position we have delineated this area only in maybe in one of these ten brains. So it captures a coarse estimate of the probability of the viability that this area has in this particular brain and then we provide these probability maps in the reference space. They're currently provided in two reference spaces in the MNI column 27 space. This is a single subject space where you really see very precise the folding patterns, the gyri and salchai of this brain and also in the MNI 152 space which is an average across multiple subjects. The second human template that we provide is the so-called big brain. This is a very different thing, it's a single subject template and here we have actually taken all the histological sections of one particular human brain which is 7400 sections and reconstructed them back into a consistent 3D representation at a resolution of 20 micron so at a very high resolution. So this is a template space where you have only one brain but you can really zoom into 20 micron resolution and see the different laminar layers in the brain so it has a very high resolution. And the strategy is that we provide in the big brain we provide also maps of the same side to architechronic areas but referring to this one particular brain so you have a link from the high resolution maps in this microscopic space to the probabilistic maps in the millimeter resolution which capture the viability so you have a choice to basically see the viability or to go into very high detail for this one single subject. And as you will see later a strategy is that we actually collect and anchor multimodal data that has a high resolution and a high spatial resolution in this space so if we really for anchoring data if we really need the resolution that distinguishes different cortical layers and so on we will use this space as a reference space and if we have signals at the whole brain level or very low resolution signals it can be done at the millimeter resolution with the probabilistic atlas and so we have a link between the two. So that one has also MRI so she would save exact brain and everything? There is an MRI for this so this has been published in 2013 in this brain so this is an MRI but the MRI is not of very good quality so in the atlas we don't have the MRI of this volume it's really a 3D representation of this histology reconstruction but this is not the big brain it's not a product of the HPP it has been done between Ulish and the lab of Allen Evans in Montreal and it's available free for download. The way we support it here is that you have it in the viewer it's anchoring of lots of data that we provide through the human brain project in this space and there are low resolution versions at the MRI scale so there is actually a link to the lower resolution scale so you can enter it through the MRI resolution level but there is no high quality MRI available for this one the quality is not so good so this is actually already a picture of the viewer that we have they zoomed into the big brain and you can see that this goes close to the resolution of single cells not exactly you do not see the morphology of single cells but it comes close and with this big brain we provide a first set of cytokinetic maps in 3D some of them are very high detail they have been computed using machine learning algorithms with supervision some of them are interpolated and not so high detail but this is now iteratively filled up we also have maps of the cortical layers as you can see on the right and if you look at this in the browser we will do it later on you can really see it's you really have a resolution in the cortex in the different layers and can really nicely see the architecture here is a map of the cytokinetic areas and you can see nicely here this is the border between the primary and secondary visual cortex you can see how the arrangement of the cells and the layers is changing here and the 3D map is actually confirming this that's where you find the map so then we have this online viewer which develops piece by piece and it allows to browse all these brain templates it's just a little move and you can see how it allows to zoom into the high resolution in the big brain you can do oblique slicing so you can get arbitrary angle sections you can select the different passillations you can choose another template this is the probabilistic cytokinetic atlas and then you can browse the region hierarchy, find brain regions if you double click them it takes you to the region and it allows you then from there also to search for data that is linked to this area so in this case you see here in the movie you can find samples of receptor density measurements in this area just by visually browsing the 3D volume and looking at the areas this is something we will do together during the day there's a map of fiber bundles being developed and here's just the same thing in slow so basically when you enter an atlas you find the region hierarchy on the top right and you can type and start typing the name of an area it will reduce to all the text matches of this area so it's quite easy to navigate double click you get there and then if you right click it is doing a query to the database of data sets that we have in the human brain project which have been linked to this area and this actually relies on the work of the curation teams Camilla has outlined so you wouldn't find anything if there wouldn't be a curation team basically making sure that there's the metadata that links this data set to this region and then from there you can actually like in this example for example I have again the primary visual area I will see here that there's also a map of that area in the big planet high resolution and I can click on it it will take me to the knowledge graph which is the database with all the data sets we will also look at that data with all the information about this data set so there's a long description, there's a DOI, there's a publication you find a license under which you can use that data set you find the files and related publications and you also find the link that takes you into the atlas viewer so it's cross connected, you get from the viewer you can go into this database with all the rich information and back in this case if I go back because this data set is a map that has been mapped in the high resolution big brain space I would automatically get back into the data space so I would now see the same area mapped in the big brain and just to conclude before we play with it so in principle, browsing atlases in the viewer is the same thing as searching data sets in the text search in the human brain project similar as you would have it in Google so you might search for restaurants in Warsaw and you will get a text list of these restaurants but you can also switch to Google Maps and you will get that same restaurants in the area pinned to these locations so it's the same effect but let's get our hands on it and the idea was that we start with the rodent plane so I think there were some instructions distributed before the course already that you should have a recent version of Firefox or Chrome on your computer to run these exercises so if you maybe tricky you want to take over at that point so the idea is that we use now the Atlas viewer to look up the rock brain atlas and to basically explore the hippocampus I don't know how many of you are well known with the anatomy of the hippocampus or able to find the boundaries of the subregions there but the idea was to say well the hippocampus is a very distinct structure in the brain it has this sausage shape, it's curved and it is considered to be quite complex so it has many different layers in subregions that can be difficult to identify and the use of an atlas is very important to find that properly and of course the hippocampus can also be challenging to navigate it if you have orientations of sections or images that is not standard the shape in the human resembles of course the sea horse hence the name hippocampus you also have the corneum among the CA fields resembling the curved shape of the almond's horn so I think that if you move to the next slide people the task was to go to the HPP viewer there is a link here where you can also enter it through the human brain project website and then go to explore atlases launch the viewer that Timo just demonstrated and then select the voxel space rat brain atlas with the lineations try to use this to simply find the ventate gyrus and it's bound with the CA3 field and then try to use the potential of the viewer to cut through this region in 3D to just look at how its shape changes as you change the angle of the viewer and then after that we will have a similar type of exercise with the human brain just try it out maybe quick instructions so you move the images by simply clicking and dragging and if you hold shift and then click and drag you will get oblique slices so you will basically rotate by shift click and drag and zooming is simply with a scroll wheel it should be intuitive and there is also the big brain available and we just suggest that you try to find the primary motor cortex in the human as a second exercise and if you find it in the big brain it is interesting to see if you can spot some of the giant bit cells which you have in the motor cortex it takes a moment and in the search list you should among other entries find the probabilistic maps so here in that case is the probabilistic map and you see a little eye which allows you actually to see the probabilistic map so if I hit this little eye it will show me the probabilistic map and it will at that moment remove the rest of the atlas so you see a huge difference this is really the probabilistic map and if I disable it again you see how the same area in the maximum probability map is much more restricted so the real rich information is in the probability maps and I just suggest this by right clicking and searching for related data sets and if you are interested to see what this probabilistic map is about you can just click on the name of this data set and it takes you to the knowledge graph page with the descriptions and then for the second task so if you just select here the big brain and you just zoom in with the scroll wheel or on a Mac touchpad with two fingers it just takes you to the high resolution actually I think I'm already here in the motor cortex


I've been waiting for this chance to let you know you're the one and I will never never never let you go I don't care This is coffee machete, what are the classics in the building? Hey, no.


Hi, I'm Zor. Welcome to Unizor education. Today's lecture will be about truncated pyramids. It's a continuation of the pyramids topic. Now, obviously this is part of the course of advanced mathematics for high school students. It's presented on Unizor.com. That's where I suggested to which this lecture from because there are notes and in this particular lecture actually the notes are quite extensive. So I do suggest you to look at the notes before or after listening to this lecture. Alright, so this is about truncated pyramid and first we have to explain what is truncated pyramid. Well, that's actually quite simple. You have let's say a pyramid like this quadrilateral pyramid with some kind of a quadrilateral at the base. Well truncated means we just cut off the top of it, basically. That's it. And whatever is left is truncated pyramid. Now, let me be a little bit more specific. So let's say we have pyramid like this. Now next what I will do is I pick any point, let's say this one a prime on SA H and draw a plane parallel to the base plane. Let's say this is the base plane and now I'm cutting with a plane parallel to beta. Let's call it gamma and as a result my pyramid will be cut like this something like this. That's what plane gamma will cut off the pyramid. Now this is supposed to be invisible. Right? Okay. And intersection of this plane with SB I will call B prime with C, C prime and with D, D prime. So A, B, C, D, A prime, B prime, C prime, D prime. This figure which is left after right cut off the top using this plane parallel to the base. This is called a truncated pyramid. That's the definition. Now very elementary properties. First of all, since this plane is parallel to this one and you can consider S, A, B plane as truncating these two and you know the theory if you have two parallel planes and you have another one which transcends both of them then the resulting intersections of this plane with the parallel planes will be parallel lines. So A, B and A prime, B prime are parallel to each other because this plane is parallel to this plane and this is the plane which intersects them both. Similarly, B, C parallel to B prime, C prime, etc. So all corresponding edges will be parallel to each other. Which in particular means that A, B, B prime, A prime is a trapezoid, obviously, as well as all other sides. So sides, side faces of truncated pyramid are trapezoids, right? That's that simple. Now, let's consider triangle S, A prime, B prime and S, A, B. Now, since A, B and A, B prime are parallel to each other, these two triangles are similar with the scaling center at S, at apex and the factor basically being S, A, divided by S, A prime. Now, that's exactly the same factor as between S, B and S, B prime and now if you consider triangle S, B, C and S, B prime, C prime, you see that the S, C and S, S, C and S, C prime also have the same relationship, also are of the factor F. So this factor F is shared among all of these guys because the factor of this is equal to factor of this, factor of this is equal to factor of these and factor of these is equal to factor of S, G and S, D prime. So they're all the same and same exactly ratio for A, B, relative to A, B prime. So this is a very interesting situation. Everything in the small pyramid and the large pyramid is proportional with the same scaling factor F and center S. In particular, it means that not only every linear is proportional, also the errors of corresponding pieces of these pyramids are proportional, but the proportionality is F square. Remember this? So the area of let's say A, B, C, D divided by area of A prime, D prime, C prime, D prime is equal to F square. So remember when we were talking about similarity in the three-dimensional world, linear elements are proportional to some factor and aerial quantities, like area of a triangle or area of quadrilateral, they are proportional to F square. We did discuss this. So that's very important because we will use it obviously. Now what else is important here? Okay, so let's draw an altitude from S down to H and obviously intersects the top quadrilateral as well at point H prime. Now my statement is that H S H ratio to S H prime is also the same F. Now, how can I prove that? Well, it's really very easy. It's basically, you can consider S A H plane which intersects two parallel planes, beta and gamma and that's why A H is parallel to H A prime H prime and therefore they are proportional and proportionality is exactly the same as S A to S H to S A prime. So again triangle S A H and S A prime H prime are similar and you have the same proportionality between these two lines as before. So it extends to to these. Now S H, I will call lower case H and S H prime lower case H prime. These are altitudes of the big and the small pyramid. All right. And these two guys area of the basis, I will call lower case S and upper case S. I mean lower case S and lower case S prime. Okay, so right now I would like to concentrate on these two. So we have big and small pyramid. We have their areas, areas of their basis related as F square and their altitudes are related as as plane F. Now, I think I have mentioned everything to start talking about the volume of the truncated pyramid. Now, what's very easy right now is to say that the volume of the truncated pyramid is basically the difference between the volume of the big pyramid and the small pyramid which I'm cutting out. So basically V is equal to one-third S H minus one-third S prime H prime. Where S is area of the ABCD, H is an altitude of the pyramid, S prime is area of A prime, B prime, C prime, D prime and H prime is the altitude of that small pyramid. That's fine, but it's actually it's not good enough. And let me explain you why. Now, you see if we are talking about truncated pyramid and you would like to express its volume in some terms, I better use the terms which belong to truncated pyramid, not to some composition of this truncated pyramid and something on the top which I don't really have, etc. So I would like to express the volume of the truncated pyramid in terms of elements of the truncated pyramid, not the elements of the pyramid which does not exist actually. So, what does exist? Well, what does exist is the the altitude of the truncated pyramid itself, H H prime. Let's call it A. So, what I would like to express the volume, not in terms of S, which is a characteristic of a truncated pyramid, S prime, which is also a characteristic of a truncated pyramid and not in terms of H and H prime, but in terms of A, which is basically the height of the pyramid itself, which happens to be, by the way, H minus H prime, right? So, the height of the truncated pyramid is the difference between the height of the big pyramid and the small pyramid. So, I don't like this. I would like to express instead of B in terms of S, S prime and A, not H and H prime. Question is, is it possible? Well, let's just think about it. I don't really need this because right now we are in the algebra world. Look at this. This one, this one. Okay. So, we have proportionality between areas, proportionality between this. Now, let's consider these three guys. What's known? What's unknown? I would like to express the volume in terms of S, S prime and A. So, these are kind of known variables. F is not known, H and H prime is not known. So, we have three unknowns and three equations. So, what if I will solve these equations and I will get the values of H and H prime in terms of S, S prime and A and substituted here? Well, that would be my final result and final formula where my volume is expressed in terms of S, S, S prime and A. No H and no H prime. So, that's all I want to do. I would like to exclude H and H prime from this formula using these three equations with three variables which I can solve. Solve for F and H and H prime, right? Well, okay. So, for F actually, it's very simple. It's square root of S divided by S prime. So, that's it. And I don't really need this equation anymore. Also, what I will do, I will express A plus H1. I will express S as A plus H prime. So, what I can do right now is I can actually substitute. Now, from here, I can actually take, if I will put H prime here instead of H, that would be F is equal to A plus H prime over H prime, which is equal to H prime plus 1, right? From which I can derive H prime is equal to F minus 1, A divided by F minus 1, but I know F. So, that's this. And now I can do this. So, you see, I have H and H prime expressed in terms of A and S and S prime. So, that's all I need, actually. I have to substitute into this formula. Well, and go to simplify it somehow if I can, right? So, let's do it. So, what do I need? I really need this line and this line. I don't need F anymore because F does not participate in my volume formula. So, the only thing is, let me just simplify it a little bit, this one. H is equal to, if I will use common denominator, it would be A times square root minus A and plus A. So, it would be A square root of S over S prime divided by square root of S over S prime minus 1. So, these are two values for H and H prime, which I'm going to substitute into this formula. And what do I have? V equals 1 third S H, which is A square root of S over S prime divided by square root of S over S prime minus 1. Minus 1 third of S prime H prime, which is A over the same denominator. So, that's all I have to simplify. So, from now on it's just technicality. Okay, so what do I do? Well, let me just make very quick thing. So, I will multiply by square root of S prime, both denominator and denominator. So, what I will have is, now A over 3 would be outside. A and A and 1 third and 1 third is all outside the parenthesis. Now, inside I will have, so if I will multiply by square root of S prime, I will have, on the top I will have S square root of S. On the bottom I will have square root of S minus square root of S prime, right? If I multiply by square root of S prime, this is this and this will be this. Minus and denominator actually is the same, so I can use the same here. S prime, I multiply by square root of S prime and denominator will be the same as this one. So, that's basically my result, right? Well, I can obviously simplify it even more because very simple thing. Well, probably the easiest way to explain is this one. If I will put like this, what do I have in this case? S square root of S is basically X cube, right? And this one is Y cube and this one is X minus Y.  If you don't believe me or if you don't remember this formula, just multiply this by this and you will get this.  Everything else will be reduced, cancelled out. So, what is this? X cube minus Y cube divided by X minus Y is this one. So, my result is A divided by 3 and in parenthesis I will have X square which is S plus X Y which is square root of SS prime and Y square S prime. And this is the final formula for the volume of the truncated pyramid. It's one-third of the altitude and then you should multiply it by this expression where S and S prime are areas of two bases of the pyramid. Well, that's it. I would suggest you to read the notes for this lecture because they basically explain the same thing and all the formulas and transformations are there. Well, basically, that's it. Thank you very much and good luck.