Pecan: Nichtübereinstimmung zwischen Eingangs-Priordaten und Ausgangs-Ensemble-Eigenschaften / Läufen bei der Ausführung mit DVM-DOS-TEM PFT CMT04-Salix

Erstellt am 10. Okt. 2017  ·  27Kommentare  ·  Quelle: PecanProject/pecan

OK, ich habe viel darüber auf Gitter geredet, aber es scheint, dass ich ein Problem eröffnen muss. Ich werde versuchen, das Problem hier zu artikulieren, bitte aber bei Bedarf um Klarheit.

Das Problem ist folgendes: Plötzlich, wenn ich die neueste Version des Entwicklungszweigs mit dem neuesten dvmdostem-Code ausführe, erhalte ich ein ziemlich häufiges Problem, bei dem gemäß dem Workflow-Protokoll und meinen hinzugefügten logger.debug()-Anweisungen das richtige Posterior ( für SLA) und früher (für alle anderen Merkmale im dvmdostem CMT04-Salix PFT siehe hier: https://www.betydb.org/pfts/136). Zum Beispiel:

2017-10-10 07:56:52 INFO   [PEcAn.logger::logger.info] :
   Selected PFT(s): CMT04-Salix
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'prior.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'post.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'trait.mcmc' not found
2017-10-10 07:56:52 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix has MCMC samples for: SLA
2017-10-10 07:56:52 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix will use prior distributions for: mort2
   growth_resp_factor leaf_turnover_rate leaf_width nonlocal_dispersal
   fineroot2leaf root_turnover_rate seedling_mortality stomatal_slope
   r_fract root_respiration_rate Vm_low_temp Vcmax quantum_efficiency
2017-10-10 07:56:52 INFO   [PEcAn.logger::logger.info] :
   using 5004 samples per trait
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-10 07:56:52 INFO   [PEcAn.logger::logger.info] :
   No sampling method supplied, defaulting to uniform random sampling

Welches sind die falschen Eigenschaften, die im vorherigen Dist-Teil aufgeführt sind.

Wenn ich mir also die Posterior-ID in den dbfiles UND im PFT-Ordner im PEcAn-Lauf anschaue, zeigen beide die richtigen vorherigen/posterioren Dateien/Infos und stimmen überein.

Zum Beispiel:

> load('prior.distns.Rdata')
> ls()
[1] "post.distns"  "prior.distns" "q"
> prior.distns
                                 distn parama    paramb  n
SW_albedo                         unif  0.010     0.300 NA
gcmax                             unif  0.001     0.005 NA
cuticular_cond                 weibull  1.120 54531.000 29
SLA                               norm 10.000     5.000 NA
frprod_perc_20                    unif  0.100    99.000 NA
frprod_perc_10                    unif  0.100    99.000 NA
extinction_coefficient_diffuse weibull  4.000     0.400 NA
>

und

> load('prior.distns.Rdata')
> ls()
[1] "prior.distns" "q"
> prior.distns
                                 distn parama    paramb  n
SW_albedo                         unif  0.010     0.300 NA
gcmax                             unif  0.001     0.005 NA
cuticular_cond                 weibull  1.120 54531.000 29
SLA                               norm 10.000     5.000 NA
frprod_perc_20                    unif  0.100    99.000 NA
frprod_perc_10                    unif  0.100    99.000 NA
extinction_coefficient_diffuse weibull  4.000     0.400 NA
> getwd()
[1] "/data/sserbin/Modeling/dvmdostem/pecan_runs/run.56/pft/CMT04-Salix"
> load('post.distns.MA.Rdata')
> ls90
Error: object 'ls90' not found
> ls()
[1] "post.distns"  "prior.distns" "q"
> post.distns
                                 distn   parama       paramb  n
SW_albedo                         unif  0.01000 3.000000e-01 NA
gcmax                             unif  0.00100 5.000000e-03 NA
cuticular_cond                 weibull  1.12000 5.453100e+04 29
SLA                               norm 10.91521 1.807541e-01 NA
frprod_perc_20                    unif  0.10000 9.900000e+01 NA
frprod_perc_10                    unif  0.10000 9.900000e+01 NA
extinction_coefficient_diffuse weibull  4.00000 4.000000e-01 NA


> load('post.distns.Rdata')
> ls()
[1] "post.distns"  "prior.distns" "q"
> post.distns
                                 distn   parama       paramb  n
SW_albedo                         unif  0.01000 3.000000e-01 NA
gcmax                             unif  0.00100 5.000000e-03 NA
cuticular_cond                 weibull  1.12000 5.453100e+04 29
SLA                               norm 10.91521 1.807541e-01 NA
frprod_perc_20                    unif  0.10000 9.900000e+01 NA
frprod_perc_10                    unif  0.10000 9.900000e+01 NA
extinction_coefficient_diffuse weibull  4.00000 4.000000e-01 NA
> prior.distns
                                 distn parama    paramb  n
SW_albedo                         unif  0.010     0.300 NA
gcmax                             unif  0.001     0.005 NA
cuticular_cond                 weibull  1.120 54531.000 29
SLA                               norm 10.000     5.000 NA
frprod_perc_20                    unif  0.100    99.000 NA
frprod_perc_10                    unif  0.100    99.000 NA
extinction_coefficient_diffuse weibull  4.000     0.400 NA

Der Schreibkonfigurationscode versucht dann, die falschen Parameter zu schreiben, was zu Läufen führt, bei denen das einzige variierte Modellmerkmal SLA ist, da es MCMC-Beispiele enthält. Ich kann nicht herausfinden, woher die Phantompriors kommen. Tobey Carman von UAF hat das gleiche Problem auf der VM, die auf dem gleichen Level von Develop/dvmdostem-Commits liegt.
https://github.com/PecanProject/pecan/issues/new

Bug 03 - High Discussion

Hilfreichster Kommentar

Aaaund dies erklärt, warum es auftauchte, wenn es tat - das In-Paket post.distns war nicht automatisch im Workflow sichtbar, bis ich in #1684 Utils auf Lazy-Loading umgestellt habe. Mea culpa!

Alle 27 Kommentare

Es ist im Moment sehr schwer zu sagen, aber es scheint, dass dies nur mit dieser speziellen PFT zusammenhängt? Aber ich bin mir nicht ganz sicher, ich habe mit anderen Modi von PFT-Combos rumgespielt und das noch nicht gesehen. Könnte auch spezifisch für die tem-Modell-Registrierung in pEcAn/bety . sein

Hier ist ein Ausschnitt aus einer meiner pecan.CONFIGS.xmls

?xml version="1.0"?>
<pecan>
 <outdir>/data/sserbin/Modeling/dvmdostem/pecan_runs/run.56/</outdir>
 <database>
  <bety>
   <user>bety</user>
   <password>bety</password>
   <host>localhost</host>
   <dbname>bety</dbname>
   <driver>PostgreSQL</driver>
   <write>FALSE</write>
  </bety>
  <dbfiles>/data/home/sserbin/.pecan/dbfiles</dbfiles>
 </database>
 <pfts>
  <pft>
   <name>CMT04-Salix</name>
   <constants>
    <num>1</num>
   </constants>
   <posteriorid>2000001342</posteriorid>
   <outdir>/data/sserbin/Modeling/dvmdostem/pecan_runs/run.56//pft/CMT04-Salix</outdir>
  </pft>
 </pfts>

Also habe ich get.parameter.samples einige print-Anweisungen hinzugefügt

### Identify PFTs in the input settings.xml file
get.parameter.samples <- function(settings, 
                                  posterior.files = rep(NA, length(settings$pfts)), 
                                  ens.sample.method = "uniform") {

  ## added by sps
  PEcAn.logger::logger.debug(paste0("get.param.samples.R posterior file: ", posterior.files))
  PEcAn.logger::logger.debug(paste0("priors: ", prior.distns))
  # added by sps


  pfts      <- settings$pfts
  num.pfts  <- length(settings$pfts)
  pft.names <- list()
  outdirs   <- list()

  for (i.pft in seq_along(pfts)) {
    pft.names[i.pft] <- settings$pfts[[i.pft]]$name

    ### If no PFT(s) are specified insert NULL to warn user
    if (length(pft.names) == 0) {
      pft.names[1] <- "NULL"
    }

    ### Get output directory info
    outdirs[i.pft] <- settings$pfts[[i.pft]]$outdir
    PEcAn.logger::logger.info(paste0("PFT Output Directories: ", outdirs)) # added by sps

  }  ### End of for loop to extract pft names

  PEcAn.logger::logger.info("Selected PFT(s): ", pft.names)

  ## Generate empty list arrays for output.
  trait.samples <- sa.samples <- ensemble.samples <- env.samples <- runs.samples <- list()

  ## Load PFT priors and posteriors
  for (i in seq_along(pft.names)) {
    #rm(prior.distns, post.distns, trait.mcmc) # sps
    ## Load posteriors
    if (!is.na(posterior.files[i])) {
      # Load specified file
      load(posterior.files[i])
      if (!exists("prior.distns") & exists("post.distns")) {
        prior.distns <- post.distns
      }
    } else {
      # Default to most recent posterior in the workflow, or the prior if there is none
      fname <- file.path(outdirs[i], "post.distns.Rdata")
      PEcAn.logger::logger.debug(paste0("posterior fname: ",fname))  # added by sps
      if (file.exists(fname)) {
        load(fname)
        prior.distns <- post.distns
      } else {
        load(file.path(outdirs[i], "prior.distns.Rdata"))
      }
    }

    ## added by sps
    PEcAn.logger::logger.debug(paste0("get.param.samples.R posterior file: ", posterior.files))
    PEcAn.logger::logger.debug(paste0("priors: ", prior.distns))
    # added by sps

    ### Load trait mcmc data (if exists)
    if ("trait.mcmc.Rdata" %in% dir(unlist(outdirs[i]))) {
      ma.results <- TRUE
      PEcAn.logger::logger.debug("*** Trait MCMC samples found ***") # added by sps
      load(file.path(outdirs[i], "trait.mcmc.Rdata"))
    } else {
      ma.results <- FALSE
      PEcAn.logger::logger.debug("*** Trait MCMC samples not found ***") # added by sps
    }

    pft.name <- unlist(pft.names[i])


Protokollausgabe

Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-10 16:54:40 WARN   [PEcAn.logger::logger.warn] :
   Multiple Valid Files found on host machine. Returning last updated
   record.
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-10 16:54:40 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file:
   /data/home/sserbin/.pecan/dbfiles/posterior/2000001348/post.distns.MA.Rdata
2017-10-10 16:54:40 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("gamma", "beta", "gamma", "gamma", "beta", "lnorm", "weibull",
   "beta", "weibull", "beta", "weibull", "norm", "weibull", "weibull",
   "gamma") priors: c(1.47, 2.63, 2.9, 6.53, 20.3, 0.811, 1.67, 3.61, 3.63,
   2, 2.66, 10, 2.06, 3.55, 90.9) priors: c(0.0578, 6.52, 0.63, 1.49, 76.1,
   0.843, 0.657, 0.433, 3.81, 4, 6.29, 1.02, 19, 24.7, 1580) priors: c(0,
   0, 40, 17, 30, 0, 66, 0, 4, 0, 35, 0, 125, 97, 56)
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-10 16:54:40 INFO   [PEcAn.logger::logger.info] :
   PFT Output Directories:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.60//pft/CMT04-Salix
2017-10-10 16:54:40 INFO   [PEcAn.logger::logger.info] :
   Selected PFT(s): CMT04-Salix
2017-10-10 16:54:40 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file:
   /data/home/sserbin/.pecan/dbfiles/posterior/2000001348/post.distns.MA.Rdata
2017-10-10 16:54:40 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("gamma", "beta", "gamma", "gamma", "beta", "lnorm", "weibull",
   "beta", "weibull", "beta", "weibull", "norm", "weibull", "weibull",
   "gamma") priors: c(1.47, 2.63, 2.9, 6.53, 20.3, 0.811, 1.67, 3.61, 3.63,
   2, 2.66, 10, 2.06, 3.55, 90.9) priors: c(0.0578, 6.52, 0.63, 1.49, 76.1,
   0.843, 0.657, 0.433, 3.81, 4, 6.29, 1.02, 19, 24.7, 1580) priors: c(0,
   0, 40, 17, 30, 0, 66, 0, 4, 0, 35, 0, 125, 97, 56)
2017-10-10 16:54:40 DEBUG  [PEcAn.logger::logger.debug] :
   *** Trait MCMC samples found ***
2017-10-10 16:54:40 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix has MCMC samples for: SLA
2017-10-10 16:54:40 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix will use prior distributions for: mort2
   growth_resp_factor leaf_turnover_rate leaf_width nonlocal_dispersal
   fineroot2leaf root_turnover_rate seedling_mortality stomatal_slope
   r_fract root_respiration_rate Vm_low_temp Vcmax quantum_efficiency
2017-10-10 16:54:40 INFO   [PEcAn.logger::logger.info] :
   using 5004 samples per trait
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.

Seltsam ist, dass der erste Satz von Logger-Anweisungen zeigt, dass der Lauf bereits posterior.files und prior.distns gesetzt hat, bevor er überhaupt dazu kommt, priors/posteriors in der for-Schleife zu parsen? Ich kann also immer noch nicht isolieren, woher die Priors kommen und wie sie dann in dieser Funktion verwendet werden? Basierend auf dem Code sieht es so aus, als ob er die Informationen aus dem PFT-Ordner verwenden sollte, aber sie scheinen von woanders herzukommen?

Es scheint sicher , dass es dieses Bit sein runnign sollte die richtige posterior info aber dafür zu bekommen , welchen Gründen auch immer es ist kein

    } else {
      # Default to most recent posterior in the workflow, or the prior if there is none
      fname <- file.path(outdirs[i], "post.distns.Rdata")
      PEcAn.logger::logger.debug(paste0("posterior fname: ",fname))  # added by sps
      if (file.exists(fname)) {
        load(fname)
        prior.distns <- post.distns
      } else {
        load(file.path(outdirs[i], "prior.distns.Rdata"))
      }
    }

Ich weiß, dass es nicht läuft, weil der Logger-Ausgang nicht da ist ....

Anstatt also diesen Teil auszuführen, verwendet es einige andere prior.distns von woanders, die es zu greifen scheint, wer weiß wo???

OK, sehr sehr seltsam und ich bin damit verloren. Ich habe eine NEUE DVM-DOS-TEM PFT erstellt und habe immer noch das gleiche Problem

Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:28:17 INFO   [PEcAn.logger::logger.info] : 
   Selected PFT(s): CMT04-Betula 
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'prior.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'post.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'trait.mcmc' not found
2017-10-13 08:28:17 INFO   [PEcAn.logger::logger.info] : 
   PFT CMT04-Betula has MCMC samples for: SLA 
2017-10-13 08:28:17 INFO   [PEcAn.logger::logger.info] : 
   PFT CMT04-Betula will use prior distributions for: mort2 
   growth_resp_factor leaf_turnover_rate leaf_width nonlocal_dispersal 
   fineroot2leaf root_turnover_rate seedling_mortality stomatal_slope 
   r_fract root_respiration_rate Vm_low_temp Vcmax quantum_efficiency 
2017-10-13 08:28:17 INFO   [PEcAn.logger::logger.info] : 
   using 5004 samples per trait 
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")

Gibt es einen Grund, warum dieser Fehler modellspezifisch in Bezug auf dvm-dos-tem sein könnte? Vielleicht wird etwas falsch aus dem NAMESPACE maskiert? Ich kann nicht sehen, wie das passiert?

Okay, irgendwas ist los. Hier ist ein SIPNET-Lauf

Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   Selected PFT(s): tundra.deciduous.NGEE_Arctic 
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'prior.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'post.distns' not found
Warning in rm(prior.distns, post.distns, trait.mcmc) :
  object 'trait.mcmc' not found
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   PFT tundra.deciduous.NGEE_Arctic has MCMC samples for: leafC Amax 
   Vm_low_temp leaf_respiration_rate_m2 SLA 
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   PFT tundra.deciduous.NGEE_Arctic will use prior distributions for: mort2 
   growth_resp_factor leaf_turnover_rate leaf_width nonlocal_dispersal 
   fineroot2leaf root_turnover_rate seedling_mortality stomatal_slope 
   r_fract root_respiration_rate Vcmax quantum_efficiency 
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   using 3004 samples per trait 
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   No sampling method supplied, defaulting to uniform random sampling 
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:32:10 INFO   [PEcAn.logger::logger.info] : 
   Using uniform random sampling 
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")

Vcmax und mort2 sind eindeutig ein Fehler. Woher kommen diese Prioren!

Hier ist auch eine frühere Ausgabe von meinem workflow.log vor der meta.analyse

Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:28:10 INFO   [PEcAn.logger::logger.info] : 
   --------------------------------------------------------- 
2017-10-13 08:28:10 INFO   [PEcAn.logger::logger.info] : SLA 
Auto-disconnecting PostgreSQLConnection
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : Median SLA : 12.525 
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : 
   --------------------------------------------------------- 
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : 
   Summary of Prior distributions for: CMT04-Betula 
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : 
   distn parama paramb n 
2017-10-13 08:28:13 INFO   [FUN] : 
   cuticular_cond lnorm 8.400 0.900 0 
2017-10-13 08:28:13 INFO   [FUN] : 
   extinction_coefficient_diffuse gamma 5.000 10.000 NA 
2017-10-13 08:28:13 INFO   [FUN] : 
   gcmax unif 0.001 0.005 NA 
2017-10-13 08:28:13 INFO   [FUN] : 
   SLA norm 10.000 5.000 NA 
2017-10-13 08:28:13 INFO   [FUN] : 
   frprod_perc_20 unif 0.100 99.000 NA 
2017-10-13 08:28:13 INFO   [FUN] : 
   frprod_perc_10 unif 0.100 99.000 NA 
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : 
   number of observations per trait for CMT04-Betula 
2017-10-13 08:28:13 INFO   [PEcAn.logger::logger.info] : 
   34 observations of SLA 
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")

Dort werden die richtigen Merkmale angezeigt, sodass das Problem nach der Metaanalyse und vor dem Ausführen von write.configs auftritt

OK, und dann wird es manchmal gut funktionieren, wie unten

Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:48:05 INFO   [PEcAn.logger::logger.info] :
   PFT Output Directories:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.61//pft/CMT04-Salix
2017-10-13 08:48:05 INFO   [PEcAn.logger::logger.info] :
   Selected PFT(s): CMT04-Salix
2017-10-13 08:48:05 DEBUG  [PEcAn.logger::logger.debug] :
   posterior fname:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.61//pft/CMT04-Salix/post.distns.Rdata
2017-10-13 08:48:05 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file: NA
2017-10-13 08:48:05 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("weibull", "unif", "unif", "norm", "unif", "unif", "weibull")
   priors: c(1.12, 0.01, 0.001, 10.9152064936782, 0.1, 0.1, 4) priors:
   c(54531, 0.3, 0.005, 0.180754050808388, 99, 99, 0.4) priors: c(29, NA,
   NA, NA, NA, NA, NA)
2017-10-13 08:48:05 DEBUG  [PEcAn.logger::logger.debug] :
   *** Trait MCMC samples found ***
2017-10-13 08:48:05 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix has MCMC samples for: SLA
2017-10-13 08:48:05 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix will use prior distributions for: cuticular_cond
   SW_albedo gcmax frprod_perc_20 frprod_perc_10
   extinction_coefficient_diffuse
2017-10-13 08:48:05 INFO   [PEcAn.logger::logger.info] :
   using 5004 samples per trait
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.

Ich glaube wirklich, dass hier etwas mit Ordnung zu tun hat....

Beachten Sie in der Log-Ausgabe oben get.param.samples.R posteriore Datei: NA und es hat gut funktioniert, aber weiter oben zeigt diese print-Anweisung einen Pfad zu einer Datei, eine Datei mit den richtigen Informationen darin, aber dann verwendet sie die falschen Vorher?

Yup, und wenn ich den GENAU GLEICHEN Arbeitsablauf und die Einstellungen in pecan.xml ausführe, dh den Arbeitsablauf einfach erneut quelle, erhalte ich andere Ergebnisse!!!

See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:56:35 WARN   [PEcAn.logger::logger.warn] :
   Multiple Valid Files found on host machine. Returning last updated
   record.
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:56:36 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file:
   /data/home/sserbin/.pecan/dbfiles/posterior/2000001353/post.distns.MA.Rdata
2017-10-13 08:56:36 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("gamma", "beta", "gamma", "gamma", "beta", "lnorm", "weibull",
   "beta", "weibull", "beta", "weibull", "norm", "weibull", "weibull",
   "gamma") priors: c(1.47, 2.63, 2.9, 6.53, 20.3, 0.811, 1.67, 3.61, 3.63,
   2, 2.66, 10, 2.06, 3.55, 90.9) priors: c(0.0578, 6.52, 0.63, 1.49, 76.1,
   0.843, 0.657, 0.433, 3.81, 4, 6.29, 1.02, 19, 24.7, 1580) priors: c(0,
   0, 40, 17, 30, 0, 66, 0, 4, 0, 35, 0, 125, 97, 56)
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 08:56:36 INFO   [PEcAn.logger::logger.info] :
   PFT Output Directories:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.61//pft/CMT04-Salix
2017-10-13 08:56:36 INFO   [PEcAn.logger::logger.info] :
   Selected PFT(s): CMT04-Salix
2017-10-13 08:56:36 DEBUG  [PEcAn.logger::logger.debug] :

Sie können sehen, dass diese print-Anweisung dieses Mal nicht NA ist und ich die falschen Eigenschaften in write.configs bekomme!

Wenn es also nicht richtig funktioniert, zeigt es auf die KORREKTE posteriore Datei, ABER erhält irgendwie Priors für Merkmale, die IN DIESER DATEI oder in der PFT nicht existieren!?

Ich weiß also nicht, ob dies hilfreich ist, aber @tobeycarman, der auch auf dieses Problem

> 
> 
> # ----------------------------------------------------------------------
> # PEcAn Workflow .... [TRUNCATED] 

> if (is.na(args[1])){
+   settings <- PEcAn.settings::read.settings("pecan.xml")
+ } else {
+   settings.file = args[1]
+   settings <- PEcAn.setting .... [TRUNCATED] 
2017-10-13 08:05:51 SEVERE [PEcAn.logger::logger.severe] : 
   Could not find a pecan.xml file 
Warning in file(file, ifelse(append, "a", "w")) :
  cannot open file '/home/dlebauer/out/ebifarm/post//STATUS': No such file or directory
Error in file(file, ifelse(append, "a", "w")) : 
  cannot open the connection
Error during wrapup: cannot open the connection
>

Ist es möglich, dass sich in der Datenbank irgendwie ein Posterior von einem alten Lauf von @dlebauer befindet , der wie ein ED2-Lauf aussieht, auf den wir irgendwie standardmäßig eingestellt werden? Oder vielleicht irgendwo in einem R-Paket. Ich habe erfolglos gesucht. Mir ist klar, dass dies eine abgefahrene Weite ist, aber ich dachte, ich würde fragen, falls es etwas wäre, das eine Idee auslösen würde

Weil ich nicht sehen kann, wie sein Fehler so angezeigt wird ... es sei denn, es hat etwas mit der VM zu tun.

Hier sind Ausgaben von @tobeycarman, die auch die Inkonsistenz zeigen, wo es nicht funktioniert und dann nicht mehr funktioniert. Aber auch er bekommt die gleichen falschen Parameter

Ausgabe-1.txt
Ausgabe-0.txt

Ich fügte hinzuWAHR in meinen Metaanalyse-Tags, obwohl ich nicht sicher bin, ob dies ein gültiges Tag ist. Dies führte jedoch dazu, dass es für einen einzelnen Lauf richtig funktionierte

See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 09:57:01 WARN   [PEcAn.logger::logger.warn] :
   Multiple Valid Files found on host machine. Returning last updated
   record.
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file: NA
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("gamma", "beta", "gamma", "gamma", "beta", "lnorm", "weibull",
   "beta", "weibull", "beta", "weibull", "norm", "weibull", "weibull",
   "gamma") priors: c(1.47, 2.63, 2.9, 6.53, 20.3, 0.811, 1.67, 3.61, 3.63,
   2, 2.66, 10, 2.06, 3.55, 90.9) priors: c(0.0578, 6.52, 0.63, 1.49, 76.1,
   0.843, 0.657, 0.433, 3.81, 4, 6.29, 1.02, 19, 24.7, 1580) priors: c(0,
   0, 40, 17, 30, 0, 66, 0, 4, 0, 35, 0, 125, 97, 56)
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.
See help("Deprecated")
2017-10-13 09:57:01 INFO   [PEcAn.logger::logger.info] :
   PFT Output Directories:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.64//pft/CMT04-Salix
2017-10-13 09:57:01 INFO   [PEcAn.logger::logger.info] :
   Selected PFT(s): CMT04-Salix
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   posterior fname:
   /data/sserbin/Modeling/dvmdostem/pecan_runs/run.64//pft/CMT04-Salix/post.distns.Rdata
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   get.param.samples.R posterior file: NA
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   priors: c("weibull", "unif", "unif", "norm", "unif", "unif", "weibull")
   priors: c(1.12, 0.01, 0.001, 10.9152064936782, 0.1, 0.1, 4) priors:
   c(54531, 0.3, 0.005, 0.180754050808388, 99, 99, 0.4) priors: c(29, NA,
   NA, NA, NA, NA, NA)
2017-10-13 09:57:01 DEBUG  [PEcAn.logger::logger.debug] :
   *** Trait MCMC samples found ***
2017-10-13 09:57:01 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix has MCMC samples for: SLA
2017-10-13 09:57:01 INFO   [PEcAn.logger::logger.info] :
   PFT CMT04-Salix will use prior distributions for: cuticular_cond
   SW_albedo gcmax frprod_perc_20 frprod_perc_10
   extinction_coefficient_diffuse
2017-10-13 09:57:01 INFO   [PEcAn.logger::logger.info] :
   using 5004 samples per trait
Warning: '$.SafeList' is deprecated.
Use 'PEcAn.settings::$.SafeList' instead.

Es scheint also, wenn etwas Pekannuss dazu bringt, eine Änderung aufzunehmen, es funktioniert ordnungsgemäß, aber ansonsten nicht. Und wieder get.param.samples.R posteriore Datei: NA, wenn es funktioniert

Dies im Web zu tun hatte nicht das gleiche Ergebnis, daher ist dies ziemlich inkonsistent.

Hinzufügen derTRUE-Tag hat bei mir nicht funktioniert.

@serbinsh könntest du den Workflow bis hierher Zeile für Zeile ausführen?
Die "Mehrere gültige Dateien auf dem Host-Rechner gefunden. Letzte Aktualisierung zurückgeben"
aufzeichnen. " Warnung könnte ein Hinweis sein, dbfile.check kann manchmal eine Liste unerwünschter Dateien zurückgeben

Ich bin mir nicht sicher, ob das für Ihr Problem relevant ist, aber dies hat mir Probleme auf dem PDA verursacht, weshalb ich der Funktion die Option return.all hinzugefügt habe

Ich habe das gleiche Problem mit DALEC
Mein letzter Lauf 1000008435

Erstellt eine Konfigurationsdatei mit

-mort2 19.5518192434762 
-growth_resp_factor 0.269134877386544 
-t5 0.00115746296987216 
-leaf_width 4.21460770704145 
-nonlocal_dispersal 0.208363236071724 
-fineroot2leaf 2.28414274764454 -t7 0.00143050364071698 
-seedling_mortality 0.95094009313231 
-stomatal_slope 3.44801807715082
-r_fract 0.31488851365167 
-root_respiration_rate 5.48891170784511 
-Vm_low_temp 9.99793554087408 
-SLA 0.0329788044168264 
-Vcmax 22.4703903038444 
-quantum_efficiency 0.0574557888428778

Das ist definitiv falsche Variablen.

Es wurde versucht, Betsys Lauf auf der Release-VM zu duplizieren, und die DALEC-Konfigurationsdatei war

image

Der Lauf war erfolgreich, so dass der neueste Code bei der Entwicklung eindeutig bestimmte Eigenschaften verwendet.

@tonygardella Ich stimme zu, dass es sich um ein Entwicklungszweigproblem handelt. Meine Vermutung ist eine unbeabsichtigte Folge des Verschiebens von Funktionen und NAMESPACE, kann aber noch nicht herausfinden warum

Dies wurde bis zum Schritt write.configs verfolgt. Insbesondere beim Schritt get.parameter.samples wird es durcheinander gebracht, die richtigen vorherigen und/oder hinteren Daten zu finden und dann standardmäßig auf diese ed-spezifischen Merkmale zu setzen.

@tonygardella Können wir den Pfad / Ort sehen, an dem diese Priors

Ich glaube, dies ist die beleidigende Datei: https://github.com/PecanProject/pecan/blob/develop/base/utils/data/post.distns.RData

In get.parameter.samples diese Zeile entfernt das Objekt von prior.distns , so dass , wenn es um bekommt diese Linie sie die posterior.distns zu prior.distns zuordnen kann, aber in diesem Fall die geladene noch prior.distns.RData Datei geladen als prior.distns, da das PEcAn.utils-Paket geladen wird. Die Existenz dieses Objekts führt dazu, dass diese Paketdatei als Standard verwendet wird.

Der Grund dafür, dass dies auf unseren Maschinen und nicht auf der VM passiert, liegt darin, dass dieser Teil des Codes nicht ausgelöst wird, es sei denn, es sind nachträgliche Dateien vorhanden, die auf der VM nicht vorhanden sind.

Beim Ausführen Zeile für Zeile versuchte ich immer wieder, prior.distns aus meiner Umgebung zu löschen, aber es konnte das Objekt nicht finden Teil des utils-Pakets.

Wird die Datei irgendwo für einen Test verwendet? https://github.com/PecanProject/pecan/blob/develop/base/utils/data/post.distns.RData

Eine schnelle Suche hat nicht gezeigt, dass es nirgendwo verwendet wird.

Aaaund dies erklärt, warum es auftauchte, wenn es tat - das In-Paket post.distns war nicht automatisch im Workflow sichtbar, bis ich in #1684 Utils auf Lazy-Loading umgestellt habe. Mea culpa!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen