From e93c7b6b2523d2e6ffce2fc96ab0afd52c07247c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Thu, 12 Mar 2020 15:56:55 +0100
Subject: [PATCH] =?UTF-8?q?Reorder=20files=20generated=20by=20=E2=80=9Cmom?=
 =?UTF-8?q?ents=5Fvarendo=E2=80=9D=20option=20of=20=E2=80=9Cestimation?=
 =?UTF-8?q?=E2=80=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If there were more than 10 files of Metropolis parameter draws, the ordering
the files containing the posterior moments could be different from that of the
parameter draws. This is because the “dir()” command was used to order the
files containing the parameter draws, and because the command uses alphabetic
ordering, file #10 would come before #2.

This commit enforces the numerical ordering of files.
---
 ...theoretical_conditional_variance_decomposition.m | 11 +++++------
 matlab/dsge_simulated_theoretical_correlation.m     | 13 ++++++-------
 matlab/dsge_simulated_theoretical_covariance.m      | 13 ++++++-------
 ...e_simulated_theoretical_variance_decomposition.m | 11 +++++------
 4 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m b/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
index dcf1d3aab1..540b2e2392 100644
--- a/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
+++ b/matlab/dsge_simulated_theoretical_conditional_variance_decomposition.m
@@ -19,7 +19,7 @@ function [nvar,vartan,NumberOfConditionalDecompFiles] = ...
 %   vartan                           [char]     array of characters (with nvar rows).
 %   NumberOfConditionalDecompFiles   [integer]  scalar, number of prior or posterior data files (for covariance).
 
-% Copyright (C) 2009-2015 Dynare Team
+% Copyright (C) 2009-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -39,10 +39,10 @@ function [nvar,vartan,NumberOfConditionalDecompFiles] = ...
 
 % Get informations about the _posterior_draws files.
 if strcmpi(type,'posterior')
-    DrawsFiles = dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]));
     posterior = 1;
 elseif strcmpi(type,'prior')
-    DrawsFiles = dir([M_.dname '/prior/draws/' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/prior/draws/' type '_draws*' ]));
     CheckPath('prior/moments',M_.dname);
     posterior = 0;
 else
@@ -78,7 +78,6 @@ nvar = length(ivar);
 nar = options_.ar;
 options_.ar = 0;
 
-NumberOfDrawsFiles = rows(DrawsFiles);
 NumberOfSavedElementsPerSimulation = nvar*M_.exo_nbr*length(Steps);
 MaXNumberOfConditionalDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPerSimulation/8);
 
@@ -132,9 +131,9 @@ linea = 0;
 linea_ME = 0;
 for file = 1:NumberOfDrawsFiles
     if posterior
-        load([M_.dname '/metropolis/' DrawsFiles(file).name ]);
+        load([M_.dname '/metropolis/' M_.fname '_' type '_draws' num2str(file) ]);
     else
-        load([M_.dname '/prior/draws/' DrawsFiles(file).name ]);
+        load([M_.dname '/prior/draws/' type '_draws' num2str(file) ]);
     end
     isdrsaved = columns(pdraws)-1;
     NumberOfDraws = rows(pdraws);
diff --git a/matlab/dsge_simulated_theoretical_correlation.m b/matlab/dsge_simulated_theoretical_correlation.m
index 7bc6239c5e..fb00d5ddcd 100644
--- a/matlab/dsge_simulated_theoretical_correlation.m
+++ b/matlab/dsge_simulated_theoretical_correlation.m
@@ -17,7 +17,7 @@ function [nvar,vartan,CorrFileNumber] = dsge_simulated_theoretical_correlation(S
 %   vartan         [char]           array of characters (with nvar rows).
 %   CorrFileNumber [integer]        scalar, number of prior or posterior data files (for correlation).
 
-% Copyright (C) 2007-2017 Dynare Team
+% Copyright (C) 2007-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -38,17 +38,16 @@ nodecomposition = 1;
 
 % Get informations about the _posterior_draws files.
 if strcmpi(type,'posterior')
-    DrawsFiles = dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]));
     posterior = 1;
 elseif strcmpi(type,'prior')
