Project 13 Damish Shah Danielle Tinio Mentor: Dr. James Philbin

Slides:



Advertisements
Similar presentations
Lesson 12- Unit L Programming Web Pages with JavaScript.
Advertisements

The Assembly Language Level
CS 330 Programming Languages 10 / 16 / 2008 Instructor: Michael Eckmann.
Computers: Tools for an Information Age
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
DT228/3 Web Development JSP: Directives and Scripting elements.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
XP Tutorial 1 New Perspectives on JavaScript, Comprehensive1 Introducing JavaScript Hiding Addresses from Spammers.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
OBJECT ORIENTED PROGRAMMING IN C++ LECTURE
From C++ to C#. Web programming The course is on web programming using ASP.Net and C# The course is on web programming using ASP.Net and C# ASP.Net is.
1 Chapter One A First Program Using C#. 2 Objectives Learn about programming tasks Learn object-oriented programming concepts Learn about the C# programming.
A First Program Using C#
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
UNIVERSITI TENAGA NASIONAL “Generates Professionals” CHAPTER 4 : Part 2 INTRODUCTION TO SOFTWARE DEVELOPMENT: PROGRAMMING & LANGUAGES.
Review IDIA 619 Spring 2013 Bridget M. Blodgett. HTML A basic HTML document looks like this: Sample page Sample page This is a simple sample. HTML user.
CS 330 Programming Languages 09 / 04 / 2008 Instructor: Michael Eckmann.
Mining and Analysis of Control Structure Variant Clones Guo Qiao.
INTRODUCTION TO JAVASCRIPT AND DOM Internet Engineering Spring 2012.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
Chapter 5: Windows and Frames
Towards a High-Level Petri Net Type DefinitionWorkshop on Interchange Formats for Petri Nets 1/18 June 26, 2004 Towards a High-Level Petri Net Type Definition.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Introduction to OOP CPS235: Introduction.
DICOM in Dart (DCMiD) Computer Integrated Surgery II, Spring 2014, Project 13 Damish Shah and Danielle Tinio, under the auspices of Dr. James Philbin Introduction.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Principles of Programming & Software Engineering
Evolution and History of Programming Languages
DHTML.
The Role of Tool Support in Public Policies and Accessibility
Object Lifetime and Pointers
INLS 623– Stored Procedures
Visit for more Learning Resources
Unit M Programming Web Pages with
Welcome to ….. File Organization.
Working in the Forms Developer Environment
CHP - 9 File Structures.
Types for Programs and Proofs
Tutorial 10 Programming with JavaScript
CSCI-235 Micro-Computer Applications
Unit M Programming Web Pages with
Principles of Programming and Software Engineering
UNIT - V STORED PROCEDURE.
AJAX.
Application Development Theory
Hashing Exercises.
Intro to PHP & Variables
Un</br>able’s MySecretSecrets
Top Reasons to Choose Angular. Angular is well known for developing robust and adaptable Single Page Applications (SPA). The Application structure is.
Unit# 8: Introduction to Computer Programming
Chapter 8: Introduction to High-Level Language Programming
Compiler Construction
Towards Automatic Model Synchronization from Model Transformation
CIS16 Application Development – Programming with Visual Basic
MSIS 655 Advanced Business Applications Programming
Lecture 1: Multi-tier Architecture Overview
Chapter 13 Quality Management
Chapter 1 Introduction(1.1)
Agile testing for web API with Postman
Files Management – The interfacing
JavaScript CS 4640 Programming Languages for Web Applications
[Robert W. Sebesta, “Programming the World Wide Web
Web Client Side Technologies Raneem Qaddoura
1.3.7 High- and low-level languages and their translators
JavaScript CS 4640 Programming Languages for Web Applications
Programming Logic and Design Eighth Edition
Presentation transcript:

Project 13 Damish Shah Danielle Tinio Mentor: Dr. James Philbin DICOM in Dart (DCMiD) Project 13 Damish Shah Danielle Tinio Mentor: Dr. James Philbin

Topic and Goal Determine the feasibility of using binary DICOM for building browser based medical imaging applications Method: Design and implement a DICOM editor that reads and writes binary DICOM and displays it using HTML5, CSS3 and the Dart programming language. Test performance by reading, displaying and writing DICOM studies in binary format. Goal: Read and display imaging studies in less than 3 seconds.

Papers Paper 1 Mahmoud Ismail ; Yu Ning ; James Philbin; Separation of metadata and bulkdata to speed DICOM tag morphing. Proc. SPIE 9039, Medical Imaging 2014: PACS and Imaging Informatics: Next Generation and Innovations, 903905 (March 19, 2014); doi:10.1117/12.2043933. Paper 2 Aansa Ali, “Evaluation of alternate programming languages to JavaScript”, September 14, 2013 [online] Available: http://dspace.cc.tut.fi/dpub/handle/123456789/21730 The second “paper” is from a conference called RCITD (Research Conference in Technical Diciplines) in November 2013 which stemmed from Ali’s Master’s Thesis at TAMPERE UNIVERSITY OF TECHNOLOGY in finland.

What is the practical use of our project? Motivation What is the practical use of our project? Why Dart over JS?

Separation of metadata and bulkdata to speed DICOM tag morphing Mahmoud Ismail Yu Ning James Philbin Dart debuted in 2011, so there aren’t many papers written about it.

Ismail et al. Introduction Separation of metadata and bulkdata to speed DICOM tag morphing. Ismail et al. Introduction Patient info Physician Scan parameters Image Orientation Slice Location Current Standard: Single Frame DICOM Metadata Bulkdata Some things don’t change between each frame like pt info and physician Some things like SLICE location varies by image Rapid development of 3D imaging (CT & MRI Often contains hundreds of images These hundreds of images aren’t small Medical images => diagnosing & treatment Compression makes a difference in seeing possible abnormalities > 256 bytes Based off of a fragment of Figure 1 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing. http://www.nansenneuro.net/images/MRI_brain_sagittal_section.jpg

Ismail et al. Introduction Metadata Metadata Metadata Metadata Metadata Metadata Metadata Metadata Metadata Metadata Each image in DICOM is arranged with four levels: patient, study, series, instance. Because DICOM communication is based on single frame objects that each contains four levels, every time an image is transmitted, there is repetition in parsing and validating metadata. There are instances where you only want to deal with the Metadata. The example focused on in this paper is Tag morphing, which Deals with adding, deleting, modifying attributes of a DICOM study so that it is usable in its target domain. You can guess that in order to update the necessary information in tag morphing in a single study, you may have To access hundreds of SINGLE FRAME OBJECTS, which contain duplicated attributes. http://www.nansenneuro.net/images/MRI_brain_sagittal_section.jpg

Ismail et al. Introduction Multi-Frame DICOM (MFD) Combines all images contained in a series into a single DICOM object Advantage over SFD is that it does not repeat study and series level attributes within each frame in the series Drawbacks Lack of implementation There is no standard way to convert older studies MFD is an already existing method to group All DICOM objects that belong to a series into a single DICOM object It removes the need to repeat study and series level attributes for frames in the series. The authors in this paper argue that two drawbacks are 1. MFD hasn’t been implemented and 2. there’s no standard way to convert older studies into MFD objects

Ismail et al. Separating metadata from bulkdata Multi-Series DICOM MSD takes all of the instances of Single-Frame format in A STUDY And consolidates it into metadata, which as I mentioned before contains the relevent study, series and instance level attributes And bulkdata, which consists of the pixel data. Figure 1 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing.

Ismail et al. Separating metadata from bulkdata > 256 bytes The authors created a new value representation, BD (for bulkdata) with the following structure: Original VR Index of this attribute in the bulkdata object Offset to the first byte of the attribute within BD object Length - size of the value These 14 bytes replace what were originally the 256 or more bytes of bulkdata in a Single Frame DICOM object Original VR 2 bytes Index in BD 4 bytes Offset 4 bytes Length 4 bytes Based off of a fragment of Figures 1 and 3 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing.

Ismail et al. Separating metadata from bulkdata The authors created a new value representation, BD (for bulkdata) with the following structure: Value Representation Index in BD Offset Length These 14 bytes replace what were originally the 256 or more bytes in a Single Frame DICOM object are replaced by a new value representation, which is much smaller and contains a pointer to the location of the original information in the Bulkdata Figure 3 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing.

Ismail et al. Methods Makes use of this open source DICOM Toolkit And for a previous paper made a Java implementation of MSD format Built on top of it. They converted the DICOM studies to MSD format in advance. Experiment: SFD vs MSD format Compare times required to tag morph each study in both formats REITERATE WHAT TAG MORPHING IS Used 6 studies, three MRIs and tree CTs (smallest 70 MB Largest 1.5 GB) The reason why SFD metadata size and MSD metadatasize differs is because the SFD format has the repetition in metadata which was converted and optimized when transffered to MSD Metadata size is small compared to overall study size. Steps: Read each study from file system to memory Update values with dummy values Save updated study from memory to file system in original SFD or MSD Record time from steps 1 to 3 Table 1 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing.

Ismail et al. Results 2509 283 Results are presented as a percentage So the averages were meant to be divided by 6 (for the number of studies) And I’ve written the values in red (you can see that the speed increases by 886% From this experiment, MSD is faster in all cases than SFD format As the size of the study increases, so does the advantage of using MSD over SFD 2509 283 Table 2 and Figure 4 from Ismail et al. Separation of metadata and bulkdata to speed DICOM tag morphing.

Ismail et al. Comments Metadata straightforward specific topic not many other papers or references Bulkdata > 256 bytes Article gives incentive -> There are instances where you want to only access metadata. So if you want to change something in a study, in the standard SFD object, you have to go through every instance in that study to change it, which is extremely inefficient because it also accesses the pixel data. The mistake was a little unnerving but it was easy enough to figure out what the authors meant. They also wrote about testing the 12 studies, when it was really 6 studies done twice using the two different methods. Again, this was easy to understand and adjust. The topic is so specific that I couldn’t find any papers from other authors that were similar. One reference, by the same authors, is to a previous paper “Multi-series DICOM: an Extension of DICOM that stores a Whole Study in a Single Object” which only has the DICOM standard as its only reference. In section 2 of the article, the authors acknowledge that they are unaware of any other publications that deal with this topic. Emphasizes the interest in faster DICOM parsing. An increased speed is favorable, especially for users ranging from large hospitals, which process hundreds of images daily to regional Health Information Exchanges that potentially manage billions of images. As more studies are conducted, it would be prudent to seek ways to improve the efficiency of medical imaging, storage, and transmission .

Evaluation and Comparison of Alternate Programming Languages to JavaScript Aansa Ali Dart debuted in 2011, so there aren’t many papers written about it. I want to point out that I’ve no experience with JS so I don’t know how completely accurate the conclusions Ali makes in his paper are.

Ali Introduction Browser side application development JavaScript (JS) Evaluation and Comparison of Alternate Programming Languages to JavaScript Ali Introduction Browser side application development JavaScript (JS) Shortcomings Error detection Maintaining large scale web applications Paper explores CoffeeScript (CS), TypeScript(TS), Dart Errors are difficult to spot. JS does not have a well-defined structure for development CS, TS and Dart address different problems of JS and provide solutions CS - > Human readable syntax and Object Orientation Dart and TS -> Strict Types

Ali Shortcomings of Javascript Modular Programming JS no namespace and import statement Not necessary to declare types of variables No Compiler Look for errors and mistakes without help User defined types JS assumes everything is a string var x; x = “hello”; … x = 20; Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality When you want to deal with many libraries, you must know all dependencies. Uses closures to encapsulate data Not necessary to declare variable types No error in code even though you assign x a string then assign it an int. Data types help understanding code. Like comments! No Compiler No compiler errors User defined types Cannot define equality or comparison b/c with JS, everything is a string

Ali Features Dart adds to JavaScript Optionally Typed Not strictly typed, so developers can use type annotations or skip them to suit their needs Object orientation Everything, including primitive types and null are objects. Building large and complex applications Has optional types, functions, classes, modules and libraries What is Dart again? Open Source, Class based, single inheritance, object oriented Google’s Engineers felt that JS’s problems could not be solved by evolving the language. I chose three things that Ali mentions in his paper Optionally Typed Easier for people to read your code Tools such as name completion and improved navigation in the IDE You can use them if you want, or skip them. Advantage: can be used as static typing. If programmer makes mistakes and tries to pass bad argument while writing, checked mode will detect the point where you made the mistake. Building large complex Can write prototypes that evolve rapidly and have access to tools, reliable libraries. Dart has support for top-level functions, optional types, classes, libraries, which allows for it to start small and then grow over time.

Ali Comparison, Results and Conclusion Dart does not execute code on every parsing and loading ; JavaScript does. What Dart has that JS does not: Static Type Checking (type checking is done at compile-time), Classes, Interfaces, Modules, String interpolations, Intellisense (auto completion of code), Better Speed (improvement of performance of code) Debugging is easy in Dart. Out of the three languages the Author considered, Dart has cleaner DOM (Document Object Model) API. Dart doesn’t execute code on every parsing and loading More optimized than JS , which executes the code every time Debugging is easy in Dart. Out of the three languages the Author considered, Dart has cleaner DOM API, which is helpful in developing client side web application in addition to many libraries to help in development. DOM is Document Object Model, which represents the structure of a web document as a tree of nodes. 

Ali Comments Languages Chosen for Analysis Brief Overview Dart is fast Upon initially looking at some figures at the start of the paper, it shows how JS is the primary language for web application development. It seems a little misleading, because it has been around much longer than the other three languages. Brief Overview Because the Paper focuses on Alternate Languages to Javascript, there’s not too much information about Dart Vs JS There was also a large chunk of the paper that talked about other languages, which could have been shortened. Dart is fast From the last paper, I’ve emphasized that the goal is to be fast. Hopefully a well-developed web browser written in Dart will be able to achieve the goal we’ve set in mind. Figure 2 from Aansa Ali Evaluation and Comparison of Alternate Programming Languages to JavaScript

Thanks for Listening!