GS Bloch Equations Simulator 1. GS Introduction to Medical Physics IV Bloch Equation Simulator Introduction
|
|
- Muriel Clark
- 5 years ago
- Views:
Transcription
1 GS Bloch Equations Simulator 1 Purpose GS Introduction to Medical Physics IV Bloch Equation Simulator Introduction The purpose of this laboratory is to investigate some of the implications of the Bloch Equations and to look at basic pulse sequences used in nuclear magnetic resonance and in magnetic resonance imaging. Materials and Methods The tool that facilitates this investigation is a software simulation of the Bloch equations called SpinWright. It is written in the Java programming language and should work on any computer that has a recent Java Runtime Environment installed. For some of the exercises, the simulated data will be saved as text files or as binary files and may be analyzed further in a spreadsheet program such as Excel or by image processing programs such as Matlab or Image/J. SpinWright Tips This lab handout is what currently passes for user documentation of the program. Here is a brief introduction that will be supplemented by the presentation during the formal lab session. The basic steps in simulating an NMR experiment are: to define the subject, which is the collection of spins (the word spin is used in this context as a shorthand term for an isochromatic spin group), to define the pulse sequence, to set the parameters of the experiment, to run the simulation of the experiment, and finally to analyze the simulation output. Some of the input information is (or can be) stored in plain ASCII text. In particular, that is true of pulse sequences. The following table contains a nonsense pulse sequence that shows all of the pulse sequence elements types currently supported by SpinWright. The standard filename extension for ASCII-formatted pulse sequences is PPG. Type Parent Name Parameters (Type-Dependent Meanings) Loop - MainLoop HardPulse MainLoop Hard TruncSincRFPulse MainLoop SoftRF Loop MainLoop InnerLoop RampGradientTable InnerLoop GxRamp InnerLoop XYSprialGradient InnerLoop Spiral RampGradient MainLoop GzRamp StatusPulse MainLoop ADC_ON DelayElement MainLoop Wait Equilibrate MainLoop Eql Spoil MainLoop Spl 79000
2 GS Bloch Equations Simulator 2 The meanings of the fields are given below. The one immutably constrained aspect of these is that the first line of a pulse sequence must be a Loop that is named MainLoop and that has as its second field (which is the name of its parent loop) the particular entry -. It typically starts at time 0 and has a duration equal to the entire duration of the pulse program. It can repeat several times, but is shown here with only one pass. The columns are separated by white space (spaces and tabs). An important implication of this is that one cannot have spaces or tabs in the name of a pulse sequence element. The first column is always the element type. Loop, HardPulse, TruncSincRFPulse, RampGradient, RampGradientTable, XYSpiralGradient, DelayElement, StatusPulse, Equilibrate and Spoil are the supported types at present. The second column is the name of the parent loop. Since the MainLoop is the body of the pulse sequence, it has no parent and thus uses the special character - for its parent. The next column is the name of the element. With the exception of the main loop, which must be named MainLoop (and yes, case matters), the names can be whatever suits you, provided that the name contains no whitespace (e.g., spaces or tabs). You should exercise caution in putting punctuation marks into element names, but underscores don t seem to bother the program. The subsequent columns vary in meaning depending on the particular element type. Loop Parent_Loop(str) Element_Name(str) Start_Time(int µs) Duration_Time(int µs) Passes(int) HardPulse Parent_Loop(str) Element_Name(str) Amplitude(float µt) Phase(float deg) Offset (float freq) Start_Time(int µs) Duration_Time(int µs) TruncSincRFPulse Parent_Loop(str) Element_Name(str) Amplitude(float µt) Phase(float deg) Offset (float freq) Zero_Crossings_(Halfside)(int) Start_Time(int µs) Duration_Time(int µs) RampGradient Parent_Loop(str) Element_Name(str) GxAmplitude(float mt/m) GyAmplitude(float mt/m) GzAmplitude(float mt/m) Start_Time(int µs) Duration_Time(int µs) RampUp_Time(int µs) RampDown_Time(int µs) RampGradientTable Parent_Loop(str) Element_Name(str) ControllingLoop_Name(str) GxStartAmplitude(float mt/m) GxStopAmplitude(float mt/m) GyStartAmplitude(float mt/m) GyStopAmplitude(float mt/m) GzStartAmplitude(float mt/m) GzStopAmplitude(float mt/m) Start_Time(int µs) Duration_Time(int µs) RampUp_Time(int µs) RampDown_Time(int µs) XYSpiralGradient Parent_Loop(str) Element_Name(str) GxAmplitude(float mt/m) GyAmplitude(float mt/m) GzAmplitude(float mt/m) Field_of_View(float cm) Maximum_Gradient_Slewrate(float mt/m/ms) Number_of_Wisps(int) Start_Time(int µs) Duration_Time(int µs) [NB: GyAmplitude and GzAmplitude are ignored use GxAmplitude to set the maximum gradient amplitude. Also note that this currently does not read the
3 GS Bloch Equations Simulator 3 scanner information, although that would be an obvious and desirable thing to do.] StatusPulse Parent_Loop(str) Element_Name(str) StatusBit(int) Start_Time(int µs) Duration_Time(int µs) DelayElement Parent_Loop(str) Element_Name(str) Start_Time(int µs) Duration_Time(int µs) Equilibrate Parent_Loop(str) Element_Name(str) Start_Time(int µs) Spoil Parent_Loop(str) Element_Name(str) Start_Time(int µs) The starting time is with respect to the containing loop, not to the beginning of the entire pulse sequence. For RampGradients, the duration includes both the ramp-up and the ramp-down times, as well as the full-on time. A major MR manufacturer does not include the ramp down time in the gradient duration in their pulse programmer, but I felt that it would be more consistent if the duration always comprised the entire element (and it also made the coding a little easier for me). The downside of this is that one has to think a little harder to figure out exactly the value of duration to use (e.g., in a compensated gradient waveform). For the RampGradientTable, it is possible for the gradient to appear within several nested loops, but not to be incremented by the innermost loop (e.g., the slab-direction of a 3DFT sequence) but rather by one farther out. The ramp gradient table amplitude values have separate start and stop values. The stop value is not actually reached, but rather the last value is one gradient increment shy of the stated stop value. If you must achieve a particular stop value, plan accordingly and set the nominal stop value one increment higher than your target stopping value. The XYSpiralGradient implements the algorithm giving in GH Glover, Simple Analytic Spiral K-Space Algorithm, Magnetic Resonance in Medicine 42: , It is an Archimedean spiral with a Λ value of five. Note that the maximum gradient slewrate is specified in mt/m per millisecond. This is so the number will be manageable. The StatusPulse is used to mark parts of the output data stream for further processing (or it conceivably could be used as a trigger pulse for some piece of hardware, so if you re using this program to create a figure for a paper, it might be handy just for graphical purposes). The HardPulse is pretty straightforward. The TruncSincRFPulse implements a box-car truncated sinc function with a configurable number of zero-crossings. The number of zero-crossings is specified by the number to one side of the center, so the main lobe only would have a zero-crossing value of unity while a pulse with the first side lobes would have a zero-crossing value of two. The number of zero-crossings in combination with the duration controls the bandwidth of the pulse, while the number of zero-crossings affects the sharpness of the pulse edges in temporal frequency (and hence the edge qualities of the slice if the pulse is used for slice selection). Two features that were introduced in 2012 are "magic" in the sense that they are not realistic, but rather ideal. Equilibrate sets the z-axis magnetization equal to the spin density and sets the x-y plane magnetization to zero. Spoil sets the x-y plane magnetization to zero but leaves the z-axis magnetization alone. These are useful for teaching purposes, but unfortunately they are not possible in the real world. In the main SpinWright menu bar, there is a Pulse Sequence choice. The New option under Pulse Sequence presents a GUI-based pulse sequence entry tool. This is nice because it takes care of the bookkeeping of start and duration times with only a
4 GS Bloch Equations Simulator 4 slight loss of generality. We ll focus on it in class, because with it you can produce all three stored representations of a pulse sequence: PPV, PPG and PPC files. Note that Java uses the UNIX newline (LF) rather than the DOS convention (CR-LF), so in Windows, use WordPad rather than NotePad to edit and print these text files. One can either read in a PPV file using Pulse Sequence Actions Load PPV, which will populate the GUI with the pulse sequence elements, or create a blank one using Pulse Sequence Actions New. The pulse sequence elements may be added, deleted and modified in the GUI. Then click Pulse Sequence Sequence Ready, which converts the graphical version into an internally stored PPG. It is not a bad idea to use Pulse Sequence Actions Save PPV (Visual) As as a matter of course. Then, go to Pulse Sequence Sequence and use the process below to compile the internally stored PPG and proceed. To summarize up to this point, the GUI representation is stored in a file with a PPV extension. That representation gets converted into a similar representation with a PPG extension. Both of these are oriented around pulse sequences. Please note that the format of the gradients in PPV files changed slightly (in order to correct a bug) and so PPV files that were created in versions before (January 2018) will not work, although they can readily be edited by hand if need be, to make them work in later versions. Once one has a PPG-formatted pulse sequence, it is compiled into a time-based representation in which each of the rf and gradient waveforms is represented as amplitudes at regular time points. You can think of this as a list mode representation of the waveforms. In order to compile the PPG-formatted pulse sequence, one must specify the starting time, duration, and clock tick of the experiment. These are defined on the Experiment page. The Experiment Action Pulse Sequence Parameters menu item sets up the experiment to accommodate the entire duration of the pulse sequence. If you want to change the starting time, duration, or sampling period of the experiment later, you can enter the new numbers on the Experiment page and then (re)compile the pulse sequence with Pulse Sequence Sequence Compile or Experiment Actions Compile PPG (ASCII). Once the pulse sequence has been compiled, a graph of the waveforms can be viewed with Pulse Sequence Sequence Display. The collection of the isochromatic spin groups that are to be simulated is selected through the Subject menu option. Subject Actions Load Binary Subject loads a file with a SUBJECT file extension while Subject Actions Load ASCII Subject loads a file with a SUBJASC file extension and Subject Actions New clears the existing subject, if any. The ASCII file format describes one isochromatic spin group per line. The parameters are separated by white space (i.e., either spaces or tabs) and must be in the following order: Gyromagnetic_Ratio (MHz/T), Spin_Density (in arbitrary units, but use reasonably large numbers), T 1 (msec), T 2 (msec), Chemical_Shift (ppm), m x, m y, m z, position x (cm), position y (cm), position z (cm), velocity x (cm/s), velocity y (cm/s), velocity z (cm/s), acceleration x (cm/s 2 ), acceleration y (cm/s 2 ), acceleration z (cm/s 2 ), jerk x (cm/s 3 ), jerk y (cm/s 3 ), and jerk z (cm/s 3 ). The currently loaded subject is displayed in the GUI subject editor. The top part is an isochromatic spin group editor whereas the bottom part is a list of all of the ISGs in the subject. One may select a particular ISG to edit by clicking it in the list or by typing its order number in the Current ISG text box. There are controls to the right of the list for adding the ISG in the GUI to the list, replacing the selected ISG in the list by that in
5 GS Bloch Equations Simulator 5 the GUI, deleting the selected ISG or deleting all of them (the same as Subject Actions New). Note that if an experiment has been run, the values shown are those of the isochromats at the end of the experiment. This is currently the only way to see the effect of the experiment on a particular, individual isochromat. If one wants to rerun an experiment with the spins in their initial states, the subject must be reloaded, using Subject Actions Reload, or else the simulation will start where the last one left off. Note that Reload works only if the subject has been loaded from a file, so if you create a new subject that you might want to use more than once, save it to a file and then load it from the file before running experiments. One also needs to specify some characteristics of the Scanner. The field strength is used in a number of internal calculations, and it is possible to specific some imperfections in the static magnetic field, although we will not use the B 0 imperfections feature in this lab. The gradient information is currently ignored by the simulation, although it is envisioned for the future that the maximum gradient amplitudes and slew rates could be applied as constraints on pulse sequences such as the XYSpiralGradient element. When all of this has been set, the Experiment Actions Run option performs the simulation and automatically presents a graph of the three spatial components of the net magnetization vector as a function of time. This plot can be aligned with the plot from Sequence Display to visualize the effect of the pulse sequence elements on the net magnetization. These plots are still extremely limited. It is possible to save the net magnetization vector in an ASCII file. Experiment Actions Save Data Save All Data As will save the entire experiment s time series of the net magnetization vector whereas Experiment Actions Save Data Save All Status Lines As saves only the net magnetization vector's values at time points that are marked by a status line and Experiment Actions Save Data Save Status Line Flagged Data As 0, 1,, 8 or Save Status Line Number As will save only the temporal spans of data when the specified status line is on. In a Windows environment, these files can be dropped into or opened by Excel and analyzed and plotted in Excel. SpinWright has some rudimentary data analysis capability. If a status bit is set, one can perform a one-dimensional Fourier transform of the data flagged with a particular bit from the Analysis page. Checking the Real/Imaginary and the Magnitude/Phase boxes presents those views of the flagged data and their respective Fourier transforms. If the data length is a power of two, a radix-2 FFT is used to perform the transformation. For other data lengths, a DFT is used. If a two-dimensional dataset is set up properly, a two-dimensional Fourier transform can be performed. The results of the 2DFT are saved as 32-bit real-valued binary data, whereas most other outputs are ASCIIencoded. The saved data are four images deep: real, imaginary, magnitude and phase. The lab exercises will always assume that you have gotten SpinWright running and that it is in a normal state. If SpinWright seems to be unresponsive, you might need to increase the memory allocated to it as described in the installation document or in the Starting SpinWright section at the end of this document. Thanks to the work of Chris Walker, the memory requirement has been reduced dramatically and the computationally intensive parts have been multi-threaded so that the execution time is much shorter on multiple core computers.
6 GS Bloch Equations Simulator 6 Here are a few summary suggestions for minimizing the agony of using this software: 1) Names in pulse programs cannot contain whitespace (e.g., spaces and tabs). The GUI interface tries to replace whitespace with underscores, but if you are creating a PPG file by hand, remember not to use spaces or tabs in names because those separate distinct items in a row of text. 2) The various text entry boxes do no error checking. If you enter junk where the program expects a number, it will not comport itself in an optimal fashion. 3) When you look at a pulse program file (PPG, PPV or PPC), a subject file (SUBJASC) or an ASCII data file on a Windows system, use Wordpad rather than Notepad. This is because Java uses UNIX-style newline markers (LF) rather than the Windows-style (CR-LF) when reading and writing text. 4) After having run an experiment, Subject will display the magnetization values of each spin at the conclusion of the experiment in the list. As mentioned above, enter a new subject with Subject New and then the add buttons, save it before you run an experiment or you just had a single-shot subject. This is a feature rather than a bug because it is, at present, the only way to look at the magnetization of individual isochromats following an experiment. When the Subject tab is orange, it means that the spin system is no longer in its original state. 5) Some of the saved files (.MRSCNR and.subject) are saved in a fashion that makes them dependent on this particular version of SpinWright (they are stored as serialized objects for reasons that made sense fifteen years ago but not now). Please don t invest a huge amount of time in creating large binary subject files (.subject), for example, if you expect them to work with future versions; they won t. Instead, save ASCII versions. If push comes to shove, you can edit a SUBJASC file by hand to accommodate version changes. 6) Right now, the data are sampled at multiples of the clock tick (with a default of a sample on each clock tick). The clock tick is really for the benefit of the numerical integration and the specification of gradient and rf waveforms, so the program allows one to specify the sampling multiple on the experiment page. If you want to get a power of two length to the data, you need to pay attention to the clock tick and the duration of the Status Line on period (e.g., with a duration of microseconds and a 100 microsecond clock tick, you ll get 5120 points, which could be slow to transform, even for an FFT, so consider using a sampling multiple of 10 ticks as well to make the dataset more tractable). You also have to be sure that every time interval is an integer multiple of the click tick or the program will decline to run the simulation. (Chris added a warning about this, whereas the program used simply to crash unceremoniously. Thanks, Chris.) 7) The simulator can save the one-dimensional Fourier transform of the data in a text format for subsequent use in another program. It saves the twodimensional transforms as 32-bit real-valued binary data in four planes: real, imaginary, magnitude and phase (from -π to π). 8) You can use a screen capture program to grab graphical outputs for insertion into reports.
7 GS Bloch Equations Simulator 7 9) If the program just seems to hang, it might have run out of allocated memory. See the next section for how to set the heap size for Java. If you are suspicious that this is the problem run the program from the command line or with java.exe instead of javaw.exe (again, see below) so that you can see any error messages. An OutOfMemoryException typically means that your simulation is too big for the allocated heap and that you should enlarge it as described below. I have yet to figure out how to handle this situation automatically and to provide a useful diagnostic message. Thanks to Chris' work, the program now uses memory much more efficiently and this is less likely to be a problem than it had been in the past. Starting SpinWright Exactly how you start SpinWright depends upon the operating system. In general, if you go to the installation directory and double-click the file SpinWright.jar (which is an "executable JAR file"), it should start. For some of the exercises, you might need to give Java more memory, so you should start it from the command line with a command such as java -Xms512m -Xmx512m -jar SpinWright.jar, which tells Java to use 512 megabytes of RAM (see for links to the command line documentation for many parts of the Java system). Of course, if you have more memory available, you can set the figure to be larger than 512m (i.e., 512 megabytes). If SpinWright inexplicably hangs, you should suspect that you have run out of memory allocated to Java. Try increasing the allocated memory (within the constraint of the physical memory available on your computer) and run SpinWright again. The distribution includes a sample shortcut for Windows, which you can edit to customize to your environment (we'll cover this in the lab session). Make sure that the path to the javaw.exe command is correct for your system. The Oracle installers create a path C:\\ProgramData\Oracle\Java\javapath that is supposed to be independent of the precise version of Java that is installed. Set the Start in: folder of the shortcut to be that folder in which you installed SpinWright. You can substitute the command java.exe for javaw.exe and you will get a window that might show helpful error messages if the program is behaving badly. You can add the -Xms and -Xmx options to the shortcut to allocate more memory if you would like that to happen every time that you use the shortcut. The -Xms option is not required, whereas the -Xmx option is, if you want to increase the size of the memory that is allocated to Java.
GS Bloch Equations Simulator 1. GS Introduction to Medical Physics IV Bloch Equation Simulator Introduction
GS02-0193 Bloch Equations Simulator 1 Purpose GS02-0193 Introduction to Medical Physics IV Bloch Equation Simulator Introduction The purpose of this laboratory is to investigate some of the implications
More informationOpen file format for MR sequences
Open file format for MR sequences Version 1.1 Kelvin Layton Maxim Zaitsev University Medical Centre Freiburg kelvin.layton@uniklinik-freiburg.de maxim.zaitsev@uniklinik-freiburg.de This file specification
More informationSigned umbers. Sign/Magnitude otation
Signed umbers So far we have discussed unsigned number representations. In particular, we have looked at the binary number system and shorthand methods in representing binary codes. With m binary digits,
More informationThe first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.
Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you
More informationHacking FlowJo VX. 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From
Hacking FlowJo VX 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From Contents 1. Change the default name of your files. 2. Edit your workspace
More informationUsing Excel This is only a brief overview that highlights some of the useful points in a spreadsheet program.
Using Excel 2007 This is only a brief overview that highlights some of the useful points in a spreadsheet program. 1. Input of data - Generally you should attempt to put the independent variable on the
More informationTips and Guidance for Analyzing Data. Executive Summary
Tips and Guidance for Analyzing Data Executive Summary This document has information and suggestions about three things: 1) how to quickly do a preliminary analysis of time-series data; 2) key things to
More informationClass #10 Wednesday, November 8, 2017
Graphics In Excel Before we create a simulation, we need to be able to make a drawing in Excel. The techniques we use here are also used in Mathematica and LabVIEW. Drawings in Excel take place inside
More informationSpectroscopic Analysis: Peak Detector
Electronics and Instrumentation Laboratory Sacramento State Physics Department Spectroscopic Analysis: Peak Detector Purpose: The purpose of this experiment is a common sort of experiment in spectroscopy.
More informationRunning Java Programs
Running Java Programs Written by: Keith Fenske, http://www.psc-consulting.ca/fenske/ First version: Thursday, 10 January 2008 Document revised: Saturday, 13 February 2010 Copyright 2008, 2010 by Keith
More informationCOMP 110 Project 1 Programming Project Warm-Up Exercise
COMP 110 Project 1 Programming Project Warm-Up Exercise Creating Java Source Files Over the semester, several text editors will be suggested for students to try out. Initially, I suggest you use JGrasp,
More informationTutorial: Working with the Xilinx tools 14.4
Tutorial: Working with the Xilinx tools 14.4 This tutorial will show you how to: Part I: Set up a new project in ISE Part II: Implement a function using Schematics Part III: Implement a function using
More informationThe Dynamic Typing Interlude
CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,
More informationMRI Physics II: Gradients, Imaging
MRI Physics II: Gradients, Imaging Douglas C., Ph.D. Dept. of Biomedical Engineering University of Michigan, Ann Arbor Magnetic Fields in MRI B 0 The main magnetic field. Always on (0.5-7 T) Magnetizes
More informationMassHunter File Reader
MassHunter File Reader vers 1.0.0 2015 Quadtech Associates, Inc. All Rights Reserved Release date: November 18, 2015 www.quadtechassociates.com MassHunter File Reader Welcome to MassHunter File Reader.
More informationDeep Learning for Visual Computing Prof. Debdoot Sheet Department of Electrical Engineering Indian Institute of Technology, Kharagpur
Deep Learning for Visual Computing Prof. Debdoot Sheet Department of Electrical Engineering Indian Institute of Technology, Kharagpur Lecture - 05 Classification with Perceptron Model So, welcome to today
More informationName EGR 2131 Lab #6 Number Representation and Arithmetic Circuits
Name EGR 2131 Lab #6 Number Representation and Arithmetic Circuits Equipment and Components Quartus software and Altera DE2-115 board PART 1: Number Representation in Microsoft Calculator. First, let s
More informationLab 4: Super Sudoku Solver CSCI 2101 Fall 2017
Due: Wednesday, October 18, 11:59 pm Collaboration Policy: Level 1 Group Policy: Pair-Optional Lab 4: Super Sudoku Solver CSCI 2101 Fall 2017 In this week s lab, you will write a program that can solve
More informationPHY Microprocessor Interfacing Techniques LabVIEW Tutorial - Part X File Output and Input
PHY 406 - Microprocessor Interfacing Techniques LabVIEW Tutorial - Part X File Output and Input Introduction File I/O tends to be complex - simply because there are a myriad of things that you might want
More informationJava Without the Jitter
TECHNOLOGY WHITE PAPER Achieving Ultra-Low Latency Table of Contents Executive Summary... 3 Introduction... 4 Why Java Pauses Can t Be Tuned Away.... 5 Modern Servers Have Huge Capacities Why Hasn t Latency
More informationSFU CMPT 379 Compilers Spring 2018 Milestone 1. Milestone due Friday, January 26, by 11:59 pm.
SFU CMPT 379 Compilers Spring 2018 Milestone 1 Milestone due Friday, January 26, by 11:59 pm. For this assignment, you are to convert a compiler I have provided into a compiler that works for an expanded
More informationLab 1 Introduction to MATLAB and Scripts
Lab 1 Introduction to MATLAB and Scripts EE 235: Continuous-Time Linear Systems Department of Electrical Engineering University of Washington The development of these labs was originally supported by the
More informationChemistry 30 Tips for Creating Graphs using Microsoft Excel
Chemistry 30 Tips for Creating Graphs using Microsoft Excel Graphing is an important skill to learn in the science classroom. Students should be encouraged to use spreadsheet programs to create graphs.
More informationIf Statements, For Loops, Functions
Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements
More informationMath 2250 Lab #3: Landing on Target
Math 2250 Lab #3: Landing on Target 1. INTRODUCTION TO THE LAB PROGRAM. Here are some general notes and ideas which will help you with the lab. The purpose of the lab program is to expose you to problems
More informationAn Introduction To Presentation MACCS
An Introduction To Presentation MACCS Outline Experiment structure Tabs SDL and PCL Script structure: Settings and setup in your script Events PCL, logic and loops page 2 Experiment Structure An overall
More informationStarting to Program in C++ (Basics & I/O)
Copyright by Bruce A. Draper. 2017, All Rights Reserved. Starting to Program in C++ (Basics & I/O) On Tuesday of this week, we started learning C++ by example. We gave you both the Complex class code and
More informationMatlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia
Matlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia The goal for this tutorial is to make sure that you understand a few key concepts related to programming, and that you know the basics
More information2D spatially selective excitation pulse design and the artifact evaluation
EE 591 Project 2D spatially selective excitation pulse design and the artifact evaluation 12/08/2004 Zungho Zun Two-dimensional spatially selective excitation is used to excite a volume such as pencil
More informationHands-on Lab. Open-Loop Response: System Identification
Hands-on Lab Open-Loop Response: System Identification v r Motorized tethered cart A step or impulse response provides useful information that characterizes the system. With such data, one can then begin
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More information3. Simple Types, Variables, and Constants
3. Simple Types, Variables, and Constants This section of the lectures will look at simple containers in which you can storing single values in the programming language C++. You might find it interesting
More informationThe compiler is spewing error messages.
Appendix B Debugging There are a few different kinds of errors that can occur in a program, and it is useful to distinguish between them in order to track them down more quickly. Compile-time errors are
More informationLAB 5 Implementing an ALU
Goals To Do Design a practical ALU LAB 5 Implementing an ALU Learn how to extract performance numbers (area and speed) Draw a block level diagram of the MIPS 32-bit ALU, based on the description in the
More informationMindWare Electromyography (EMG) Analysis User Reference Guide Version Copyright 2011 by MindWare Technologies LTD. All Rights Reserved.
MindWare Electromyography (EMG) Analysis User Reference Guide Version 3.0.12 Copyright 2011 by MindWare Technologies LTD. All Rights Reserved. MindWare EMG 3.0.12 User Guide Internet Support E-mail: sales@mindwaretech.com
More informationQUICK EXCEL TUTORIAL. The Very Basics
QUICK EXCEL TUTORIAL The Very Basics You Are Here. Titles & Column Headers Merging Cells Text Alignment When we work on spread sheets we often need to have a title and/or header clearly visible. Merge
More informationComputer Hardware. Java Software Solutions Lewis & Loftus. Key Hardware Components 12/17/2013
Java Software Solutions Lewis & Loftus Chapter 1 Notes Computer Hardware Key Hardware Components CPU central processing unit Input / Output devices Main memory (RAM) Secondary storage devices: Hard drive
More informationEE225E/BIOE265 Spring 2011 Principles of MRI. Assignment 5. Solutions
EE225E/BIOE265 Spring 211 Principles of MRI Miki Lustig Handout Assignment 5 Solutions 1. Matlab Exercise: 2DFT Pulse sequence design. In this assignment we will write functions to design a 2DFT pulse
More informationMath 2250 Lab #3: Landing on Target
Math 2250 Lab #3: Landing on Target 1. INTRODUCTION TO THE LAB PROGRAM. Here are some general notes and ideas which will help you with the lab. The purpose of the lab program is to expose you to problems
More information2.1 Signal Production. RF_Coil. Scanner. Phantom. Image. Image Production
An Extensible MRI Simulator for Post-Processing Evaluation Remi K.-S. Kwan?, Alan C. Evans, and G. Bruce Pike McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University, Montreal,
More informationSite Owners: Cascade Basics. May 2017
Site Owners: Cascade Basics May 2017 Page 2 Logging In & Your Site Logging In Open a browser and enter the following URL (or click this link): http://mordac.itcs.northwestern.edu/ OR http://www.northwestern.edu/cms/
More informationFUZZY INFERENCE SYSTEMS
CHAPTER-IV FUZZY INFERENCE SYSTEMS Fuzzy inference is the process of formulating the mapping from a given input to an output using fuzzy logic. The mapping then provides a basis from which decisions can
More informationCS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and
CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 10: Asymptotic Complexity and What Makes a Good Algorithm? Suppose you have two possible algorithms or
More informationProgramming I Laboratory - lesson 01
Programming I Laboratory - lesson 0 Introduction in C++ programming environment. The C++ program structure. Computer programs are composed of instructions and data. Instructions tell the computer to do
More informationProgramming Project. Remember the Titans
Programming Project Remember the Titans Due: Data and reports due 12/10 & 12/11 (code due 12/7) In the paper Measured Capacity of an Ethernet: Myths and Reality, David Boggs, Jeff Mogul and Chris Kent
More informationVariables and Data Representation
You will recall that a computer program is a set of instructions that tell a computer how to transform a given set of input into a specific output. Any program, procedural, event driven or object oriented
More informationIntro to Igor Pro: Beyond Getting Started (Adapted from Ingrid Ulbrich 2009 lecture)
Intro to Igor Pro: Beyond Getting Started (Adapted from Ingrid Ulbrich 2009 lecture) CHEM-5181 Mass Spectrometry & Chromatography Prof. Jose L. Jimenez Last update: Aug 2011 1 A Note about Jose s Style
More informationINTRODUCTION TO LABVIEW
INTRODUCTION TO LABVIEW 2nd Year Microprocessors Laboratory 2012-2013 INTRODUCTION For the first afternoon in the lab you will learn to program using LabVIEW. This handout is designed to give you an introduction
More informationChapter 1. Numeric Artifacts. 1.1 Introduction
Chapter 1 Numeric Artifacts 1.1 Introduction Virtually all solutions to problems in electromagnetics require the use of a computer. Even when an analytic or closed form solution is available which is nominally
More informationCIS220 In Class/Lab 1: Due Sunday night at midnight. Submit all files through Canvas (25 pts)
CIS220 In Class/Lab 1: Due Sunday night at midnight. Submit all files through Canvas (25 pts) Problem 0: Install Eclipse + CDT (or, as an alternative, Netbeans). Follow the instructions on my web site.
More informationWhy C? Because we can t in good conscience espouse Fortran.
C Tutorial Why C? Because we can t in good conscience espouse Fortran. C Hello World Code: Output: C For Loop Code: Output: C Functions Code: Output: Unlike Fortran, there is no distinction in C between
More informationHANDS-ON START TO WOLFRAM MATHEMATICA. and Programming with the Wolfram Language. Cliff Hastings Kelvin Mischo Michael Morrison.
HANDS-ON START TO WOLFRAM MATHEMATICA and Programming with the Wolfram Language Cliff Hastings Kelvin Mischo Michael Morrison Champaign 11 11 1 111THE COMPLETE OVERVIEW 1 Chapter 1 The Very Basics 3 Chapter
More informationMATLAB. Devon Cormack and James Staley
MATLAB Devon Cormack and James Staley MATrix LABoratory Originally developed in 1970s as a FORTRAN wrapper, later rewritten in C Designed for the purpose of high-level numerical computation, visualization,
More informationSoundWriter 2.0 Manual
SoundWriter 2.0 Manual 1 Overview SoundWriter 2.0 Manual John W. Du Bois SoundWriter (available free from http://www.linguistics.ucsb.edu/projects/transcription, for Windows only) is software designed
More informationManual. User Reference Guide. Analysis Application (EMG) Electromyography Analysis
Phone: (888) 765-9735 WWW.MINDWARETECH.COM User Reference Guide Manual Analysis Application Electromyography Analysis (EMG) Copyright 2014 by MindWare Technologies LTD. All Rights Reserved. 1 Phone: (614)
More informationENGR 40M Project 3c: Switch debouncing
ENGR 40M Project 3c: Switch debouncing For due dates, see the overview handout 1 Introduction This week, you will build on the previous two labs and program the Arduino to respond to an input from the
More informationprintf( Please enter another number: ); scanf( %d, &num2);
CIT 593 Intro to Computer Systems Lecture #13 (11/1/12) Now that we've looked at how an assembly language program runs on a computer, we're ready to move up a level and start working with more powerful
More informationHow to Make Graphs with Excel 2007
Appendix A How to Make Graphs with Excel 2007 A.1 Introduction This is a quick-and-dirty tutorial to teach you the basics of graph creation and formatting in Microsoft Excel. Many of the tasks that you
More informationOur Strategy for Learning Fortran 90
Our Strategy for Learning Fortran 90 We want to consider some computational problems which build in complexity. evaluating an integral solving nonlinear equations vector/matrix operations fitting data
More informationContents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides
Slide Set 1 for ENCM 369 Winter 2014 Lecture Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Winter Term, 2014 ENCM 369 W14 Section
More informationExtreme Computing. Introduction to MapReduce. Cluster Outline Map Reduce
Extreme Computing Introduction to MapReduce 1 Cluster We have 12 servers: scutter01, scutter02,... scutter12 If working outside Informatics, first: ssh student.ssh.inf.ed.ac.uk Then log into a random server:
More informationExam 8N080 - Introduction MRI
Exam 8N080 - Introduction MRI Friday January 23 rd 2015, 13.30-16.30h For this exam you may use an ordinary calculator (not a graphical one). In total there are 6 assignments and a total of 65 points can
More informationUniversity of Florida EEL 3701 Dr. Eric M. Schwartz Madison Emas, TA Department of Electrical & Computer Engineering Revision 1 5-Jun-17
Page 1/14 Example Problem Given the logic equation Y = A*/B + /C, implement this equation using a two input AND gate, a two input OR gate and two inverters under the Quartus environment. Upon completion
More informationComputer Science Lab Exercise 1
1 of 10 Computer Science 127 - Lab Exercise 1 Introduction to Excel User-Defined Functions (pdf) During this lab you will experiment with creating Excel user-defined functions (UDFs). Background We use
More informationSECTION 1: INTRODUCTION. ENGR 112 Introduction to Engineering Computing
SECTION 1: INTRODUCTION ENGR 112 Introduction to Engineering Computing 2 Course Overview What is Programming? 3 Programming The implementation of algorithms in a particular computer programming language
More informationSection 4 General Factorial Tutorials
Section 4 General Factorial Tutorials General Factorial Part One: Categorical Introduction Design-Ease software version 6 offers a General Factorial option on the Factorial tab. If you completed the One
More informationBlix the Programmer. An Introduction to Programming. 1.1 We program time. 1.2 First we need a tool
Blix the Programmer An Introduction to Programming 1.1 We program time So you are eager to learn programming, ok let s code a time machine! Imagine you are a programmer like Blix above. Our goal is to
More informationVisual Physics Camera Parallax Lab 1
In this experiment you will be learning how to locate the camera properly in order to identify and minimize the sources of error that are introduced by parallax and perspective. These sources of error
More informationJava/RealJ Troubleshooting Guide
Java/RealJ Troubleshooting Guide by Bob Clark / Sharon Curtis / Simon Jones, September 2000 Some of these tips you will come across during your practical sessions, however we felt it would be helpful to
More informationValuable points from Lesson 8 Adobe Flash CS5 Professional Classroom in a Book
Valuable points from Lesson 8 Adobe Flash CS5 Professional Classroom in a Book You are expected to understand and know how to use/do each of these tasks in Flash CS5, unless otherwise noted below. If you
More informationTroubleshooting An Embedded Sametime Install by Julian Robichaux, panagenda originally published on socialbizug.org, November 2013
Troubleshooting An Embedded Sametime Install by Julian Robichaux, panagenda originally published on socialbizug.org, November 2013 I was testing the new IBM Sametime 9 client on a few different virtual
More informationAn introduction to plotting data
An introduction to plotting data Eric D. Black California Institute of Technology February 25, 2014 1 Introduction Plotting data is one of the essential skills every scientist must have. We use it on a
More informationLaboratory 6. - Using Encounter for Automatic Place and Route. By Mulong Li, 2013
CME 342 (VLSI Circuit Design) Laboratory 6 - Using Encounter for Automatic Place and Route By Mulong Li, 2013 Reference: Digital VLSI Chip Design with Cadence and Synopsys CAD Tools, Erik Brunvand Background
More informationPatterning Math Lab 4a
Patterning Math Lab 4a This lab is an exploration of transformations of functions, a topic covered in your Precalculus textbook in Section 1.5. As you do the exercises in this lab you will be closely reading
More informationUniversity of Florida EEL 3701 Dr. Eric M. Schwartz Department of Electrical & Computer Engineering Revision 0 12-Jun-16
Page 1/14 Quartus Tutorial with Basic Graphical Gate Entry and Simulation Example Problem Given the logic equation Y = A*/B + /C, implement this equation using a two input AND gate, a two input OR gate
More informationBinary file structure for PAMGUARD detector output. Version 4.0
Binary file structure for PAMGUARD detector output. D. Gillespie & M. Oswald, February 2017 1 Introduction 4.0 This document describes the binary file storage structures used by PAMGuard. Prior to 2010
More informationLab: Supplying Inputs to Programs
Steven Zeil May 25, 2013 Contents 1 Running the Program 2 2 Supplying Standard Input 4 3 Command Line Parameters 4 1 In this lab, we will look at some of the different ways that basic I/O information can
More informationUniversity of Illinois Department of Electrical and Computer Engineering ECE 451 Automated Microwave Measurements Laboratory
University of Illinois Department of Electrical and Computer Engineering ECE 451 Automated Microwave Measurements Laboratory Experiment No. 4 Introduction to the Windows XP Workstation using National Instruments
More informationBuffer Manager: Project 1 Assignment
Buffer Manager: Project 1 Assignment Due: Feb 11, 2003 Introduction to Database Systems, UC Berkeley Computer Science 186 Spring 2003 1 Overview of Project 1 - Buffer Manager In this project you will add
More informationOther Loop Options EXAMPLE
C++ 14 By EXAMPLE Other Loop Options Now that you have mastered the looping constructs, you should learn some loop-related statements. This chapter teaches the concepts of timing loops, which enable you
More informationInteractive MATLAB use. Often, many steps are needed. Automated data processing is common in Earth science! only good if problem is simple
Chapter 2 Interactive MATLAB use only good if problem is simple Often, many steps are needed We also want to be able to automate repeated tasks Automated data processing is common in Earth science! Automated
More informationinstream: The Individual-based Stream Trout Research and Environmental Assessment Model Version 5.0
instream: The Individual-based Stream Trout Research and Environmental Assessment Model Version 5.0 Graphical User Interface Guide Prepared by: Steven F. Railsback Lang, Railsback & Associates Arcata,
More informationCISC-124. Casting. // this would fail because we can t assign a double value to an int // variable
CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to
More informationA Walk Through the MSA Software Spectrum Analyzer Mode 12/12/09
A Walk Through the MSA Software Spectrum Analyzer Mode 12/12/09 This document is intended to familiarize you with the basic features of the MSA and its software, operating as a Spectrum Analyzer, without
More informationStata: A Brief Introduction Biostatistics
Stata: A Brief Introduction Biostatistics 140.621 2005-2006 1. Statistical Packages There are many statistical packages (Stata, SPSS, SAS, Splus, etc.) Statistical packages can be used for Analysis Data
More informationRoboDAQ7. By John Buzzi. Masters of Engineering Report. Cornell University
RoboDAQ7 Masters of Engineering Report By John Buzzi Email: jlb269@cornell.edu Cornell University May 17, 2010 Abstract Learning from and improving on our past mistakes and accomplishments is only possible
More informationCS4023 Week06 Lab Exercise
CS4023 Week06 Lab Exercise Lab Objective: In this week s lab we will look at writing a program that reads a large matrix of numbers and then reports all numbers that are equal to a reference value (or
More informationUSER's GUIDE for PLOT_FINDIF_1
USER's GUIDE for PLOT_FINDIF_1 S. T. Bolmer & R. A. Stephen November 2004 Page 1 PLOT_FINDIF_1 Plot_findif_1.m is a MATLAB 6 script, which is used to plot output from the Woods Hole Oceanographic Institution
More informationCS 177 Recitation. Week 1 Intro to Java
CS 177 Recitation Week 1 Intro to Java Questions? Computers Computers can do really complex stuff. How? By manipulating data according to lists of instructions. Fundamentally, this is all that a computer
More informationECE 3574: Applied Software Design: Unit Testing using Catch. Chris Wyatt
ECE 3574: Applied Software Design: Unit Testing using Catch Chris Wyatt The goal of today s meeting it to learn about a very important part of programming, testing. Unit tests Integration tests Testing
More informationArduino IDE Friday, 26 October 2018
Arduino IDE Friday, 26 October 2018 12:38 PM Looking Under The Hood Of The Arduino IDE FIND THE ARDUINO IDE DOWNLOAD First, jump on the internet with your favorite browser, and navigate to www.arduino.cc.
More informationEverything You Always Wanted To Know About Programming Behaviors But Were Afraid To Ask
Everything You Always Wanted To Know About Programming Behaviors But Were Afraid To Ask By Kevin Harrelson Machine Intelligence Lab University of Florida Spring, 1995 Overview Programming multiple behaviors
More informationChapter 2: Programming Concepts
Chapter 2: Programming Concepts Objectives Students should Know the steps required to create programs using a programming language and related terminology. Be familiar with the basic structure of a Java
More informationThe tracing tool in SQL-Hero tries to deal with the following weaknesses found in the out-of-the-box SQL Profiler tool:
Revision Description 7/21/2010 Original SQL-Hero Tracing Introduction Let s start by asking why you might want to do SQL tracing in the first place. As it turns out, this can be an extremely useful activity
More informationHere are some of the more basic curves that we ll need to know how to do as well as limits on the parameter if they are required.
1 of 10 23/07/2016 05:15 Paul's Online Math Notes Calculus III (Notes) / Line Integrals / Line Integrals - Part I Problems] [Notes] [Practice Problems] [Assignment Calculus III - Notes Line Integrals Part
More informationMIS 0855 Data Science (Section 006) Fall 2017 In-Class Exercise (Day 18) Finding Bad Data in Excel
MIS 0855 Data Science (Section 006) Fall 2017 In-Class Exercise (Day 18) Finding Bad Data in Excel Objective: Find and fix a data set with incorrect values Learning Outcomes: Use Excel to identify incorrect
More informationAn Introduction to MATLAB See Chapter 1 of Gilat
1 An Introduction to MATLAB See Chapter 1 of Gilat Kipp Martin University of Chicago Booth School of Business January 25, 2012 Outline The MATLAB IDE MATLAB is an acronym for Matrix Laboratory. It was
More information(10393) Database Performance Tuning Hands-On Lab
(10393) Database Performance Tuning Hands-On ASH Analytics Real-time ADDM SQL Performance Analyzer Objective: Database Performance Hands-on The objective of this lab to provide exercises designed to showcase
More informationRole of Parallel Imaging in High Field Functional MRI
Role of Parallel Imaging in High Field Functional MRI Douglas C. Noll & Bradley P. Sutton Department of Biomedical Engineering, University of Michigan Supported by NIH Grant DA15410 & The Whitaker Foundation
More informationIntroduction to Domain Testing
Introduction to Domain Testing Cem Kaner January, 2018 Copyright (c) 2018 Cem Kaner Domain Testing 1 What Is Domain Testing? The most widely taught technique for designing software tests Copyright (c)
More information