-    DrawsFiles = dir([M_.dname '/prior/draws/' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/prior/draws/' type '_draws*' ]));
     CheckPath('prior/moments',M_.dname);
     posterior = 0;
 else
     disp('dsge_simulated_theoretical_correlation:: Unknown type!');
     error()
 end
-NumberOfDrawsFiles = length(DrawsFiles);
 
 %delete old stale files before creating new ones
 if posterior
@@ -95,9 +94,9 @@ CorrFileNumber = 1;
 linea = 0;
 for file = 1:NumberOfDrawsFiles
     if posterior
-        load([M_.dname '/metropolis/' DrawsFiles(file).name ]);
+        load([M_.dname '/metropolis/' M_.fname '_' type '_draws' num2str(file) ]);
     else
-        load([M_.dname '/prior/draws/' DrawsFiles(file).name]);
+        load([M_.dname '/prior/draws/' type '_draws' num2str(file) ]);
     end
     NumberOfDraws = rows(pdraws);
     isdrsaved = columns(pdraws)-1;
@@ -136,4 +135,4 @@ for file = 1:NumberOfDrawsFiles
     end
 end
 
-options_.ar = oldnar;
\ No newline at end of file
+options_.ar = oldnar;
diff --git a/matlab/dsge_simulated_theoretical_covariance.m b/matlab/dsge_simulated_theoretical_covariance.m
index e5dfd58e88..0be948bc3c 100644
--- a/matlab/dsge_simulated_theoretical_covariance.m
+++ b/matlab/dsge_simulated_theoretical_covariance.m
@@ -16,7 +16,7 @@ function [nvar,vartan,CovarFileNumber] = dsge_simulated_theoretical_covariance(S
 %   vartan            [char]     array of characters (with nvar rows).
 %   CovarFileNumber   [integer]  scalar, number of prior or posterior data files (for covariance).
 
-% Copyright (C) 2007-2017 Dynare Team
+% Copyright (C) 2007-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -37,17 +37,16 @@ nodecomposition = 1;
 
 % Get informations about the _posterior_draws files.
 if strcmpi(type,'posterior')
-    DrawsFiles = dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]));
     posterior = 1;
 elseif strcmpi(type,'prior')
-    DrawsFiles = dir([M_.dname '/prior/draws/' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/prior/draws/' type '_draws*' ]));
     CheckPath('prior/moments',M_.dname);
     posterior = 0;
 else
     disp('dsge_simulated_theoretical_covariance:: Unknown type!')
     error();
 end
-NumberOfDrawsFiles = length(DrawsFiles);
 
 %delete old stale files before creating new ones
 if posterior
@@ -94,9 +93,9 @@ CovarFileNumber = 1;
 linea = 0;
 for file = 1:NumberOfDrawsFiles
     if posterior
-        load([M_.dname '/metropolis/' DrawsFiles(file).name ],'pdraws');
+        load([M_.dname '/metropolis/' M_.fname '_' type '_draws' num2str(file) ]);
     else
-        load([M_.dname '/prior/draws/' DrawsFiles(file).name ],'pdraws');
+        load([M_.dname '/prior/draws/' type '_draws' num2str(file) ]);
     end
     NumberOfDraws = rows(pdraws);
     isdrsaved = columns(pdraws)-1;
@@ -136,4 +135,4 @@ for file = 1:NumberOfDrawsFiles
     end
 end
 
-options_.ar = nar;
\ No newline at end of file
+options_.ar = nar;
diff --git a/matlab/dsge_simulated_theoretical_variance_decomposition.m b/matlab/dsge_simulated_theoretical_variance_decomposition.m
index e6838913e8..7e6942c194 100644
--- a/matlab/dsge_simulated_theoretical_variance_decomposition.m
+++ b/matlab/dsge_simulated_theoretical_variance_decomposition.m
@@ -18,7 +18,7 @@ function [nvar,vartan,NumberOfDecompFiles] = ...
 %   vartan            [char]     array of characters (with nvar rows).
 %   CovarFileNumber   [integer]  scalar, number of prior or posterior data files (for covariance).
 
-% Copyright (C) 2007-2017 Dynare Team
+% Copyright (C) 2007-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -39,10 +39,10 @@ nodecomposition = 0;
 
 % Get informations about the _posterior_draws files.
 if strcmpi(type,'posterior')
-    DrawsFiles = dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]));
     posterior = 1;
 elseif strcmpi(type,'prior')
-    DrawsFiles = dir([M_.dname '/prior/draws/' type '_draws*' ]);
+    NumberOfDrawsFiles = length(dir([M_.dname '/prior/draws/' type '_draws*' ]));
     CheckPath('prior/moments',M_.dname);
     posterior = 0;
 else
@@ -81,7 +81,6 @@ options_.ar = 0;
 
 nexo = M_.exo_nbr;
 
-NumberOfDrawsFiles = rows(DrawsFiles);
 NumberOfSavedElementsPerSimulation = nvar*(nexo+1);
 MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPerSimulation/8);
 
@@ -131,9 +130,9 @@ linea_ME = 0;
 only_non_stationary_vars=0;
 for file = 1:NumberOfDrawsFiles
     if posterior
-        load([M_.dname '/metropolis/' DrawsFiles(file).name ]);
+        load([M_.dname '/metropolis/' M_.fname '_' type '_draws' num2str(file) ]);
     else
-        load([M_.dname '/prior/draws/' DrawsFiles(file).name ]);
+        load([M_.dname '/prior/draws/' type '_draws' num2str(file) ]);
     end
     isdrsaved = columns(pdraws)-1;
     NumberOfDraws = rows(pdraws);
-- 
GitLab