Difference: OdysseyFAQ (r6 vs. r5)

FAQ

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 I suspect) suspect in Odyssey is probably are different 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 Modules of SAGA but currently I have not seen the specs of the for SAGA. 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. (Note though the FacadeEditor allows this, I have suspicions just like Odyssey that SAGA may not allow it automatically). 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.
  • 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. 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] 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. 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. 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. 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. 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: I have put in a major ticket mantis 5895. This ticket requires 3 things for this scenario to happen. 1.) Your DM must have another DM as part of its attribute e.g. MacroSamples inside WindowedSpectrum or RadialVelocity in one of the STA objects. 2.) This particular DM object was written earlier in the chain (or was a primary table to be written). 3.) Your using a database(JDBC).
    • So what happened it seems DAL must be doing a cache or possibly an incorrect string parsing. When a DM object is written to the database any DM attributes such as Macrosamples has a little information written to the SerializeInformation table inside your database. But it seems a mistake is happening where by it works perfect for the first DM object written to the database hence your first WindowedSpectrum DM but if you try to write the WindowedSpectrum to a second table then DAL DOES NOT write the information to the SerializeInformation table and so when it comes to reading your table later everything blows up.
    • The quick fix I can suggest though is not pretty is to just temporarily place your second table as the first. Then run odyssey and this will place information into the SerializeInformation table and then you can change things into the original form and your chain should run.

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