Difference: OdysseyFAQ (r5 vs. r4)


Below you will find general questions in no particular order to help answer questions you might have. Please contact Kevin Benson at kmb@mssl.ucl.ac.uk if your questions are not answered on this FAQ or other Odyssey pages.

  • Q: Main page says it is like Saga but has some differences can you be more exact what is different?
    • A: Odyssey is developed more as a Test Framework so parallel and Job management at this time is not required. Where as SAGA as a production environment has a requirement for these two particular Areas. Also the Logic classes (similar to Technical Modules for SAGA) SAGA I suspect) in Odyssey is probably more powerful than SAGA (or at least the same), reason is because Odyssey lets you do anything in the Logic class Java wise. This is similar I suspect to a SAGA Technical Module but currently have not seen the specs of the Technical Module to see what capabilities it allows.
    • A: Also FacadeEditor seems to allow Matrix (for Data Models) as inputs and outputs to the Facade, Odyssey does not do this in an automatic manner you must use Logic classes see questions about Matrix below.
    • A: SAGA has the concept of saving what I suspect is DM objects in memory for later use. Odyssey will do this for Non-DM by default and with the help of Logic classes could do it with DM, but DM objects are always saved and loaded from the ascii or database connections connections. (with one small exception being the case of loading an array of objects but the facade takes a single object then the array is placed in memory while iterations through the array are done).
  • Q: What license does it have?
    • A: Odyssey is a product at MSSL and the license scheme is still being discussed but this current version is bundled with a license similar to BSD scheme with also a restriction of contact the author (MSSL) for using in another environment besides Testing and Development. So Consider it to always be a Free tool for Development and Testing purposes.
  • Q: How does Odyssey handle loading up an Array of information (many rows) such as DM but the Facade takes a single DM?
    • A: This can be easy or tricky, you have a situation where you have loaded up lots of DM's from the db or ascii but your Facade only handles a single DM object. Lets step through each case:
      • Loaded 100 DMExtractedSpectrum and Facade takes only 1 DMExtractedSpectrum - In this case Odyssey will loop through all 100 DMExtractedSpectrum calling your test/facade 100 times.
      • Loaded 100 DMExtractedSpectrum and 100 DMVelocity and Facade takes only 1 DMExtractedSpectrum and 1 DMVelocity - Same as above looping through your test 100 times each time passing the same index for DMExtractedSpectrum[index] and DMVelocity[index]
      • Loaded 100 DMExtractedSpectrum and 50 DMVelocity and Facade takes only 1 DMExtractedSpectrum and 1DMVelocity - Now this is tricky it does the same as above and keeps looping but when you get to index 51 the DMVelocity goes to index '0' and stays at '0' till all of 100 (or remaining 50) DMExtractedSpectrum's are finished. As soon as any object gets past it's index bounds it goes back to 0 till the largest index DM is done.
  • Q: Is Matrix supported or not supported?
    • A: This can be a difficult question and depends on the use case, it is not automatic that is for sure you will need some Logic statements. classes. Below I put in the various use cases to see some difficulty involved.
      • Using Logic class to set a matrix into the Facade is always possible.
      • Non-DM this is supported via the 'OBJECT' keyword in the xml as inputs and Outputs; so do note Non-DM type objects are supported via the Storage Hashtable.
      • You query for just a flux[][] attribute from DMExtractedSpectrum or Macro[][] (object) from DMWindowSpectrum and have these 2-dim arrays as inputs to your Facade. This means your sql query was for a particular attribute of a DM Object now this attribute might be a double[][] or another DM object like Macro[][]. Now as an INPUT ONLY this would be possible via a Logic class where you type case the GaiaFactory.Store to a cu1...JDBCStore object and execute an SQL query and handle the ResultSet your self placing the Matrix object in the Storage array. But as an OUTPUT to a Facade the answer is 'no', the main difficulty with this is your program must remember on how to do an 'UPDATE' to the original DM object that the attribute belongs to and at this moment Odyssey does not cover this and typically have not seen this in all of CU6. It would be possible as an OUTPUT to again have your own Logic class place it into the results but I would really say consider again looking at your use case and double check can SAGA do what your really asking.
      • You did a query for a DMExtractedSpectrum[][], I suspect this would be quite an interesting SQL query with some various joins or outer joins, what is the basis of each of the [][]? what is the row and column another words? In fact CU1 dal does not support it (that I can see) so you would need to make own dal extension layer or extra looping to do make this matrix object similar to above you can do INPUTS and OUTPUTS with Logic classes but would not recommend it.
  • Q: I seem to have an infinite loop, Odyssey is not stopping?
    • A: Do you have some kind of goto looping via a Logic class. If so remember if this is a 'gotoNewSequence' then you need to put something in the Storage array to see how many times you have done the loop so you know when to break out of your loop and no longer call the gotoNewSequence statement. Also remember as the question above if you loaded a huge array but your facade takes a single (1) object then you might be seeing it loop through your array calling your facade hence DMExtractedSpectrum array of 100 but Facade input is DMExtractedSpectrum you will see the facade called 100 times.

-- KevinBenson - 06 Jul 2009

View topic | View difference side by side | History: r8 < r7 < r6 < r5 | More topic actions
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback