@@ -32,10 +32,10 @@ globalVariables(c(
3232# '
3333cohortsToFuelClasses <- function (cohortData , pixelGroupMap , flammableRTM , landcoverDT = NULL ,
3434 sppEquiv , sppEquivCol , cutoffForYoungAge , fuelClassCol = " FuelClass" ) {
35- cD <- copy(cohortData )
35+ # cD <- copy(cohortData)
3636 joinCol <- c(fuelClassCol , eval(sppEquivCol ))
3737 sppEquivSubset <- unique(sppEquiv [, .SD , .SDcols = joinCol ])
38- cD <- cD [sppEquivSubset , on = c(" speciesCode" = sppEquivCol )]
38+ cD <- cohortData [sppEquivSubset , on = c(" speciesCode" = sppEquivCol )]
3939 setnames(cD , old = fuelClassCol , new = " FuelClass" ) # so we don't have to use eval, which trips up some dt
4040 # data.table needs an argument for which column names are kept during join
4141
@@ -50,14 +50,37 @@ cohortsToFuelClasses <- function(cohortData, pixelGroupMap, flammableRTM, landco
5050
5151 # Fix zero age, zero biomass
5252 classes <- sort(unique(cD $ FuelClass ))
53- classList <- lapply(classes , makeRastersFromCD ,
54- flammableRTM = flammableRTM ,
55- pixelGroupMap = pixelGroupMap ,
56- cohortData = cD
57- )
58-
59- classList <- rast(classList )
60-
53+
54+ # st <- profvis::profvis({
55+
56+ pgmVals <- list (pixelGroup = values(pixelGroupMap , mat = FALSE ),
57+ pixelId = seq(ncell(pixelGroupMap ))) | >
58+ setDT() | > na.omit()
59+ aa <- pgmVals [cD , on = " pixelGroup" , allow.cartesian = TRUE ]
60+ bb <- split(aa , by = " FuelClass" )
61+ flamVals <- values(flammableRTM , mat = FALSE )
62+ flamValsGood <- ! is.na(flamVals )
63+ cc <- Map(r = bb , function (r ) {
64+ ras <- rastFromDF(r [, .(pixelId , BperClass )], rasTemplate = pixelGroupMap )
65+ rasVals <- values(ras , mat = FALSE )
66+ rasVals [flamValsGood & is.na(rasVals )] <- 0
67+ ras <- setValues(x = ras , values = rasVals )
68+ ras
69+ })
70+ dd <- rast(cc )
71+ classList <- dd [[order(names(dd ))]]
72+ # })
73+
74+
75+ # st2 <- profvis::profvis({
76+ # classList <- lapply(classes, makeRastersFromCD,
77+ # flammableRTM = flammableRTM,
78+ # pixelGroupMap = pixelGroupMap,
79+ # cohortData = cD
80+ # )
81+ #
82+ # classList <- rast(classList)
83+ # })
6184 if (! is.null(landcoverDT )) {
6285 # find rows that aren't empty i.e. have non-forest landcover
6386 landcoverDT [, foo : = rowSums(.SD ), .SD = setdiff(names(landcoverDT ), " pixelID" )]
0 commit comments