Ticket #1470 (reopened defect)

Opened 2 years ago

Last modified 2 years ago

Almacenamiento de series y fechados en OZA

Reported by: pgea Owned by: vdebuen
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

ejA1.tol (1.1 kB) - added by pgea 2 years ago.
ejA2.tol (1.7 kB) - added by pgea 2 years ago.

Change History

Changed 2 years ago by pgea

Changed 2 years ago by pgea

Changed 2 years ago by josp

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?

Changed 2 years ago by vdebuen

(In [4371]) Refs #1470

Changed 2 years ago by vdebuen

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

Changed 2 years ago by vdebuen

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

Changed 2 years ago by vdebuen

  • status changed from new to closed
  • resolution set to fixed

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

Changed 2 years ago by vdebuen

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

Changed 2 years ago by vdebuen

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

Changed 2 years ago by pgea

  • status changed from closed to reopened
  • resolution fixed deleted

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.

Changed 2 years ago by vdebuen

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

Changed 2 years ago by vdebuen

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