Bioinformatics Tool Development Dong Xu Computer Science Department 109 Engineering Building West 573-882-7064

Slides:



Advertisements
Similar presentations
Programming Paradigms and languages
Advertisements

MATLAB MATLAB is a high-level technical computing language and
Component 4: Introduction to Information and Computer Science Unit 5: Overview of Programming Languages, Including Basic Programming Concepts Lecture 1.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
Research and objectives Modern software is incredibly complex: for example, a modern OS has more than 10 millions lines of code, organized in 10s of layers!
Behavioral Design Outline –Design Specification –Behavioral Design –Behavioral Specification –Hardware Description Languages –Behavioral Simulation –Behavioral.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Operational Semantics.
Java Programming, 3e Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
Programming Languages Structure
UvA, Amsterdam June 2007WS-VLAM Introduction presentation WS-VLAM Requirements list known as the WS-VLAM wishlist System and Network Engineering group.
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Introduction to High-Level Language Programming
Java Programming, 2E Introductory Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
Ch 1. Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2012.
Antigone Engine Kevin Kassing – Period
Invitation to Computer Science 5 th Edition Chapter 9 Introduction to High-Level Language Programming.
Introduction to MATLAB adapted from Dr. Rolf Lakaemper.
Understanding Computers Ch. 131 Chapter 13 Program Development and Programming Languages.
Java Adaptive Mathematical Modeling Engine (JAMME) Leeland Artra, Cell Systems Initiative (CSI) Zheng Li, Department of Bioengineering University of Washington,
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Upgrade to Real Time Linux Target: A MATLAB-Based Graphical Control Environment Thesis Defense by Hai Xu CLEMSON U N I V E R S I T Y Department of Electrical.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
Numerical Methods in Scientific Computation Lecture 2 Programming and Software Introduction to error analysis Numerical Methods, Lecture 2 1 Prof. Jinbo.
1 ENERGY 211 / CME 211 Lecture 26 November 19, 2008.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Chapter 3: Computer Software. Stored Program Concept v The concept of preparing a precise list of exactly what the computer is to do (this list is called.
CSC 230: C and Software Tools Rudra Dutta Computer Science Department Course Introduction.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
National Diploma Unit 4 Introduction to Software Development Introduction to Programming Languages.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Programming Languages and the Programming Process.
Framework for MDO Studies Amitay Isaacs Center for Aerospace System Design and Engineering IIT Bombay.
1CPSD Software Infrastructure for Application Development Laxmikant Kale David Padua Computer Science Department.
CS 127 Introduction to Computer Science. What is a computer?  “A machine that stores and manipulates information under the control of a changeable program”
WHAT IS COMPUTER SCIENCE? Phil Sands K-12 Outreach Coordinator for Computer Science.
Visualization in Problem Solving Environments Amit Goel Department of Computer Science Virginia Tech June 14, 1999.
Spatiotemporal Saliency Map of a Video Sequence in FPGA hardware David Boland Acknowledgements: Professor Peter Cheung Mr Yang Liu.
Computer Science Faculty School of Software Engineering C INTERPRETER AND DEBUGGER (ISO/IEC 9899:2011) Developer: student of 203SE group: Lukyanov Dmitry.
Virtual Application Profiler (VAPP) Problem – Increasing hardware complexity – Programmers need to understand interactions between architecture and their.
Kaifeng Chen Institute for Theoretical Physics Synthetic Biology with Engineering Tools 1 Francis Chen.
Introduction to Operations Research. MATH Mathematical Modeling 2 Introduction to Operations Research Operations research/management science –Winston:
CIS 601 Fall 2003 Introduction to MATLAB Longin Jan Latecki Based on the lectures of Rolf Lakaemper and David Young.
The Hashemite University Computer Engineering Department
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
R-Verify: Deep Checking of Embedded Code James Ezick † Donald Nguyen † Richard Lethin † Rick Pancoast* (†) Reservoir Labs (*) Lockheed Martin The Eleventh.
CIS 595 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages.
First appeared Features Popular uses Basic This language emphasises on ease of use, allowing general purpose programming to those with a small amount of.
Sub-fields of computer science. Sub-fields of computer science.
Lecture 2: Performance Evaluation
Matlab.
Why study programming languages?
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Programming Basics Web Programming.
Application Development Theory
CS 21a: Intro to Computing I
Introduction CSE 1310 – Introduction to Computers and Programming
INTRODUCTION TO BASIC MATLAB
Chapter 12 Programming Concepts and Languages.
Chapter 8: Introduction to High-Level Language Programming
Introduction to MATLAB
Mobile Development Workshop
Ada – 1983 History’s largest design effort
Thales Alenia Space Competence Center Software Solutions
Simulation And Modeling
From Use Cases to Implementation
Presentation transcript:

Bioinformatics Tool Development Dong Xu Computer Science Department 109 Engineering Building West

Components of development Identify a problem Algorithm Application Math. model Software engineering

Identify the problem What is exactly the problem? New ideas? Is the problem biologically important? Significance of the work? New problem or improvement? Improve accuracy or speed? Is the computationally problem solvable? Simulate human quantum mechanically?

Mathematical Model What is the underlying math problem? Baseline information study Formulation Definition

Algorithm (1) Pick up the right method Implementation Testing

Algorithm (2) Implementation  Data structure/representation  Language: C, C++, Perl, Java, Matlab?  Unix/Linux or Windows?  Modular programming (objected oriented)  Style: should be user oriented!!!

Algorithm (3) Debugging  Tools: gdb, dbx, Visual C++  Logic?  Toy cases  Print intermediates

Algorithm (4) Testing and code refinement  Benchmark select good test set, Jack knifes…  internal test application to real cases  beta test send to friendly users for initial tests

Software Engineering (1) Suggestions: Easy to read (structured with comments) Avoid “spaghetti” code (goto) Easy to modify Portable to other machines Always think about computational complexity and clock cycles Use dynamic memory allocation

Software Engineering (2) Polynomial evaluation y = a+b*x+ c*x**2.0+d*x**3.0+e*x**4.0+f*x**5.0 (42.3 s) y = a+b*x+ c*x**2+d*x**3+e*x**4+f*x**5 (5.63 s) y = a+b*x+ c*x*x+d*x*x*x+e*x*x*x*x+f*x*x*x*x*x (3.15 s) x2 = x*x (2.83 s) x4 = x2*x2 y = a+b*x+ c*x2+d*x*x2+e*x4+f*x*x4 y = a+x*(b+x*(c+x*(d+x*(e+f*x)))) (1.83 s)

Software Engineering (3) Precision: Big numbers Tiny numbers Iteration effects Machine dependent score = 1- [(1-P 1 ) (1-P 2 ) (1-P 3 ) (1-P 4 )] = 1- exp [ ( Log(1-P 1 ) + Log(1-P 2 ) + Log(1-P 3 ) + Log(1-P 4 ) ) ]

Software Engineering (4) Precision: 1 + ½ + 1/3 + ¼+…+ 1/(M-1) + 1/M = log (M) M -> infinity Forward sumBackward sumlog (M) M= 10^ M=10^

Software Engineering (5) Loop optimization (1): C program for (i=0; i<1000; i++) (78 msec) for (j=0; j<1000; j++) c[i][j] = c[i][j] + a[i][j] + b[i][j] for (j=0; j<1000; j++)(1860 msec) for (i=0; i<1000; i++) c[i][j] = c[i][j] + a[i][j] + b[i][j]

Software Engineering (6) Loop optimization (2): for (i=0; i<100000; i++) (30 msec) x = x*a[i] + b[i] for (i=0; i<100000; i++) y = y*a[i] + b[i] for (i=0; i<100000; i++) (16 msec) { x = x*a[i] + b[i] y = y*a[i] + b[i] }

Software Engineering (7) Compiler optimization switch: -O (often improve by 50%, but depending on machines) -O2 (same as –O on some machines): simple inline optimization -O3 (-O4 on some machines): more complex optimizations designed to pipeline code, but may alter semantics)

Software Engineering (8) Friendly user interface Graphics, Web, options, automation Pipeline interface with other tools parallel computing multiple machine (server/client) network query

Applications Get feedback for adding new features Find good experimental collaborators From tools to papers Continues bug reports

Summary Identify a problem: solvable, biologically important Mathematical model: formulation and definition Algorithm: rigorous method, fast implementation, and systematic testing Software Engineering: friendly user interface and integration of different tools Application: work with experimentalists