Employing the LiCAS analysis framework for MONALISA
Download
Report
Transcript Employing the LiCAS analysis framework for MONALISA
Employing the
LiCAS analysis framework
for MONALISA
a.k.a. the "Java" project
Analysis starting point
• Pre existing data analysis
– MATLAB routines written by Matt
– Java framework written by LiCAS (John Dale)
– Routines from earlier work (ATLAS group)
– A vast body of algorithms in the literature
Java starting point
• Mature Object Oriented (OO) language
• Important versions have been:
– Ver 1.1 (basic core in place)
– Ver 1.2 aka Java 2 (many new libraries)
– Ver 1.5 aka Java 5 upgraded the language
• We user latest version 1.6 (Java 6)
– code written with Netbeans software
Netbeans IDE
User friendly environment for
• writing,
• compiling,
• testing
• running
– Java
– (and other languages)
What does OO really mean?
• Tasks delegated to "methods" in classes
• Linear programming in functions which become "coupled"
• Dataflow via (long) chains of short messages
• Dataflow is via detailed parameters
• Responsibility is delegated via a method (named after the
task) to a class which agrees to take on the role
• Responsibility for tasks is distributed arbitrarily throughout
the code
• You don't need to know how a job gets done
• You often have to understand what a function is doing
internally when you call it, certainly what the parameters do
OO is often misunderstood
dismissively
• you can design and write linear code to have all
the benefits of OO code but:
– you have to do all the "heavy lifting" (an OO compiler
will do much of that for you)
– the users of linear code can get round your design
and inadvertently miss the benefits of your design
• (C++ "dodgy" OO language for this reason)
– even if linear code is written "OO" style, users still
have to read your functions in detail to know that
Delegating:
Digging a trench
Q: How does an army
officer dig a trench?
A: He yells out
"Sergeant dig me a
trench"
not
"Private! Swing your
axe just here, etc"
ad nausem
Important OO ideas
• Object:
– Any entity to which agrees to handle
messages
• Class:
– An object which gets things done when it
receives a message
• Interface:
– this is a contract for classes to sign up to
– compliance is "enforced" by the compiler
Important OO ideas 2
• Inheritance:
– An implicit compiler convention
• A more specialised version of an object
inherits from its general "super" object
– methods are inherited
– contractual obligations are inherited
– (most) internal data is inherited
Inheritance: Diagram convention
Making a Canine entity bark
public void printBark(Canine c) {
System.out.println(c.getBark());
}
N.B. This method doesn't "care"
which specific kind of canine c is.
Early phase of the project
• Basic steps:
– Learn basics of writing Java in NETBEANS
– Get a simple example of Java code working
– Starting looking over LiCAS framework with
Paul
– Take simple example analysis method from
MATLAB which Matt has written
– Put example method into the framework
– Start working on reading and writing our data
and results using the framework
Advanced parts of the project
• Once you're an expert
– Use GIACoNDE to put our data into a context
– Document a process for moving functions
from MATLAB into the framework
– Run through a "cradle to grave" analysis on
some raw experimental data
– Document a users guide for the analysis run