From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [BABEL] BUG Re: Omitting try/catch blocks from tangled R code? Date: Wed, 26 Mar 2014 16:17:50 -0400 Message-ID: <87d2h71qqc.fsf@bagel.gateway.pace.com> References: <52F498AE.6090802@krugs.de> <87siruamo3.fsf@gmail.com> <52F5326C.7010505@krugs.de> <877g7syio6.fsf@gmail.com> <87txawwwh6.fsf@gmail.com> <87r45xeabf.fsf@gmail.com> <87fvm8gxok.fsf@gmail.com> <87siq7g2j5.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42967) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WTENt-0008Nb-0j for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 13:46:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WTENo-0003qV-Kg for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 13:46:32 -0400 Received: from mail-pa0-x236.google.com ([2607:f8b0:400e:c03::236]:63315) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WTENo-0003qD-67 for emacs-orgmode@gnu.org; Thu, 27 Mar 2014 13:46:28 -0400 Received: by mail-pa0-f54.google.com with SMTP id lf10so3836440pab.27 for ; Thu, 27 Mar 2014 10:46:26 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Rainer M Krug Cc: emacs-orgmode@gnu.org, Charles Berry , Eric Schulte Rainer M Krug writes: > Eric Schulte writes: > >> Rainer M Krug writes: >> >>> Eric Schulte writes: >>> >>>> Rainer M Krug writes: >>>> >>>>> Eric Schulte writes: >>>>> >>>>>> Charles Berry writes: >>>>>> >>>>>>> John Hendy gmail.com> writes: >>>>>>> >>>>>>> [deleted] >>>>>>>> > >>>>>>>> > I think the default behavior should be reverted, as tangling and >>>>>>>> > exporting are two different things. When I tangle, I want to see= the >>>>>>>> > code blocks as they are in the org document (with possible varia= bles and >>>>>>>> > expansions) but not to create files where I do not put it explic= itly >>>>>>>> > into a code block. These wrappers have nothing to do with the co= de, and >>>>>>>> > are only there for the exported engine. So I would either revert= to the >>>>>>>> > original behavior, or, introduce a new header argument, >>>>>>>> > e.g. :include-wrappers, which would, if set to t, include the ex= port >>>>>>>> > wrappers in the tangled file. This might be useful for debugging >>>>>>>> > exporting of code block results, but not for general tangling. >>>>>>>>=20 >>>>>>>> Thanks for chiming in. This was my gut reaction to the default >>>>>>>> behavior. I guess we're still only a sample size of 2, but >>>>>>>> intuitively, I would think that tangling would be a separate beast= in >>>>>>>> most cases from exporting. Just to have it on the record, if I tan= gle, >>>>>>>> it's usually to take the code I've used in something like a Beamer >>>>>>>> presentation or document and combine it into a single .R file so >>>>>>>> someone can run it without needing Org-mode. >>>>>>> >>>>>>> [deleted] >>>>>>> >>>>>>> Sorry to be late to add my $0.02... >>>>>>> >>>>>>> I never want the try/catch wrappers. >>>>>>> >>>>>>> But noweb is indispensable. >>>>>>> >>>>>>> I use noweb a lot to organize and collect blocks. In some cases, I = export >>>>>>> them and in others I just tangle them. >>>>>>> >>>>>>> I hope that the revised code will allow me to turn off try/catch wr= apping >>>>>>> and still be able to use noweb when tangling or exporting. >>>>>>> >>>>>> >>>>>> In addition to noweb, there are cases where variable expansion is us= eful >>>>>> in tangled code. >>>>>> >>>>>> The simplest option is to move things like try/catch blocks out of t= he >>>>>> code block expansion function, and into the execution function. The= n if >>>>>> other language present similar constructs (which we want to add to >>>>>> execution by default but never want to tangle), we can think about >>>>>> abstracting this out into some new level of code block expansion. >>>>>> >>>>>> Thoughts? >>>>> >>>>> Makes perfect sense to me, and would definitely be the better place to >>>>> add them. >>>>> >>>>> If one wants enclosing code in the tangling, there is always >>>>> the :epilogue and :prologue header arguments, and the try/catch should >>>>> be considered as internal to the execution. >>>>> >>>> >>>> Great, how's this patch work? If it looks good I'll apply it. >>> >>> Git still puzzles me a lot... If you tell me how I can apply this patch >>> (from emacs?) I will try it out. >>> >> >> Here are some instructions from the command line. >> >> 1. write the patch out to a file on disk, say /tmp/0001-etc...patch >> >> 2. cd into the org-mode directory >> >> 3. make sure you're up to date with the latest >> >> git pull >> >> 4. apply the patch >> >> git am /tmp/0001-etc...patch >> >> and that should do it. > > OK - managed to apply the patch. > > Using=20 > > Org-mode version 8.2.5h (release_8.2.5h-846-geb806d @ /Users/rainerkrug/.= emacs.d/org-mode/lisp/) > > updated this morning, I get the following error: > Could you provide a minimal example file generating this error? Thanks, > > ,---- > | Debugger entered--Lisp error: (wrong-type-argument sequencep 67) > | mapconcat(identity "COLUMNS <- > | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-213= 63l1U/R-import-21363S9b\",\n > | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n > | as.is=3DTRUE)\nCOLS_TO_EVAL <- > | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-213= 63l1U/R-import-21363fHi\",\n > | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nALLSP= ECIES > | <- > | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-213= 63l1U/R-import-21363sRo\",\n > | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nSPECI= ES <- > | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-213= 63l1U/R-import-213635bu\",\n > | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nYEARS= <- > | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-213= 63l1U/R-import-21363Gm0\",\n > | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nPRESE= NT <- > | 2008\nMINEFFORT <- 3\nPROPTRAIN <- 0.6\nRNGSEED <- 13\nRNGKIND <- > | \"Mersenne-Twister\"\nRNGNORMALKIND <- \"Inversion\"\nREFGRID <- > | \"./refGrid_8km.rds\"\nIFN <- > | \"./__BOX__/IFN/DB_IFN/rds/tabplot.rds\"\nIFNCOUNT <- > | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.count.8km.rds\"\nIFNMEAN > | <- > | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.mean.8km.rds\"\nIFNPRES > | <- > | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.pres.8km.rds\"\nIFNSD > | <- > | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.sd.8km.rds\"\nIFNTABTREE > | <- \"./__BOX__/IFN/DB_IFN/rds/tabtree.rds\"\ndata.sources <- > | list.files(\"./data\", pattern=3D\"*.rda$\", > | full.names=3DTRUE)\nR.sources <- list.files(\"./R\", pattern=3D\"*.R$\", > | full.names=3DTRUE)\ncat(\"Loading Data\\n\")\nas.vector( sapply( > | data.sources, load) )\ncat(\"\\nSourcing R files\\n\")\nsapply( > | R.sources, source)" "\n") > | org-babel-execute:R("data.sources <- list.files(\"./data\", > | pattern=3D\"*.rda$\", full.names=3DTRUE)\nR.sources <- > | list.files(\"./R\", pattern=3D\"*.R$\", > | full.names=3DTRUE)\ncat(\"Loading Data\\n\")\nas.vector( sapply( > | data.sources, load) )\ncat(\"\\nSourcing R files\\n\")\nsapply( > | R.sources, source)" ((:comments . "link") (:shebang . "") (:cache > | . "no") (:padline . "yes") (:noweb . "no") (:tangle . "yes") > | (:exports . "both") (:results . "replace output") (:var COLUMNS > | ("annee" "Year of simulation") ("ipoints_Qdiv" "Point Number (also > | refer to number of the climatic input file)") ("iespece" "species > | number (4=3D=3D>Beech; 3:Oak)") ("scenario" "Type of forest management > | (no matter)") ("climat" "Type of climate (no matter)") ("RUsolinit" > | "Soil water Holding Capacity of the point (mm)") ("PByC" "gross > | photosynthesis (yearly, gC/m=C2=B2/year)") ("PNyC" "Net photosynthesis, > | (PByC - leaf Respiration) (gC/m=C2=B2/year)") ("NPPyC" "Net primary > | productivity, (gC/m=C2=B2/year)") ("ETRy" "Evapotranspiration of stand > | (mm/year)") ("age_peup" "Age at the end of the revolution") ("RVy" > | "total respiration of living tissue") ("DBBVy" "aboveground annualm > | growth (gC/m=C2=B2/year)") ("RMTVy" "maintenance respiration of stems > | (gC/m=C2=B2/year)") ("RMBRy" "maintenance respiration of branches > | (gC/m=C2=B2/year)") ("Rtoty" "total heterotrophic respiration > | (gC/m=C2=B2/year) (SOIL)") ("levelstress_2" "indices of water stress > | based on stomatal conductance") ("Ta" "Annual Temperature (=C2=B0C) (do > | not use problem)") ("PRI" "Rain (mm) (do not use problem)") ("LMAX" > | "Leaf Area Index") ("RVCy" "Growth respiration of living tissue") > | ("RVMy" "Maintenance respiration of all living tissue") ("DBSSy" > | "annual storage growth (gc/m=C2=B2/year)") ("DBRFy" "annual fine roots > | growth (gC/m=C2=B2/year)") ("LambX" "X co,ordinates in Lamberts Zone II > | (EPSG 27572)") ("LambY" "Y co,ordinates in Lamberts Zone II (EPSG > | 27572)") ("Altitude" "Elevation(m)") ("coupebb" "exported biomass > | through cutting (gC/m=C2=B2)") ("bbois" "wood biomass of the stand > | (gC/m=C2=B2)")) (:var COLS_TO_EVAL ("NPPyC" "FALSE") ("DBBVy" "TRUE") > | ("DBRFy" "FALSE") ("DBSSy" "FALSE") ("levelstress_2" "TRUE")) (:var > | ALLSPECIES ("Quercus robur" 1 "quercus_robur" "") ("Quercus peatrea" > | 2 "quercus_peatrea" "") ("Quercus pubescens" 3 "quercus_pubescens" > | "") ("Fagus sylvatica" 4 "fagus_sylvatica" "") ("Carpinus betulus" 5 > | "carpinus_betulus" "") ("Other broadleaf species" 6 > | "other_broadleaf_species" "") ("Picae abies" 7 "picae_abies" "") > | ("Abies alba" 8 "abies_alba" "") ("Pinus maritima" 9 > | "pinus_maritima" "") ("Pinus sylvestris" 10 "pinus_sylvestris" "") > | ("pseudotsuga meniezi" 11 "pseudotsuga_meniezi" "") ("Other > | coniferous species" 12 "other_coniferous_species" "")) (:var SPECIES > | ("Fagus sylvatica" "fagus" 4 "fagus_sylvatica" "red") ("Quercus > | robur" "quercus" 3 "quercus_robur" "green")) (:var YEARS (1990) > | (2000)) (:var PRESENT . 2008) (:var MINEFFORT . 3) (:var PROPTRAIN > | . 0.6) (:var RNGSEED . 13) (:var RNGKIND . "Mersenne-Twister") (:var > | RNGNORMALKIND . "Inversion") (:var REFGRID . "./refGrid_8km.rds") > | (:var IFN . "./__BOX__/IFN/DB_IFN/rds/tabplot.rds") (:var IFNCOUNT > | . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.count.8km.rds") (:var > | IFNMEAN . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.mean.8km.rds") > | (:var IFNPRES > | . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.pres.8km.rds") (:var > | IFNSD . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.sd.8km.rds") > | (:var IFNTABTREE . "./__BOX__/IFN/DB_IFN/rds/tabtree.rds") (:hlines > | . "no") (:colnames . "yes") (:mkdirp . "yes") (:no-expand . "TRUE") > | (:rownames . "yes") (:session . "*R_MOBILIS*") (:tangle-mode . 292) > | (:result-type . output) (:result-params "output" "replace") > | (:rowname-names (COLUMNS "annee" "ipoints_Qdiv" "iespece" "scenario" > | "climat" "RUsolinit" "PByC" "PNyC" "NPPyC" "ETRy" "age_peup" "RVy" > | "DBBVy" "RMTVy" "RMBRy" "Rtoty" "levelstress_2" "Ta" "PRI" "LMAX" > | "RVCy" "RVMy" "DBSSy" "DBRFy" "LambX" "LambY" "Altitude" "coupebb" > | "bbois") (COLS_TO_EVAL 1 2 3 4 5) (ALLSPECIES 1 2 3 4 5 6 7 8 9 10 > | 11 12) (SPECIES "fagus" "quercus") (YEARS 1 2)) (:colname-names > | (COLUMNS "" "name" "description") (COLS_TO_EVAL "" "name" "usable") > | (ALLSPECIES "" "fullName" "iespece" "IFNName" "color") (SPECIES "" > | "fullName" "shortName" "iespece" "IFNName" "color") (YEARS "" > | "year")))) > | org-babel-execute-src-block(nil) > | org-babel-execute-buffer(nil) > | org-babel-execute-subtree(nil) > | call-interactively(org-babel-execute-subtree nil nil) > `---- > > Cheers, > > Rainer > >> >> Best, >> p>>> >>> Thanks, >>> >>> Rainer >>> >>>> >>>> Thanks, --=20 Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D