Employing the LiCAS analysis framework for MONALISA

farrightSoftware and s/w Development

Aug 15, 2012 (4 years and 8 months ago)

507 views

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