create new tag
view all tags


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. Logic classes I suspect in Odyssey are different than the Technical Modules of SAGA but I have not seen the specs for SAGA.
    • 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. (Note though the FacadeEditor allows this, I have suspicions just like Odyssey that SAGA may not allow it automatically).
    • 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.

  • 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 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.

  • Q: In my chain I have written a table but when reading it back into a DM I get an Exception saying it could not figure out a type/attribute. (Mantis 5895)
    • A: Now fixed. Be sure to use a more up to date GaiaTools jar.

  • Q: Querying certain DM like DpcStellar taking a very very long time and running out of memory. (Mantis 6606)

-- KevinBenson - 06 Jul 2009

Edit | Attach | Watch | Print version | History: r8 < r7 < r6 < r5 < r4 | Backlinks | Raw View | More topic actions
Topic revision: r8 - 2010-02-17 - KevinBenson
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