close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Last modified 13 years ago

#1470 reopened defect

Almacenamiento de series y fechados en OZA

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: Kernel Version: 3.1
Severity: critical Keywords:
Cc:

Description

Relacionado con el tique #1451 se generan las siguientes observaciones:

  • Es necesario controlar y homogeneizar (quizá mediante una variable global) el uso de fechado visibles al hacer la carga de un OZA. Véase el ejemplo.
  • El operador == no sirve para comparar timesets. Por eso se hace uso de la alternativa DatingAddress.

En el primer archivo se crean 4 series (dos finitas y dos infinitas) cuyos fechados tienen el mismo nombre pero son distintos.

En el segundo archivo se prueba a carga ese OZA en dos contextos distintos: en uno no existe un fechado visible con el nombre del fechado guardado y en otro sí.

Attachments (2)

ejA1.tol (1.1 KB) - added by Pedro Gea 13 years ago.
ejA2.tol (1.7 KB) - added by Pedro Gea 13 years ago.

Download all attachments as: .zip

Change History (12)

Changed 13 years ago by Pedro Gea

Attachment: ejA1.tol added

Changed 13 years ago by Pedro Gea

Attachment: ejA2.tol added

comment:1 Changed 13 years ago by Jorge

Tengo dudas sobre la semántica del flag, y no puedo inferirlo a partir de los ejemplo. Suponiendo que el flag se llame FechadoVisible

  • FechadoVisible = 0: qué implica?
  • FechadoVisible <> 0: qué implica?

comment:2 Changed 13 years ago by Víctor de Buen Remiro

(In [4371]) Refs #1470

comment:3 Changed 13 years ago by Víctor de Buen Remiro

(In [4386]) Refs #1470
New built-in function AreCompatibleTimeSet returns true if two TimeSet are compatible in a time window

comment:4 Changed 13 years ago by Víctor de Buen Remiro

(In [4387]) Refs #1470 (trunk)
New built-in function AreCompatibleTimeSet returns true if two TimeSet are compatible in a time window

comment:5 Changed 13 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [4388]) Fixes #1470 (trunk)
If Ois.ForceStoredTimeSet is true, then internally stored TimeSet's will be used even if a TimeSet with the same name is available.

comment:6 Changed 13 years ago by Víctor de Buen Remiro

(In [4389]) Fixes #1470 (3.1)
If Ois.ForceStoredTimeSet is true, then internally stored TimeSet's will be used even if a TimeSet with the same name is available.

comment:7 Changed 13 years ago by Víctor de Buen Remiro

El problema parece que ya está resuelto en las nuevas veriones v3.1 p007 y v3.2 b007.
Al menos pasan todos los tests que se me han ocurrido, aunque habrá que vigilar porque la complejidad de las situaciones que se pueden dar es tremenda.

A continuación presento los tests de auto-chequeo correspondientes a este ticket, como ejemplo del tipo de cosas que debemos hacer para hacer comprobaciones automáticas de calidad. Se trata de que el propio código TOL construya una variable Real que debe ser cierta, si el test es determinista, o un número entre 0 y 1 si hay incertidumbre.

En el fichero check.01.tol que copio a continuación, se comprueba que efectivamente forzamos el uso de los fechados almacenados en el OIS.

#Embed "functions.tol";
//Forzamos el uso de los fechados almacenados en el OIS
Real Ois.ForceStoredTimeSet := True;
//Guardamos el número de warnings y errores antes de ejecutar
Real numWar_0 = Copy(NWarning);
Real numErr_0 = Copy(NError);
//Carga del OZA
Set series = {
TimeSet AUX = WD(3);
Set Ois.Load("s1_4.oza")[1]
};
//Guardamos el número de warnings y errores después de ejecutar
Real numWar_1 = Copy(NWarning);
Real numErr_1 = Copy(NError);
//Conjunto de chequeo que debe dar todo cierto
Set ok = [[
  //                        WD(1) == WD(1)         
  Real (DatingAddress(series::s1) == DatingAddress(series::s3)); 
  //                        WD(2) == WD(2)         
  Real (DatingAddress(series::s2) == DatingAddress(series::s4)); 
  //                        WD(1) != WD(2)         
  Real (DatingAddress(series::s1) != DatingAddress(series::s2)); 
  //                        WD(1) != WD(2)         
  Real (DatingAddress(series::s3) != DatingAddress(series::s4));
  //No debe dar warnings 
  Real numWar_1 == numWar_0;
  //No debe dar errores
  Real numErr_1 == numErr_0 
]];

Real ok.all = Group("And",ok);

En el fichero check.02.tol que copio a continuación, se comprueba que si existe un fechado previo accesible se usará:

#Embed "functions.tol";
//Si existe un fechado previo accesible se usará
Real Ois.ForceStoredTimeSet := False;
//Guardamos el número de warnings y errores antes de ejecutar
Real numWar_0 = Copy(NWarning);
Real numErr_0 = Copy(NError);
//Carga del OZA
Set series = {
TimeSet AUX = WD(3);
Set Ois.Load("s1_4.oza")[1]
};
//Guardamos el número de warnings y errores después de ejecutar
Real numWar_1 = Copy(NWarning);
Real numErr_1 = Copy(NError);
//Conjunto de chequeo que debe dar todo cierto
Set ok = [[
  //                        WD(1) != WD(3)         
  Real (DatingAddress(series::s1) != DatingAddress(series::s3)); 
  //                        WD(2) != WD(3)         
  Real (DatingAddress(series::s2) != DatingAddress(series::s4)); 
  //                        WD(1) != WD(2)         
  Real (DatingAddress(series::s1) != DatingAddress(series::s2)); 
  //                        WD(3) == WD(3)         
  Real (DatingAddress(series::s3) == DatingAddress(series::s4));
  //Debe dar warnings porque ha cambiado el fechado 
  Real numWar_1 > numWar_0 ;
  //No debe dar errores
  Real numErr_1 == numErr_0 
]];
Real ok.all = Group("And",ok);

comment:8 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: closedreopened

Trabajando con el modo Real Ois.ForceStoredTimeSet = False
el ejemplo ejA2 que se adjuntó produce las siguientes advertencias:

Warning: [10] OIS: 
Dating of loaded Serie s2={
  TimeSet AUX=WD(2);
  CalInd(C, AUX)
}is not compatible with original dating AUX= between [y2011m01d04,y2011m12d27]

Warning: [11] OIS: 
Dating of loaded Serie s1={
  TimeSet AUX=WD(1);
  CalInd(C, AUX)
}is not compatible with original dating AUX= between [y2011m01d03,y2011m12d26]

Warning: [12] OIS: 
Dating of loaded Serie s2={
  TimeSet AUX=WD(2);
  CalInd(C, AUX)
}is not compatible with original dating AUX= between [y2011m01d04,y2011m12d27]

y no carga las series adecuadamente.

Según parece, aunque no haya ningun fechado "visible" la primera de las series hace visible su fechado y por eso intenta aplicarse a las demás. Esto no debería pasar.

comment:9 Changed 13 years ago by Víctor de Buen Remiro

(In [4687]) Fixes #1526 in 3.1
Refs #1470 in 3.1
Sometimes the trial evaluation of non finite time series can return an invalid object with no dating that must be skipped.

comment:10 Changed 13 years ago by Víctor de Buen Remiro

(In [4688]) Fixes #1526 in 3.2
Refs #1470 in 3.2
Sometimes the trial evaluation of non finite time series can return an invalid object with no dating that must be skipped.

Note: See TracTickets for help on using tickets.