text:
---
layout: post
title:  "8_1_0_pre11"
date:   2017-10-07 22:24:56 +0200
categories: cmssw
relmajor: 8
relminor: 1
relsubminor: 0
relpre: _pre11
---

# CMSSW_8_1_0_pre11
#### Changes since CMSSW_8_1_0_pre10:

[compare to previous](https://github.com/cms-sw/cmssw/compare/CMSSW_8_1_0_pre10...CMSSW_8_1_0_pre11)

1. [15636](http://github.com/cms-sw/cmssw/pull/15636){:target="_blank"}  from **@jaylawhorn**: add more razor Hbb DQM modules `dqm`  created: 2016-08-29T06:58:22Z merged: 2016-08-29T16:28:59Z

1. [15632](http://github.com/cms-sw/cmssw/pull/15632){:target="_blank"}  from **@bsunanda**: Run2-TB07 Modify TB code for CERN beam `simulation`  created: 2016-08-28T19:06:24Z merged: 2016-08-29T09:01:37Z

1. [15630](http://github.com/cms-sw/cmssw/pull/15630){:target="_blank"}  from **@Dr15Jones**: Only use one thread for the test `core`  created: 2016-08-27T14:48:42Z merged: 2016-08-27T17:24:07Z

1. [15624](http://github.com/cms-sw/cmssw/pull/15624){:target="_blank"}  from **@Dr15Jones**: Improve edmStreamStallGrapher `core`  created: 2016-08-26T16:36:31Z merged: 2016-08-27T10:20:03Z

1. [15621](http://github.com/cms-sw/cmssw/pull/15621){:target="_blank"}  from **@vbotta**: use das_client wrapper instead of the python das_client module `alca`  created: 2016-08-26T14:56:26Z merged: 2016-08-27T17:24:20Z

1. [15611](http://github.com/cms-sw/cmssw/pull/15611){:target="_blank"}  from **@alberto-sanchez**: adding embedding of user.dec for evtgen in the cfg  `generators`  created: 2016-08-25T19:32:11Z merged: 2016-08-29T07:46:07Z

1. [15609](http://github.com/cms-sw/cmssw/pull/15609){:target="_blank"}  from **@mariadalfonso**: Update the ecalLaserCorr filter for the 2016  `analysis`  `reconstruction`  created: 2016-08-25T18:06:10Z merged: 2016-08-26T07:46:16Z

1. [15608](http://github.com/cms-sw/cmssw/pull/15608){:target="_blank"}  from **@ebrondol**: Fix ordering in Phase2OTEndcapRing `reconstruction`  created: 2016-08-25T16:23:44Z merged: 2016-08-29T16:38:14Z

1. [15605](http://github.com/cms-sw/cmssw/pull/15605){:target="_blank"}  from **@gpetruc**: Save pixel and strip layers in miniAOD `analysis`  `dqm`  `reconstruction`  created: 2016-08-25T11:55:07Z merged: 2016-08-29T16:29:27Z

1. [15596](http://github.com/cms-sw/cmssw/pull/15596){:target="_blank"}  from **@cms-tau-pog**: Small cleanups and modifications of light weight tau s/w validation tools `analysis`  `reconstruction`  created: 2016-08-24T17:26:08Z merged: 2016-08-29T07:46:19Z

1. [15593](http://github.com/cms-sw/cmssw/pull/15593){:target="_blank"}  from **@civanch**: Fixed static analyzer warnings7 `l1`  `simulation`  created: 2016-08-24T15:44:59Z merged: 2016-08-25T08:41:21Z

1. [15592](http://github.com/cms-sw/cmssw/pull/15592){:target="_blank"}  from **@kpedro88**: update 2023 geometries for hgcal and muon test configs `dqm`  `l1`  `reconstruction`  `simulation`  created: 2016-08-24T15:29:35Z merged: 2016-08-26T07:58:52Z

1. [15591](http://github.com/cms-sw/cmssw/pull/15591){:target="_blank"}  from **@Dr15Jones**: Handle case where message order is inverted from Tracer `core`  created: 2016-08-24T15:06:14Z merged: 2016-08-25T08:41:55Z

1. [15589](http://github.com/cms-sw/cmssw/pull/15589){:target="_blank"}  from **@franzoni**: GT for pA 2016 `alca`  created: 2016-08-24T13:53:03Z merged: 2016-08-25T08:43:26Z

1. [15588](http://github.com/cms-sw/cmssw/pull/15588){:target="_blank"}  from **@bartosik-hep**: Refined hltDiff output for automatisation [8_1_X] `hlt`  created: 2016-08-24T13:51:03Z merged: 2016-08-25T08:43:39Z

1. [15585](http://github.com/cms-sw/cmssw/pull/15585){:target="_blank"}  from **@gpetruc**: Keep lumi from scalers `analysis`  `reconstruction`  created: 2016-08-24T13:25:16Z merged: 2016-08-26T07:46:36Z

1. [15583](http://github.com/cms-sw/cmssw/pull/15583){:target="_blank"}  from **@boudoul**: updating from deprecated to supported geometry scenario in test directories `analysis`  `reconstruction`  `simulation`  created: 2016-08-24T12:06:44Z merged: 2016-08-26T07:46:50Z

1. [15577](http://github.com/cms-sw/cmssw/pull/15577){:target="_blank"}  from **@ianna**: Rebasing Post LS2 Beampipe `geometry`  created: 2016-08-24T08:06:58Z merged: 2016-08-24T16:15:44Z

1. [15575](http://github.com/cms-sw/cmssw/pull/15575){:target="_blank"}  from **@uhussain**: Fixed Logic Errors in CalibrationXML.cc, SiStripElectronAlgo.cc & InOutConversionSeedFinder.cc `reconstruction`  created: 2016-08-23T22:20:45Z merged: 2016-08-29T16:30:23Z

1. [15574](http://github.com/cms-sw/cmssw/pull/15574){:target="_blank"}  from **@Dr15Jones**: Update edmStreamStallGrapher.py `core`  created: 2016-08-23T20:29:18Z merged: 2016-08-24T08:23:15Z

1. [15572](http://github.com/cms-sw/cmssw/pull/15572){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-sim01 Checking neutrino tracking and saving info `simulation`  created: 2016-08-23T19:13:55Z merged: 2016-08-25T08:43:49Z

1. [15570](http://github.com/cms-sw/cmssw/pull/15570){:target="_blank"}  from **@hroskes**: Alignment plotting style and other fixes `alca`  `analysis`  created: 2016-08-23T18:57:29Z merged: 2016-08-25T14:56:29Z

1. [15569](http://github.com/cms-sw/cmssw/pull/15569){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-hcx90 Make use of HcalFrontEndMap `reconstruction`  created: 2016-08-23T18:14:12Z merged: 2016-08-25T08:46:01Z

1. [15568](http://github.com/cms-sw/cmssw/pull/15568){:target="_blank"}  from **@kirschen**: fix nan Calo-towers, when HO is deactivated, but has energy deposit (and ECAL/HCAL do not have any energy deposits) `reconstruction`  created: 2016-08-23T17:12:50Z merged: 2016-08-27T10:21:27Z

1. [15566](http://github.com/cms-sw/cmssw/pull/15566){:target="_blank"}  from **@suchandradutta**: introduction of  Over-Threshold bit in outer tracker Digis `reconstruction`  `simulation`  created: 2016-08-23T13:32:18Z merged: 2016-08-29T08:24:08Z

1. [15563](http://github.com/cms-sw/cmssw/pull/15563){:target="_blank"}  from **@makortel**: Set siPixelClusters.MissCalibrate=True for phase1 `reconstruction`  created: 2016-08-23T12:33:46Z merged: 2016-08-29T19:59:20Z

1. [15562](http://github.com/cms-sw/cmssw/pull/15562){:target="_blank"}  from **@violatingcp**: Puppi Photon update see PR 15429 `analysis`  `reconstruction`  created: 2016-08-23T10:50:15Z merged: 2016-08-25T14:38:26Z

1. [15561](http://github.com/cms-sw/cmssw/pull/15561){:target="_blank"}  from **@civanch**: Added more SIM debug capabilities `simulation`  created: 2016-08-23T10:15:13Z merged: 2016-08-24T08:23:40Z

1. [15560](http://github.com/cms-sw/cmssw/pull/15560){:target="_blank"}  from **@mmusich**: Adding key for Run2 pA simulation `alca`  created: 2016-08-23T07:44:47Z merged: 2016-08-23T11:22:46Z

1. [15559](http://github.com/cms-sw/cmssw/pull/15559){:target="_blank"}  from **@smuzaffar**: remove unused variable to avoid gcc493 build errors `dqm`  created: 2016-08-23T07:34:31Z merged: 2016-08-23T11:07:20Z

1. [15555](http://github.com/cms-sw/cmssw/pull/15555){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-TB06 Changes in TB configuration and removal of hardwired layer grouping `geometry`  `simulation`  created: 2016-08-22T19:24:38Z merged: 2016-08-23T11:22:39Z

1. [15553](http://github.com/cms-sw/cmssw/pull/15553){:target="_blank"}  from **@mbandrews**: Set Global Quality to show RED when FE is disabled `dqm`  created: 2016-08-22T18:15:46Z merged: 2016-08-23T11:12:21Z

1. [15549](http://github.com/cms-sw/cmssw/pull/15549){:target="_blank"}  from **@smuzaffar**: Internal das client python module to call das_client wrapper `analysis`  `core`  `reconstruction`  created: 2016-08-22T16:19:21Z merged: 2016-08-23T11:18:59Z

1. [15548](http://github.com/cms-sw/cmssw/pull/15548){:target="_blank"}  from **@kurtejung**: Fix boosting software for pPb MC `generators`  created: 2016-08-22T16:15:22Z merged: 2016-08-23T11:13:30Z

1. [15547](http://github.com/cms-sw/cmssw/pull/15547){:target="_blank"}  from **@rovere**: Reco material tools `dqm`  `geometry`  `simulation`  created: 2016-08-22T15:09:07Z merged: 2016-08-25T14:04:17Z

1. [15546](http://github.com/cms-sw/cmssw/pull/15546){:target="_blank"}  from **@surnairit**: Modifications to include HLT_DoubleMu0 path in the HeavyFlavor DQM package in CMSSW_8_1_X `dqm`  created: 2016-08-22T12:22:14Z merged: 2016-08-23T11:19:07Z

1. [15545](http://github.com/cms-sw/cmssw/pull/15545){:target="_blank"}  from **@jruizvar**: Increase pt threshold of L2Mu NoBPTX path (81X) `dqm`  created: 2016-08-22T11:11:26Z merged: 2016-08-23T15:55:56Z

1. [15541](http://github.com/cms-sw/cmssw/pull/15541){:target="_blank"}  from **@mmusich**: Miscellaneous fixes to new FSQ vtx smearing parameters `operations`  `simulation`  created: 2016-08-22T09:56:51Z merged: 2016-08-23T11:21:26Z

1. [15539](http://github.com/cms-sw/cmssw/pull/15539){:target="_blank"}  from **@Martin-Grunewald**: TSG test files from TSG eos location (81X) `hlt`  created: 2016-08-22T08:16:14Z merged: 2016-08-23T11:21:12Z

1. [15531](http://github.com/cms-sw/cmssw/pull/15531){:target="_blank"}  from **@mtosi**: V0 monitoring: fix normalization for empty plots `dqm`  created: 2016-08-22T07:22:52Z merged: 2016-08-23T15:57:31Z

1. [15529](http://github.com/cms-sw/cmssw/pull/15529){:target="_blank"}  from **@VinInn**: Fix throwing CapacityExausted `core`  `reconstruction`  created: 2016-08-20T15:37:22Z merged: 2016-08-23T11:20:36Z

1. [15527](http://github.com/cms-sw/cmssw/pull/15527){:target="_blank"}  from **@alja**: 81x Fireworks: new version of ECAL detail view `visualization`  created: 2016-08-19T22:53:11Z merged: 2016-08-24T08:47:24Z

1. [15526](http://github.com/cms-sw/cmssw/pull/15526){:target="_blank"}  from **@Dr15Jones**: Have InputProductResolver use DelayedReader `core`  created: 2016-08-19T20:10:55Z merged: 2016-08-22T06:51:33Z

1. [15523](http://github.com/cms-sw/cmssw/pull/15523){:target="_blank"}  from **@davidlange6**: Improve initialization of EgHLTOfflineSource `dqm`  created: 2016-08-19T09:24:54Z merged: 2016-08-20T11:54:36Z

1. [15522](http://github.com/cms-sw/cmssw/pull/15522){:target="_blank"}  from **@wmtan**: use unique_ptr, not auto_ptr, in PhysicsTools packages `analysis`  `reconstruction`  created: 2016-08-18T23:54:59Z merged: 2016-08-20T11:53:20Z

1. [15521](http://github.com/cms-sw/cmssw/pull/15521){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-hcx89 Add DB objects for HCAL TP  `alca`  `db`  created: 2016-08-18T21:26:00Z merged: 2016-08-24T08:25:47Z

1. [15520](http://github.com/cms-sw/cmssw/pull/15520){:target="_blank"}  from **@awhitbeck**: HCal uTCA packer `reconstruction`  created: 2016-08-18T17:24:19Z merged: 2016-08-29T16:31:54Z

1. [15518](http://github.com/cms-sw/cmssw/pull/15518){:target="_blank"}  from **@rovere**: Use somewhat better local hashing `dqm`  created: 2016-08-18T15:14:30Z merged: 2016-08-19T08:09:37Z

1. [15517](http://github.com/cms-sw/cmssw/pull/15517){:target="_blank"}  from **@fioriNTU**: Fix for Tracker Maps and Shifter Summary 81X `dqm`  created: 2016-08-18T15:06:40Z merged: 2016-08-24T08:24:14Z

1. [15514](http://github.com/cms-sw/cmssw/pull/15514){:target="_blank"}  from **@matz-e**: Change HCAL TP compression to account for multiple FG bits. `alca`  `l1`  created: 2016-08-18T14:28:20Z merged: 2016-08-22T06:56:25Z

1. [15511](http://github.com/cms-sw/cmssw/pull/15511){:target="_blank"}  from **@olivito**: HLT DQM for double tkmu and aux paths, 81X `dqm`  created: 2016-08-18T10:38:26Z merged: 2016-08-23T15:46:36Z

1. [15509](http://github.com/cms-sw/cmssw/pull/15509){:target="_blank"}  from **@makortel**: Update tracking MC validation scripts `dqm`  created: 2016-08-18T08:44:42Z merged: 2016-08-26T08:00:33Z

1. [15508](http://github.com/cms-sw/cmssw/pull/15508){:target="_blank"}  from **@mmusich**: yet another update of triggerbits `alca`  created: 2016-08-18T08:10:28Z merged: 2016-08-19T08:09:59Z

1. [15507](http://github.com/cms-sw/cmssw/pull/15507){:target="_blank"}  from **@smuzaffar**: fixes needed for next root update `alca`  `l1`  created: 2016-08-18T07:53:52Z merged: 2016-08-19T08:10:04Z

1. [15506](http://github.com/cms-sw/cmssw/pull/15506){:target="_blank"}  from **@Martin-Grunewald**: Update test files in our own cmsDriver.sh script (81X) `comparison`  `hlt`  created: 2016-08-18T04:40:37Z merged: 2016-08-18T06:37:24Z

1. [15505](http://github.com/cms-sw/cmssw/pull/15505){:target="_blank"}  from **@Dr15Jones**: Update cache InputProductResolver only if this is the first thread `core`  created: 2016-08-17T20:52:16Z merged: 2016-08-18T06:37:37Z

1. [15504](http://github.com/cms-sw/cmssw/pull/15504){:target="_blank"}  from **@hqucms**: SiStrip fast O2O improvement `db`  created: 2016-08-17T18:39:26Z merged: 2016-08-19T08:10:47Z

1. [15502](http://github.com/cms-sw/cmssw/pull/15502){:target="_blank"}  from **@bsunanda**: bsunanda:Phase2-hgx64 streamline the validation codes and the cff files `dqm`  created: 2016-08-17T18:07:29Z merged: 2016-08-19T08:34:24Z

1. [15500](http://github.com/cms-sw/cmssw/pull/15500){:target="_blank"}  from **@Dr15Jones**: Added SerialTaskQueueChain class `core`  created: 2016-08-17T15:52:52Z merged: 2016-08-18T06:37:56Z

1. [15498](http://github.com/cms-sw/cmssw/pull/15498){:target="_blank"}  from **@smuzaffar**: fix workflow 4.76 by dropping reRECO and using reRECO2 as process name for step3 `pdmv`  created: 2016-08-17T14:41:28Z merged: 2016-08-18T06:37:15Z

1. [15497](http://github.com/cms-sw/cmssw/pull/15497){:target="_blank"}  from **@Dr15Jones**: Avoid unnecessary creation of temporary InputTag `dqm`  created: 2016-08-17T14:07:18Z merged: 2016-08-18T07:06:28Z

1. [15495](http://github.com/cms-sw/cmssw/pull/15495){:target="_blank"}  from **@makortel**: Add run2_HE2017 to 2017 special tracking eras created: 2016-08-17T12:08:01Z merged: 2016-08-18T06:38:30Z

1. [15494](http://github.com/cms-sw/cmssw/pull/15494){:target="_blank"}  from **@cms-btv-pog**: bTag validation for PhaseII reco `dqm`  `reconstruction`  `simulation`  created: 2016-08-17T11:25:31Z merged: 2016-08-23T11:18:17Z

1. [15492](http://github.com/cms-sw/cmssw/pull/15492){:target="_blank"}  from **@threus**: fixing FEDFatal ME and reportSummaryMap in DQM `dqm`  created: 2016-08-17T10:51:02Z merged: 2016-08-19T08:14:02Z

1. [15491](http://github.com/cms-sw/cmssw/pull/15491){:target="_blank"}  from **@franzoni**: o2o ECAL(originally from depasse) `db`  created: 2016-08-17T09:53:33Z merged: 2016-08-18T07:09:07Z

1. [15489](http://github.com/cms-sw/cmssw/pull/15489){:target="_blank"}  from **@ggovi**: Improvement for conddb command line tools `db`  created: 2016-08-17T08:54:18Z merged: 2016-08-17T14:43:24Z

1. [15487](http://github.com/cms-sw/cmssw/pull/15487){:target="_blank"}  from **@ggovi**: Output mirroring for O2O jobs `db`  created: 2016-08-16T19:58:07Z merged: 2016-08-17T14:43:40Z

1. [15481](http://github.com/cms-sw/cmssw/pull/15481){:target="_blank"}  from **@smuzaffar**: use das_client wrapper instead of das_client python module `analysis`  `reconstruction`  created: 2016-08-16T09:46:17Z merged: 2016-08-16T18:50:51Z

1. [15480](http://github.com/cms-sw/cmssw/pull/15480){:target="_blank"}  from **@davidlange6**: split out era definitions into separate python files `operations`  created: 2016-08-16T08:58:43Z merged: 2016-08-16T16:34:43Z

1. [15479](http://github.com/cms-sw/cmssw/pull/15479){:target="_blank"}  from **@davidlange6**: update edmPickEvents since das_client can not be imported `analysis`  created: 2016-08-16T08:46:10Z merged: 2016-08-16T18:51:18Z

1. [15478](http://github.com/cms-sw/cmssw/pull/15478){:target="_blank"}  from **@smoortga**: Flip the soft lepton sIP in case the Negative CTagger is used `reconstruction`  created: 2016-08-16T07:57:09Z merged: 2016-08-18T06:39:43Z

1. [15477](http://github.com/cms-sw/cmssw/pull/15477){:target="_blank"}  from **@mmusich**: 81X: realistic BS for PbPb 2015 simulation `alca`  `operations`  `pdmv`  created: 2016-08-16T07:32:08Z merged: 2016-08-16T18:52:14Z

1. [15476](http://github.com/cms-sw/cmssw/pull/15476){:target="_blank"}  from **@wmtan**: Use unique_ptr, not auto_ptr, in PDMV package `pdmv`  created: 2016-08-15T22:47:20Z merged: 2016-08-16T18:52:30Z

1. [15475](http://github.com/cms-sw/cmssw/pull/15475){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-TB05 Add geometry version of August CERN HGCal TB setup `geometry`  `simulation`  created: 2016-08-15T19:06:06Z merged: 2016-08-16T16:25:51Z

1. [15474](http://github.com/cms-sw/cmssw/pull/15474){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-alca58 Make hardcoded condition of FrontEndMap flexible for different HCal versions `alca`  `db`  created: 2016-08-15T17:08:41Z merged: 2016-08-16T16:24:39Z

1. [15473](http://github.com/cms-sw/cmssw/pull/15473){:target="_blank"}  from **@smuzaffar**: added missing DataFormats/TrajectorySeed dependency in BuildFile `reconstruction`  created: 2016-08-15T16:39:03Z merged: 2016-08-17T05:58:49Z

1. [15472](http://github.com/cms-sw/cmssw/pull/15472){:target="_blank"}  from **@dntaylor**: Remove generator related PAT collections when running on data `analysis`  `reconstruction`  created: 2016-08-15T13:32:41Z merged: 2016-08-26T14:20:35Z

1. [15470](http://github.com/cms-sw/cmssw/pull/15470){:target="_blank"}  from **@mhl0116**: Using an adjustable wire time window for CSC RecHit building `reconstruction`  created: 2016-08-15T13:25:16Z merged: 2016-08-27T10:19:44Z

1. [15468](http://github.com/cms-sw/cmssw/pull/15468){:target="_blank"}  from **@boudoul**: Set to false by default the HIP sim `simulation`  created: 2016-08-15T09:38:07Z merged: 2016-08-16T07:30:45Z

1. [15467](http://github.com/cms-sw/cmssw/pull/15467){:target="_blank"}  from **@matz-e**: 2017 HCAL Trigger Primitives `alca`  `l1`  `simulation`  created: 2016-08-15T08:38:19Z merged: 2016-08-26T16:07:07Z

1. [15466](http://github.com/cms-sw/cmssw/pull/15466){:target="_blank"}  from **@jdamgov**: JetMET validation for Phase2 full reco `dqm`  `reconstruction`  `simulation`  created: 2016-08-15T04:47:13Z merged: 2016-08-18T06:51:12Z

1. [15463](http://github.com/cms-sw/cmssw/pull/15463){:target="_blank"}  from **@wmtan**: Use unique_ptr, not auto_ptr, in Analysis packages `analysis`  `simulation`  created: 2016-08-14T06:11:20Z merged: 2016-08-15T06:45:52Z

1. [15462](http://github.com/cms-sw/cmssw/pull/15462){:target="_blank"}  from **@vciulli**: Fix setting cross section in Rivet analaysis `generators`  created: 2016-08-13T23:18:33Z merged: 2016-08-22T06:54:40Z

1. [15460](http://github.com/cms-sw/cmssw/pull/15460){:target="_blank"}  from **@mmusich**: Updating SiStrip DQM TriggerBits for HIP monitoring (PR #15447) `alca`  created: 2016-08-13T10:20:41Z merged: 2016-08-14T15:42:51Z

1. [15454](http://github.com/cms-sw/cmssw/pull/15454){:target="_blank"}  from **@jruizvar**: Add 4jets paths 81X `dqm`  created: 2016-08-12T14:23:50Z merged: 2016-08-16T19:03:22Z

1. [15448](http://github.com/cms-sw/cmssw/pull/15448){:target="_blank"}  from **@makortel**: Use standard tracking validation for phase2 `dqm`  `reconstruction`  `simulation`  created: 2016-08-12T13:19:30Z merged: 2016-08-22T07:02:09Z

1. [15447](http://github.com/cms-sw/cmssw/pull/15447){:target="_blank"}  from **@mtosi**: hip monitoring `dqm`  created: 2016-08-12T10:39:46Z merged: 2016-08-22T07:00:52Z

1. [15445](http://github.com/cms-sw/cmssw/pull/15445){:target="_blank"}  from **@cms-btv-pog**: Switching BoostedDoubleSV tagger to v3 training `reconstruction`  created: 2016-08-12T09:58:37Z merged: 2016-08-18T06:51:18Z

1. [15444](http://github.com/cms-sw/cmssw/pull/15444){:target="_blank"}  from **@makortel**: Include also V0 post-processor to trackingOnly postValidation `dqm`  `reconstruction`  `simulation`  created: 2016-08-12T09:25:56Z merged: 2016-08-16T16:27:24Z

1. [15441](http://github.com/cms-sw/cmssw/pull/15441){:target="_blank"}  from **@dildick**: Add documentation to CSC and GEM digi dataformats `simulation`  created: 2016-08-12T03:50:20Z merged: 2016-08-15T06:47:31Z

1. [15440](http://github.com/cms-sw/cmssw/pull/15440){:target="_blank"}  from **@afiqaize**: rhoCorr binned in eta 81X, apply rhoCorr for H/E `hlt`  created: 2016-08-12T00:23:04Z merged: 2016-08-24T08:26:27Z

1. [15437](http://github.com/cms-sw/cmssw/pull/15437){:target="_blank"}  from **@rappoccio**: Jets for 81x MiniAOD `analysis`  `dqm`  `reconstruction`  created: 2016-08-11T19:44:26Z merged: 2016-08-29T07:47:28Z

1. [15431](http://github.com/cms-sw/cmssw/pull/15431){:target="_blank"}  from **@minano**: NofClusters vs Phi Plots added for barrel and endcap `dqm`  created: 2016-08-11T14:44:19Z merged: 2016-08-17T14:55:54Z

1. [15428](http://github.com/cms-sw/cmssw/pull/15428){:target="_blank"}  from **@fcavallo**: Review occupancy test81x `dqm`  created: 2016-08-11T13:55:04Z merged: 2016-08-16T18:54:51Z

1. [15419](http://github.com/cms-sw/cmssw/pull/15419){:target="_blank"}  from **@igv4321**: Realistic phase1 hf reco retry `alca`  `db`  `reconstruction`  created: 2016-08-10T18:14:51Z merged: 2016-08-25T08:43:45Z

1. [15417](http://github.com/cms-sw/cmssw/pull/15417){:target="_blank"}  from **@ebrondol**: Second part of the migration to era for phase2 tracking `geometry`  `operations`  `reconstruction`  `simulation`  created: 2016-08-10T17:08:42Z merged: 2016-08-20T11:56:35Z

1. [15416](http://github.com/cms-sw/cmssw/pull/15416){:target="_blank"}  from **@thuer**: Updated Sherpa RelVal files `generators`  created: 2016-08-10T14:46:31Z merged: 2016-08-15T16:09:42Z

1. [15403](http://github.com/cms-sw/cmssw/pull/15403){:target="_blank"}  from **@kpedro88**: Fix HcalHitsV for FastSim `dqm`  created: 2016-08-09T21:46:36Z merged: 2016-08-16T16:27:35Z

1. [15401](http://github.com/cms-sw/cmssw/pull/15401){:target="_blank"}  from **@dan131riley**: Before collecting a stack trace, pause all CMSSW threads and print out the current modules `core`  created: 2016-08-09T14:44:12Z merged: 2016-08-15T06:47:42Z

1. [15397](http://github.com/cms-sw/cmssw/pull/15397){:target="_blank"}  from **@manoni**: additional and modified plots for SiStrip and Tracking DQM `dqm`  created: 2016-08-09T13:18:29Z merged: 2016-08-24T08:27:08Z

1. [15395](http://github.com/cms-sw/cmssw/pull/15395){:target="_blank"}  from **@matz-e**: Recover 2016 Hcal Trigger Primitives `geometry`  created: 2016-08-09T09:15:40Z merged: 2016-08-15T06:47:54Z

1. [15382](http://github.com/cms-sw/cmssw/pull/15382){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-hcx88 Make use of FrontEndMap `alca`  `db`  `reconstruction`  created: 2016-08-06T18:08:27Z merged: 2016-08-17T14:41:05Z

1. [15380](http://github.com/cms-sw/cmssw/pull/15380){:target="_blank"}  from **@vkhristenko**: HCAL DQM Updates  `dqm`  created: 2016-08-06T15:54:07Z merged: 2016-08-23T13:09:43Z

1. [15375](http://github.com/cms-sw/cmssw/pull/15375){:target="_blank"}  from **@ishvetso**: Puppi isolation photons miniAOD `analysis`  `reconstruction`  created: 2016-08-05T13:15:39Z merged: 2016-08-15T06:49:06Z

1. [15374](http://github.com/cms-sw/cmssw/pull/15374){:target="_blank"}  from **@deguio**: Clean hcal dqm `dqm`  created: 2016-08-05T11:34:27Z merged: 2016-08-23T15:56:57Z

1. [15313](http://github.com/cms-sw/cmssw/pull/15313){:target="_blank"}  from **@Soureek89**: Adding 2 new ElecMU paths to be monitored in topHLTOfflineDQM package for 81X `dqm`  created: 2016-07-28T06:58:33Z merged: 2016-08-27T17:26:38Z

1. [15285](http://github.com/cms-sw/cmssw/pull/15285){:target="_blank"}  from **@DavidMorse**: Resonance decay filter quark equivalence `generators`  created: 2016-07-26T13:26:33Z merged: 2016-08-26T14:40:28Z

1. [15266](http://github.com/cms-sw/cmssw/pull/15266){:target="_blank"}  from **@bsunanda**: bsunanda:Run2-alca52 Add AlCaReo stream for muon events `alca`  `operations`  created: 2016-07-22T20:21:49Z merged: 2016-08-26T08:39:39Z

1. [15227](http://github.com/cms-sw/cmssw/pull/15227){:target="_blank"}  from **@suchandradutta**: Digi validation suite updated `simulation`  created: 2016-07-19T11:28:38Z merged: 2016-08-22T07:04:50Z

1. [15221](http://github.com/cms-sw/cmssw/pull/15221){:target="_blank"}  from **@lpernie**: Adding general track to ALCARECO for muonalign `alca`  `operations`  `pdmv`  created: 2016-07-18T18:18:11Z merged: 2016-08-23T13:08:20Z

1. [14853](http://github.com/cms-sw/cmssw/pull/14853){:target="_blank"}  from **@jeongeun**: CleanUp wildcards on event content module(Fix PR14406) `alca`  `analysis`  `reconstruction`  created: 2016-06-12T15:52:07Z merged: 2016-08-24T16:27:12Z

1. [14831](http://github.com/cms-sw/cmssw/pull/14831){:target="_blank"}  from **@PFCal-dev**: Updates in HGCAL L1 trigger `l1`  created: 2016-06-09T13:07:58Z merged: 2016-08-22T07:34:36Z

#### CMSDIST Changes between Tags REL/CMSSW_8_1_0_pre10/slc6_amd64_gcc530 and REL/CMSSW_8_1_0_pre11/slc6_amd64_gcc530:

[compare to previous](https://github.com/cms-sw/cmsdist/compare/REL/CMSSW_8_1_0_pre10/slc6_amd64_gcc530...REL/CMSSW_8_1_0_pre11/slc6_amd64_gcc530)

1. [2469](http://github.com/cms-sw/cmssw/pull/2469){:target="_blank"}  from **@iahmad-khan**: backports heppdt changes  created: 2014-02-14T14:03:17Z merged: 2014-02-20T15:52:10Z

1. [2468](http://github.com/cms-sw/cmssw/pull/2468){:target="_blank"}  from **@iahmad-khan**: backports jemalloc numpy matplotlib and scikit-learn from 81devel created: 2014-02-14T11:26:36Z merged: 2014-02-14T11:52:44Z

1. [2467](http://github.com/cms-sw/cmssw/pull/2467){:target="_blank"}  from **@cms-sw**: Update Davix to 0.6.4 created: 2014-02-14T10:51:25Z merged: 2014-02-22T09:44:37Z

1. [2462](http://github.com/cms-sw/cmssw/pull/2462){:target="_blank"}  from **@cms-sw**: Updated root to tip 63af0e7 created: 2014-02-14T01:15:03Z merged: 2014-02-18T19:28:26Z

1. [2458](http://github.com/cms-sw/cmssw/pull/2458){:target="_blank"}  from **@cms-sw**: Updated geant4: Fixed bug in G4 subtraction solid created: 2014-02-13T17:21:35Z merged: None

1. [2452](http://github.com/cms-sw/cmssw/pull/2452){:target="_blank"}  from **@smuzaffar**: update latest V05-05-09 config tag created: 2014-02-13T15:03:27Z merged: 2014-02-21T15:47:48Z

1. [2451](http://github.com/cms-sw/cmssw/pull/2451){:target="_blank"}  from **@vkuznet**: New DAS client created: 2014-02-13T14:58:24Z merged: None

1. [2450](http://github.com/cms-sw/cmssw/pull/2450){:target="_blank"}  from **@smuzaffar**: Updated root to tip of 5d055aa created: 2014-02-13T14:49:04Z merged: 2014-03-05T12:02:30Z

repository: rovere/ReleaseNotes

repo_name: rovere/ReleaseNotes


text:
# Trigger Conditions

> v1.0 and after

`Conditions` is a new feature to replace `Circuit` and `Switch`. With
`conditions`, triggers can be executed based on different dependency conditions.

An example with `conditions`:

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: example
spec:
  dependencies:
    - name: dep01
      eventSourceName: webhook-a
      eventName: example01
    - name: dep02
      eventSourceName: webhook-a
      eventName: example02
   - name: dep03
     eventSourceName: webhook-b
     eventName: example03
  triggers:
    - template:
        conditions: "dep02"
        name: trigger01
        http:
          url: http://abc.com/hello1
          method: GET
    - template:
        conditions: "dep02 && dep03"
        name: trigger02
        http:
          url: http://abc.com/hello2
          method: GET
    - template:
        conditions: "(dep01 || dep02) && dep03"
        name: trigger03
        http:
          url: http://abc.com/hello3
          method: GET
```

`Conditions` is a boolean expression contains dependency names, the trigger
won't be executed until the expression resolves to true. The operators in
`conditions` include:

- `&&`
- `||`

## Triggers Without Conditions

If `conditions` is missing, the default conditions to execute the trigger is
`&&` logic of all the defined dependencies.

repository: mickkael/argo-events

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: mickkael/argo-events


text:
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.2.1] - 2021-04-30
### Changed
- Account for models folder in newer Laravel applications

## [1.1.1] - 2020-06-30
### Changed
- User transactions are now retrieve in DESC order

## [1.1.0] - 2020-06-29
### Added
- Eagerload users table (coin/transaction models) (warning: system user (0) will cause problems, detect this in your output for now)

## [1.0.0] - 2020-06-26
### Added
- Initial release

### Changed
- n/a

### Removed
- n/a

[Unreleased]: https://github.com/mechawrench/laracoins/compare/v1.1.1...HEAD
[1.1.1]: https://github.com/mechawrench/laracoins/compare/v1.1.0...v1.1.1
[1.2.1]: https://github.com/mechawrench/laracoins/compare/v1.1.0...v1.2.1
[1.1.0]: https://github.com/mechawrench/laracoins/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/mechawrench/laracoins/releases/tag/v1.0.0

license: MIT

repository: mechawrench/laracoins

repo_name: mechawrench/laracoins


text:
# 0.6 (XX-XX-XXXX)

# 0.5 (15-05-2020)

- Replaces ugettext_lazy with gettext_lazy as introduced in Django 2.0.
- Officially supports Wagtail 2.7 and up, earlier versions are no longer supported.

# 0.4.1 (05-12-2019)

- Bugfix: Double old-path record will cause the import to throw a 500

# 0.4 (27-11-2019)

- Bulk redirect imports can be assigned to all sites or a specific site. (BramManuel)

# 0.3 (04-10-2019)

- Add `WAGTAIL_MARKETING_SEO_SCORE_ICONS` for overriding the current icon set.

# 0.2 (12-08-2019)

- Add the bulk redirect import on top of wagtail.contrib.redirects

# 0.1 (15-04-2019)

- No breaking changes, updated classifiers for a proper stable release

# 0.0.1 (01-04-2019)

- Initial release of wagtail-marketing-addons

repository: JanMalte/wagtail-marketing-addons

repo_name: JanMalte/wagtail-marketing-addons


text:
---
output: html_document
editor_options:
  chunk_output_type: console
---

# Interval estimation and inference {#intervals}

A single estimate is not enough, we need uncertainty. This chapter is about estimating intervals to go with our point estimates, and the related procedures of hypothesis testing (i.e., statistical inference).

## Standard error

The variance of an estimator, $\text{Var}(\hat{\theta}_n)$, describes the spread of the estimator's distribution. We define it in the same way that we defined the variance of a random variable:

$$
\begin{aligned}
\text{Var}(\hat{\theta}_n) =& ~ E[(\hat{\theta}_n(D) - E[\hat{\theta}_n(D)])^2] \\
=& ~ E[(\hat{\theta}_n(D)^2] - (E[\hat{\theta}_n(D)])^2 \\
\end{aligned}
$$
Compared to the expectation, or mean, of the estimator, the variance is in squared units. So we'd prefer to take the square root of the variance ($\sigma^2$), otherwise known as the standard deviation ($\sigma$). Rather than call the standard deviation of an estimator's distribution the standard deviation, we call it the standard error instead:

$$
\begin{aligned}
\text{SE}(\hat{\theta}_n) =& \sqrt{\text{Var}(\hat{\theta}_n)} \\
\end{aligned}
$$

This is confusing, but to paraphrase Edge:

> the term 'standard error' is used to describe the measure of spread of an *estimator's* sampling distribution, whereas the term 'standard deviation' is reserved to describe the spread in distribution of the *data*.

For example, when we describe a dataset using the mean, median, or mode - we are applying an estimator (a function) to the data to get a point estimate of the data. But in your introductory stats class, you probably did not refer to these functions as estimators - rather, they are often described as *summary statistics*. Then, to describe the uncertainty around the mean, we can calculate the standard error of the mean, which again, is just the standard deviation of the distribution of sample means. This distribution of sample means is known as a *sampling distribution*, but this term is not restricted to the mean - it applies to any estimator. Phew. Cogitate on this until it makes sense.

### Exercise set 7-1

1. See Edge solution or handwritten notes.

  d. If we instead use the median, instead of the mean, as the estimator of $\theta$, $text{SE}(\hat{\theta}_n)$ is 0.25 (higher than the standard erro of the mean for 25 samples, 0.2).

```r
# the value of mu does not affect the answer
# (adding a constant to a random variable does not affect its variance)
mu <- 0
stdev <- 1
n <- 25
n_sims <- 10000
set.seed(101)
s.mat <- mat.samps(n = n, nsim = n_sims)
ests.median <- apply(s.mat, 1, median)
sd(ests.median)
```

```
## [1] 0.2478706
```

```r
# Confirming the answer to part c:
ests.mean <- apply(s.mat, 1, mean)
sd(ests.mean)
```

```
## [1] 0.1984093
```

2. See Edge solution for a cogent explanation.

  a. Under a normal distribution, the probability that the estimate (still a random variable) lies between plus and minus 1 SE of the mean is ~68% - we can use old-school look up tables or the `pnorm` function in R.

```r
mu <- 0
w <- 1 # this is the standard error of the mean
# Pnorm gives the cumulative probability distribution, where q is the z-score
# One tailed probabilities
pnorm(q = 1, mean = mu, sd = w)
```

```
## [1] 0.8413447
```

```r
pnorm(q = -1, mean = mu, sd = w)
```

```
## [1] 0.1586553
```

```r
# To get the probability between the upper and lower w:
pnorm(q = 1, mean = mu, sd = w) - pnorm(q = -1, mean = mu, sd = w)
```

```
## [1] 0.6826895
```

  b. Under a normal distribution, the probability that the standard error lies between plus and minus 2 SE of the mean is ~95% - we can use old-school look up tables or the `pnorm` function in R.

```r
mu <- 0
w <- 0.5 # this is the standard error of the mean
# Pnorm gives the cumulative probability distribution, where q is the z-score
# One tailed probabilities
pnorm(q = 1, mean = mu, sd = w) # note that this value of q is twice w (the SE)
```

```
## [1] 0.9772499
```

```r
pnorm(q = -1, mean = mu, sd = w)
```

```
## [1] 0.02275013
```

```r
# To get the probability between the upper and lower w:
pnorm(q = 1, mean = mu, sd = w) - pnorm(q = -1, mean = mu, sd = w)
```

```
## [1] 0.9544997
```

## Confidence intervals

Confidence interval for an estimand $\theta$:

$$
\begin{aligned}
\text{P}(V_1 < \theta < V_2) \geq 1 - \alpha  \\
\end{aligned}
$$

where $V_1$ and $V_2$ are random variables that represent the upper and lower bounds of the interval, respectively. Therefore, the interval is also a random variable. But, the estimand ($\theta$) is not - it is a fixed quantity. So in words, we can say that $1 - \alpha$ is the probability that the interval ranging from $V_1$ to $V_2$ covers $\theta$; often called a *coverage probability*. Another way to write the equation is:

$$
\begin{aligned}
\text{P}(V_1 < \theta \cap V_2 > \theta) \geq 1 - \alpha  \\
\end{aligned}
$$

To refer to a confidence interval already calculated from data, we use ($v_1, v_2$). In the plot below, I recreated Edge's Figure 7-1. I took 20 samples from a standard normal distribution (mean = 0, sd = 1), and then calculated the sample mean, standard deviation, and standard error of the mean. One of the most commonly used 1 - $\alpha$ confidence intervals is:

$$
\begin{aligned}
(\hat{\theta} - \omega z_{\alpha / 2}, \hat{\theta} + \omega z_{\alpha / 2}) \\
\end{aligned}
$$

where $\omega$ is the standard error, and $z_{\alpha / 2}$ represents the z-score, or the number of standard deviations for a standard normal distribution (i.e., a standardized distribution). The product of these two values represents the amount we add to the point estimate (i.e., the mean) to get the upper bound, and subtract from the point estimate to get the lower bound.

To get the desired z-score, we have to work backwards from our desired $\alpha$ level. Here, we are using 0.1, so we take the inverse of the cumulative distribution function in R using `qnorm` - or you could do this using look-up tables. Either way, the z-score that returns a 90% probability is ~1.64 for a standard normal distribution. Here's the equation:

$$
\begin{aligned}
z_{\alpha / 2} =& \phi^{-1} (1 - \alpha / 2) \\
\phi^{-1} =& ~\text{inverse of the cumulative distribution function of a Normal(0,1) distribution}
\end{aligned}
$$

```r
mu <- 0
stdev <- 1
n <- 20
n_sims <- 50
set.seed(99)
s.mat <- mat.samps(n = n, nsim = n_sims)
ests_mean <- apply(s.mat, 1, mean)
ests_sd <- apply(s.mat, 1, sd)

# 90% confidence intervals
my_z <- qnorm(0.95, mu, stdev)

d <- tibble(sim = 1:n_sims,
            mean = ests_mean,
            sd = ests_sd,
            se = ests_sd / sqrt(n),
            upper = mean + se*my_z,
            lower = mean - se*my_z,
            sig = ifelse(upper < 0 | lower > 0, "different",
                         "not different"))

d %>%
  ggplot(aes(x = sim, y = mean, color = sig)) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_point() +
  geom_errorbar(aes(ymin = lower, ymax = upper), width = 0) +
  labs(y = expression(paste("Confidence interval for ", theta, sep = "")),
       x = "Simulation number",
       title = expression(paste("True ", theta, " is 0", sep = ""))) +
  theme(legend.position = "none")
```

In this set of simulations, the confidence intervals estimated from 46 of 50 (92%) of the simulations overlapped with the true value of $\theta$, 0.

I still struggle with how to articulate the meaning of an already calculated confidence interval that is consistent with the frequentist philosophy. Even after reading the explanation in Edge, I am left unsatisfied. Perhaps we can consider the calculated confidence interval as *a future confidence interval with the same upper and lower bounds that will cover the estimand*? So you're not alone if you don't quite get it.

### Exercise set 7-2

1. 50% confidence interval; upper = 4, lower = 2.

  a. What is $z_{\alpha / 2}$ for $\alpha = 0.5$?

```r
my_alpha <- 0.5
my_p <- 1 - my_alpha / 2
my_z <- qnorm(p = my_p, mean = 0, sd = 1)
my_z
```

```
## [1] 0.6744898
```

```r
# Plot a standard normal distribution
x <- seq(-3.5, 3.5, length.out = 10000)
fx <- dnorm(x)
plot(x, fx, type = "l")

# Shade in the appropriate area
x.zs <- seq(-my_z, my_z, length.out = 10000)
fx.zs <- dnorm(x.zs)
polygon(c(-my_z, x.zs, my_z), c(0, fx.zs, 0), col = "grey", border = FALSE)
```

The area of the shaded region is 0.5.

  b. In equation 7.3, the point estimate is halfway between the upper and lower bounds, and thus is 3.

  c. The standard error is 1 / 0.674 = 1.48.

  d. 95% CI is roughly (0, 6).

```r
my_se <- 1 / my_z
z_95 <- qnorm(p = 0.975, 0, 1)
int_95 <- my_se * z_95
3 + int_95; 3 - int_95
```

```
## [1] 5.905847
```

```
## [1] 0.09415305
```

  e. How many SE's from 0 is $\theta$?

```r
3 / my_se
```

```
## [1] 2.023469
```

  f. We want the lower bound to sit on zero - this means the value that we subtract from our estimand is 3. The value that we subtract is the product of the SE and z-score. We know the SE - it is 1.48. So we calculate 3 / 1.48 = 2.03. This value represents the z-score for $z_{\alpha / 2}$. But what is $\alpha$, the probability level we need to be 2.03 SDs below the mean? This is where `pnorm` comes in:

```r
(1 - pnorm(q = 2.03)) * 2
```

```
## [1] 0.04235654
```

  g. Assume $\theta$ = 0. What is the probability of obtaining an estimate such that it is larger than the estimate considered in this example? To get a value of 3, if the true estimate is 0, we'd need a z-score of 2.03 again. This equates to a probability of 0.043 to retrieve something greater than 3, or less than -3.

```r
mu <- 0
test_value <- 3
my_z <- test_value / my_se
(1 - pnorm(q = my_z)) * 2
```

```
## [1] 0.04302479
```

## Frequentist inference I: null hypotheses, test statistics, and *p* values

Null hypothesis

Test statistic

Hypothesis test

### Exercise set 7-3

1. Three reasons why the outcome of the hypothesis test is indecisive about the truth of the theory (that smaller people will be attracted to hotter climates because smaller bodies shed heat more efficiently):

  - Arizona may not be representative of hotter climates (i.e., need different geographic locations)

  - women may be different from men, and thus the result does not apply to people generally

  - the test does not let us say anything about the mechanism (heat shedding), but only the pattern (size variation)

  - see Edge for a general explanation that touches on some of the above

2. Average nail length is 100 mm. SD is 2 mm. I measure 4 nails.

  a. SE = sd / sqrt(n); SE = 2 / sqrt(4) = 1
  b. 1.96 * SE; 95% CI for $\mu$ is (98, 102)
  c. Anything less than 98 or more than 102, following from previous answer. Or, more precisely:

```r
# left tail
qnorm(0.025, mean = 100, sd = 1)
```

```
## [1] 98.04004
```

```r
# right tail
qnorm(0.975, mean = 100, sd = 1)
```

```
## [1] 101.96
```

  d. Simulating data assuming the null hypothesis is true.

```r
twotailed.p.normal <- function(x.bar, mu, stand.err){
  abs.diff <- abs(x.bar - mu)
  2 * pnorm(mu - abs.diff, mean = mu, sd = stand.err)
}

n <- 10000
x <- mat.samps(n = 4, nsim = n, rx = rnorm, mean = 100, sd = 2)
x_mean <- apply(x, MARGIN = 1, FUN = mean)
x_p <- sapply(x_mean, FUN = twotailed.p.normal, mu = 100, stand.err = 1)
hist(x_p)
```

```r
# Values less than 0.05
length(x_p[x_p < 0.05]) / n
```

```
## [1] 0.0516
```

```r
mean(x_p < 0.05)
```

```
## [1] 0.0516
```

```r
# Values less than 0.1
length(x_p[x_p < 0.1]) / n
```

```
## [1] 0.0988
```

  e. Simulating data assuming the null hypothesis is false (mean = 101):

```r
twotailed.p.normal <- function(x.bar, mu, stand.err){
  abs.diff <- abs(x.bar - mu)
  2 * pnorm(mu - abs.diff, mean = mu, sd = stand.err)
}

n <- 10000
x <- mat.samps(n = 4, nsim = n, rx = rnorm, mean = 101, sd = 2) # CHANGED
x_mean <- apply(x, MARGIN = 1, FUN = mean)
x_p <- sapply(x_mean, FUN = twotailed.p.normal, mu = 100, stand.err = 1)
hist(x_p)
```

```r
# Values less than 0.05
length(x_p[x_p < 0.05]) / n
```

```
## [1] 0.166
```

```r
mean(x_p < 0.05) # same result!
```

```
## [1] 0.166
```

```r
# Values less than 0.1
length(x_p[x_p < 0.1]) / n
```

```
## [1] 0.2596
```

  f. Simulating data assuming the null hypothesis is false (mean = 102).

```r
twotailed.p.normal <- function(x.bar, mu, stand.err){
  abs.diff <- abs(x.bar - mu)
  2 * pnorm(mu - abs.diff, mean = mu, sd = stand.err)
}

n <- 10000
x <- mat.samps(n = 4, nsim = n, rx = rnorm, mean = 102, sd = 2) # CHANGED
x_mean <- apply(x, MARGIN = 1, FUN = mean)
x_p <- sapply(x_mean, FUN = twotailed.p.normal, mu = 100, stand.err = 1)
hist(x_p)
```

```r
# Values less than 0.05
length(x_p[x_p < 0.05]) / n
```

```
## [1] 0.5088
```

```r
# Values less than 0.1
length(x_p[x_p < 0.1]) / n
```

```
## [1] 0.6352
```

  g. Simulating data assuming the null hypothesis is false (mean = 101, n = 16). This means the standard error is now 2 / sqrt(16) = 0.5

```r
twotailed.p.normal <- function(x.bar, mu, stand.err){
  abs.diff <- abs(x.bar - mu)
  2 * pnorm(mu - abs.diff, mean = mu, sd = stand.err)
}

n <- 10000
x <- mat.samps(n = 16, nsim = n, rx = rnorm, mean = 101, sd = 2) # CHANGED
x_mean <- apply(x, MARGIN = 1, FUN = mean)
x_p <- sapply(x_mean, FUN = twotailed.p.normal, mu = 100, stand.err = 0.5)
hist(x_p)
```

```r
# Values less than 0.05
length(x_p[x_p < 0.05]) / n
```

```
## [1] 0.5109
```

```r
# Values less than 0.1
length(x_p[x_p < 0.1]) / n
```

```
## [1] 0.6351
```

## Frequentist inference II: alternative hypotheses and the rejection framework

### Exercise set 7-4

All on paper.

## Connecting hypothesis tests and confidence intervals

## NHST and the abuse of tests

### Exercise set 7-5

1.

```r
ps <- many.outcome.sim(n = 20, nsim = 10000, n.dv = 7, correl = 0.7)
sigs <- ps < 0.05
colMeans(sigs)
```

```
## [1] 0.0516 0.0482 0.0500 0.0520 0.0490 0.0500 0.0502
```

```r
mean(rowMeans(sigs) > 0)
```

```
## [1] 0.1784
```

  - n = 20, n.dv = 7, correl = 0.7: 18% of simulations have > 1 significant result.

  a. There is a significant effect about 5% of the time for each dependent variable. 18% of the simulations have at least one significant result.

  b. Changing dependent variables (n.dv) and correlation:

```r
ps <- many.outcome.sim(n = 20, nsim = 10000, n.dv = 7, correl = 0.7)
sigs <- ps < 0.05
colMeans(sigs)
```

```
## [1] 0.0526 0.0526 0.0526 0.0520 0.0528 0.0492 0.0506
```

```r
mean(rowMeans(sigs) > 0)
```

```
## [1] 0.1865
```
  - n = 20, n.dv = 15, correl = 0.7: 26% of simulations have > 1 significant result.

  - n = 20, n.dv = 7, correl = 0.35: 27% of simulations have > 1 significant result.

  - n = 10, n.dv = 7, correl = 0.7: 18% of simulations have > 1 significant result.

So in summary:

  - Increasing the # of dependent variables increases the probability of Type 1 error

  - Decreasing the correlation between variables increases the probability of Type 1 error

  - Changing the size of each group does not change the probability of Type 1 error

2. Serial testing

```r
ps <- serial.testing.sim(ns = c(20, 30, 40, 50), nsim = 10000)
ps <- serial.testing.sim(ns = seq(20, 200, by = 10), nsim = 10000)
sigs <- ps < 0.05
colMeans(sigs)
```

```
##  [1] 0.0496 0.0504 0.0487 0.0504 0.0518 0.0527 0.0525 0.0524 0.0525 0.0518
## [11] 0.0529 0.0501 0.0531 0.0536 0.0531 0.0525 0.0526 0.0531 0.0531
```

```r
mean(rowMeans(sigs) > 0)
```

```
## [1] 0.229
```

If we sample at 4 times (starting with 20, ending with 50 people), there is a 12% change that at least one of those time points is significant. If we sample 19 times (20 to 200), then there is a 22% change one of the time points is significant.

## Frequentist inference III: power

### Exercise set 7-6

1. Plotting a power function for n = 5, 25, 75 with alpha = 0.05.

```r
d <- power.sim.1sz(n = 25, nsim = 5000, d = 0.2, lev = 0.05)

d <- seq(-2, 2, by = 0.02)
d_5 <- sapply(X = d, FUN = power.sim.1sz, n = 5, nsim = 1000, lev = 0.05)
d_25 <- sapply(X = d, FUN = power.sim.1sz, n = 25, nsim = 1000, lev = 0.05)
d_75 <- sapply(X = d, FUN = power.sim.1sz, n = 75, nsim = 1000, lev = 0.05)

plot(d, d_25, type = "l", xlab = "Effect size (d)", ylab = "Power")
lines(d, d_5, type = "l", col = "red")
lines(d, d_75, type = "l", col = "blue")
```

2.

  a. As n increases, estimated d declines to the true value, and power increases. At larger effect sizes, the power function converges to the truth much more quickly with sample size.

```r
d <- wincurse.sim.1sz(n = 1, nsim = 10000, d = 0.3, lev = 0.05)
```

```r
d
```

```
##      true d estimated d       power
##    0.300000    1.470967    0.057900
```

d = 0.1, n = 250: estimated d = 0.16, power = 0.35

d = 0.1, n = 50: estimated d = 0.32, power = 0.11

d = 0.1, n = 25: estimated d = 0.39, power = 0.08

d = 0.1, n = 5: estimated d = 0.55, power = 0.05

d = 0.5, n = 500: estimated d = 0.50, power = 1.00

d = 0.5, n = 50: estimated d = 0.52, power = 0.94

d = 0.5, n = 25: estimated d = 0.60, power = 0.70

d = 0.5, n = 5: estimated d = 1.12, power = 0.19

  b.

Plotting estimated effect size vs sample size.

Plotting the size of the winner's curse effect

```r
n_vector <- seq(1, 100, by = 1)
true_d <- 0.3
est_ds <- numeric(length(n_vector))
pows <- numeric(length(n_vector))

for(i in 1:length(n_vector)){
  wc <- wincurse.sim.1sz(n = n_vector[i], nsim = 10000, d = true_d)
  est_ds[i] <- wc[2]
  pows[i] <- wc[3]
}
```

```r
plot(n_vector, est_ds, type = "l", xlab = "Sample size (n)", ylab = "Estimated d")
lines(n_vector, rep(true_d, length(n_vector)), lty = 2)
```

```r
curse_size <- est_ds - true_d
plot(pows, curse_size, type = "l", xlab = "Power", ylab = "Winner's curse effect")
```

## Putting it together: what happens when the sample size increases?

## Chapter summary


text:
---
layout: post
title: "Advent of Code 2022 in pure TensorFlow - Day 7"
date: 2022-12-29 08:00:00
categories: tensorflow
summary: "Solving problem 7 of the AoC 2022 in pure TensorFlow allows us to understand certain limitations of the framework. This problem requires a lot of string manipulation, and TensorFlow (especially in graph mode) is not only not easy to use when working with this data type, but also it has a set of limitations I'll present in the article. Additionally, the strings to work with in problem 7 are (Unix) paths. TensorFlow has zero support for working with paths, and thus for simplifying a part of the solution, I resorted to the pathlib Python module, thus not designing a completely pure TensorFlow solution."
authors:
    - pgaleone
---

Solving problem 7 of the AoC 2022 in pure TensorFlow allows us to understand certain limitations of the framework. This problem requires a lot of string manipulation, and TensorFlow (especially in graph mode) is not only not easy to use when working with this data type, but also it has a set of limitations I'll present in the article. Additionally, the strings to work with in problem 7 are (Unix) paths. TensorFlow has zero support for working with paths, and thus for simplifying a part of the solution, I resorted to the `pathlib` Python module, thus not designing a completely pure TensorFlow solution.

## [Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7)

You can click on the title above to read the full text of the puzzle. The TLDR version is: we are given a terminal output, containing some commands and the results of the execution of these commands. The commands are two standard Unix commands:

- `cd`: for changing directory, with support for full paths and relative paths
- `ls`: for listing the content of the directory I'm currently in.

The `ls` output contains information about the size of the type of the various files inside of the current working directory.

So, given a puzzle input like
```
$ cd /
$ ls
dir a
14848514 b.txt
8504156 c.dat
dir d
$ cd a
$ ls
dir e
29116 f
2557 g
62596 h.lst
$ cd e
$ ls
584 i
$ cd ..
$ cd ..
$ cd d
$ ls
4060174 j
8033020 d.log
5626152 d.ext
7214296 k
```

the goal is to organize the information and determine the filesystem structure, as presented below.

```
- / (dir)
  - a (dir)
    - e (dir)
      - i (file, size=584)
    - f (file, size=29116)
    - g (file, size=2557)
    - h.lst (file, size=62596)
  - b.txt (file, size=14848514)
  - c.dat (file, size=8504156)
  - d (dir)
    - j (file, size=4060174)
    - d.log (file, size=8033020)
    - d.ext (file, size=5626152)
    - k (file, size=7214296)
```

After doing that, we should be able to answer the part 1 question: "Find all of the directories with a total size of at most 100000. What is the sum of the total sizes of those directories?".

### Design Phase

The problem breakdown follows:

1. Parse the input: differentiate commands execution and commands output
2. Identify the "current working directory" and sum all the file sizes. Being paths, we should keep track of the absolute path every time we work on a folder, since it may be possible to have folders with the same name in different absolute positions.
3. Create the mapping `absolute path:size` for every directory.
4. Filter the mapped directories, searching for all the directories that satisfy the condition and summing up the sizes for getting the part 1 solution

### Input parsing: tf.data.Dataset.scan

[tf.data.Dataset.scan](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#scan) is a transformation that scans a function across an input dataset. It's the stateful counterpart of [tf.data.Dataset.map](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#map). The state is carried on on every iteration through the transformation `scan_func(old_state_input_element) -> (new_state, output_element)` via the state tensors.

The idea is to use the `scan` method for:

1. Parse the lines. Understand when the line is a command execution or the command output.
2. Whenever we change directory (command `cd`), create a new state that contains the "full path" we'll be visiting on the next iteration, together with the initial size (0). Thus, the initial state for every new folder will be `path 0`. We use a string so we can split the state, and extract the path and the size.
3. Every time we encounter something that's not a command (thus, is a command output) we should understand if it's a file (because a directory has no size). If it's a file, parse its size and carry on the state for this path, summing the filesize (e.g. at step i the state is `/this/path 10`. Then we encounter a file with size 100 at step i+1, thus the state now becomes `/this/path 110`).
4. The `scan` method produces an output value on every iteration, thus we can produce the state as the output value, but only when we change state (so we computed the complete size of a folder). By default, thus, we can use the empty string as output (so later on we can filter the output after applying the `scan` function) and produce an output in the format `path size` only when the path has been analyzed
5. The input contains different `cd` invocations. We can change directory using absolute or relative paths. Thus, we need to take care of this. Doing it with TensorFlow inside the `scan` method hasn't been possible - at least, I haven't found an easy solution. So, for now, we'll build an absolute path every time without considering the changes to relative locations. E.g. `cd /a/b/c` followed by `cd ..` will become `/a/b/c/../` instead of `/a/b/`. Both paths represent the same absolute location, thus we'll take care of this later on.

To correctly implement the algorithm described above, we need to add a "fake line" to the dataset, with a `cd` command, since we trigger the output of the accumulated state when we change directory. Moreover, we need to define a meaningful initial state. We can assume that the input always starts from the root directory `/`.

```python
dataset = dataset.concatenate(tf.data.Dataset.from_tensors(tf.constant("$ cd /")))
initial_state = tf.constant("/ 0")
```

Here's the implementation of the `scan_func` function that we'll use the loop over the dataset and extract the pairs `/x/y/z/../../i size`.

Take your time to read the implementation, it's not trivial.

```python
def func(old_state, line):
    is_command = tf.strings.regex_full_match(line, r"^\$.*")
    new_state = old_state
    if is_command:
        if tf.strings.regex_full_match(line, r"\$ cd .*"):
            dest = tf.strings.split([line], " ")[0][-1]
            if tf.equal(dest, "/"):
                new_state = tf.constant("/ 0")
            else:
                old_path = tf.strings.split([old_state], " ")[0][0]
                new_state = tf.strings.join(
                    [tf.strings.join([old_path, dest], "/"), "0"], " "
                )
    else:
        split = tf.strings.split([line], " ")[0]
        if tf.not_equal(split[0], "dir"):
            size = tf.strings.to_number(split[0], tf.int64)
            state_size = tf.strings.split([old_state], " ")[0]
            if tf.equal(tf.shape(state_size, tf.int64)[0], 1):
                old_size = tf.constant(0, tf.int64)
            else:
                old_size = tf.strings.to_number(state_size[1], tf.int64)

            partial_size = size + old_size
            new_state = tf.strings.join(
                [
                    tf.strings.split(old_state, " ")[0],
                    tf.strings.as_string(partial_size),
                ],
                " ",
            )

    if tf.not_equal(new_state, old_state):
        output_value = new_state
    else:
        output_value = tf.constant("")

    return new_state, output_value

intermediate_dataset = dataset.scan(initial_state, func)
````

[Once again](/tensorflow/2022/12/21/advent-of-code-tensorflow-day-5/#parsing-strings-tfstrings--regex) `tf.strings` and regex are the tools used for parsing the input and understand (thanks to the regular expression) whether we are parsing a command or not.

Iterating over `intermediate_dataset` we can get a list of elements such as

```
['', '/ 14848514', '/ 23352670', ...., '//a/e/../../d 17719346', '//a/e/../../d 24933642', '/ 0']
```

This scan-based solution created a new state every time a directory has been changed. However, the output produced while looping over the scan-generated dataset is the partial value computed while traversing a directory. For example, the first value of the list is `14848514` that's precisely `b.txt (file, size=14848514)`. The second value for `/` is `23352670` that's `b.txt + c.dat`.

Thus, we'll need to filter these values later on, after having resolved the absolute paths (e.g. going from `//a/e/../../d` to `/d`).

### Resolving paths: not pure TensorFlow solution

Removing empty lines from the `intermediate_dataset` is trivial and can be done by using the `tf.data.Dataset.filter` method.

```python
filtered_dataset = intermediate_dataset.filter(
    lambda line: tf.strings.regex_full_match(line, "^.* \d*$")
).map(lambda line: tf.strings.regex_replace(line, r"\/\/", "/"))
```

In this way, we just filtered all the empty lines and kept only the lines ending with a number. Moreover, we also replaced all the double slashes with a single slash, using a simple regex.

However, the very tough problem to solve is designing a pure TensorFlow solution for resolving all the relative paths. I haven't been able to design such a solution, and thus I had to use the Python `pathlib` module, unfortunately. It looks like cheating since this is not a pure TensorFlow solution anymore :(

```python

def gen(ds):
    def resolve():
        for pair in ds:
            path, count = tf.strings.split([pair], " ")[0]
            path = Path(path.numpy().decode("utf-8")).resolve().as_posix()
            yield path, count.numpy().decode("utf-8")

    return resolve

filtered_dataset = tf.data.Dataset.from_generator(
    gen(filtered_dataset), tf.string, output_shapes=[2]
)
```

Apart from this small cheat, so far so good. The `filtered_dataset` now contains absolute paths (repeated) and the value computed while traversing that path. So, as anticipated, we need to filter these values computed while traversing the path. They are sequential, so we can once again use the `tf.data.Dataset.scan` method to change-state every time the path changes, and produce only valid values.

```python
def mapper(old_state, pair):
    old_path = old_state[0]
    new_path = pair[0]
    output_value = tf.constant(["", ""])
    if tf.logical_or(
        tf.equal(old_path, "fake_path"), tf.equal(new_path, "fake_path")
    ):
        output_value = tf.constant(["", ""])
    elif tf.not_equal(old_path, new_path):
        output_value = old_state

    return pair, output_value

initial_state = tf.constant(["fake_path", "-1"])
filtered_dataset = (
    filtered_dataset.concatenate(tf.data.Dataset.from_tensors(initial_state))
    .scan(initial_state, mapper)
    .filter(
        lambda pair: tf.logical_and(
            tf.greater(tf.strings.length(pair[0]), 0), tf.not_equal(pair[1], "0")
        )
    )
)
```

`filtered_dataset` will now produce only the pairs containing the full path of each folder and its size, **without** considering the subfolders.

- `('/', '23352670')`
- `('/a', '94269')`
- `('/a/e', '584')`
- `('/d', '24933642')`

We now need to map the full paths with their corresponding full-size. In this way, we can easily answer the puzzle question.

### MutableHashTable: mapping paths to their size

We can, [once again](/tensorflow/2022/12/21/advent-of-code-tensorflow-day-5/#counting-crates-mutable-hashmaps), use a Mutable hashmap to iteratively create the correspondence between the full path and its size, also considering the sub-folders.

The algorithm is straightforward. We loop over the `filtered_dataset` and verify if the path is present. If it's not present, we insert the key-value pair `path,size` in the mutable hashmap. Otherwise, we split the path using the directory separator (`/`) and iteratively add the value to all the parent paths already inserted in the hashmap.

```python
lut = tf.lookup.experimental.MutableHashTable(tf.string, tf.int64, default_value=0)
for pair in filtered_dataset:
    path, value = pair[0], tf.strings.to_number(pair[1], tf.int64)
    parts = tf.strings.split(path, "/")

    if tf.logical_and(tf.equal(parts[0], parts[1]), tf.equal(parts[0], "")):
        keys = ["/"]
        old = lut.lookup(keys)[0]
        new = old + value
        lut.insert(keys, [new])
    else:
        for idx, part in enumerate(parts):
            if tf.equal(part, ""):
                keys = ["/"]
            else:
                l = [tf.constant("")] + parts[1 : idx + 1]
                j = tf.strings.join(l, "/")
                keys = [j]
            old = lut.lookup(keys)[0]
            new = old + value
            lut.insert(keys, [new])
```

The `lut` variable now contains all the information we need to solve the problem. The keys of the hashmap are all the available paths, the values are the full-size (considering subfolders) of every path.

Thus, we can answer the puzzle question in a few lines:

```python
paths, sizes = lut.export()
print(paths, sizes)
tf.print(
    "part 1: ",
    tf.reduce_sum(tf.gather(sizes, tf.where(tf.math.less_equal(sizes, 100000)))),
)
```

Problem solved! Let's go straight to part 2.

## [Day 7: No Space Left On Device: part 2](https://adventofcode.com/2022/day/7)

Luckily enough, part 2 presents us with an easy-to-solve problem. The puzzle tells us that our total disk space available is 70000000, and we need to install an update whose size is 30000000, but we don't have enough space for installing it!
The puzzle tells us to find the smallest directory that, if deleted, would free up enough space on the filesystem and print the total size of that directory.

In our lookup table (the mutable hashtable) we have everything that's needed to solve the problem. We need to:

1. Find the required space as the difference between the update size and the free space already present in the filesystem
2. Find all the folders whose size is "big enough" to contain the update (that means, to be deleted to install the update).
3. Get the smallest folder among the ones that satisfy the above criteria.

The code is a 1:1 mapping with these points.

```python
update_size = 30000000
free_space = 70000000 - lut.lookup("/")
required_space = update_size - free_space

big_enough = tf.gather(
    sizes, tf.where(tf.math.greater_equal(sizes - required_space, 0))
)
tf.print("part 2: ", tf.gather(big_enough, tf.math.argmin(big_enough, axis=0)))
```

Here we go! Day's 7 problem solved!

## Conclusion

You can see the complete solution in folder `7` in the dedicated GitHub repository (in the `2022` folder): [https://github.com/galeone/tf-aoc](https://github.com/galeone/tf-aoc).

Solving problem 7 demonstrated all the weaknesses of the framework while working with strings and with paths in particular. There are no utilities for working with paths in graph mode, and thus this solution ended-up to use a `pathlib` utility for resolving the relative paths to their full paths counterparts. In general, `tf.data.Dataset.scan` has demonstrated to be a powerful method for keeping track of a state while iterating over a dataset, although it's not perfectly natural to solve problems like that in this way. Nonetheless, it's a fun exercise.

If you missed the article about the previous days’ solutions, here's a handy list

- [Advent of Code 2022 in pure TensorFlow - Days 1 & 2](/tensorflow/2022/12/04/advent-of-code-tensorflow-day-1-and-2/).
- [Advent of Code 2022 in pure TensorFlow - Days 3 & 4](/tensorflow/2022/12/11/advent-of-code-tensorflow-day-3-and-4/).
- [Advent of Code 2022 in pure TensorFlow - Day 5](/tensorflow/2022/12/21/advent-of-code-tensorflow-day-5/)
- [Advent of Code 2022 in pure TensorFlow - Day 6](/tensorflow/2022/12/27/advent-of-code-tensorflow-day-6/)

For any feedback or comment, please use the Disqus form below - thanks!

gha_language: SCSS

gha_license_id: MIT


text:
# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [2.5.3](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.5.2...v2.5.3) (2021-05-13)

### Bug Fixes

* **web:** upgrade use-elapsed-time to 2.1.8 ([9eb0166](https://github.com/vydimitrov/react-countdown-circle-timer/commit/9eb01663e824b94779e3fdab60c31134e6448ca9))

## [2.5.2](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.5.1...v2.5.2) (2021-04-28)

**Note:** Version bump only for package react-countdown-circle-timer

## [2.5.1](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.5.0...v2.5.1) (2021-03-25)

**Note:** Version bump only for package react-countdown-circle-timer

# [2.5.0](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.4.0...v2.5.0) (2021-02-15)

### Bug Fixes

* change from or to null operator and other fixes suggested in PR. ([2e79ed3](https://github.com/vydimitrov/react-countdown-circle-timer/commit/2e79ed3480bb723715bd287ad4e4b001a87254d4))
* the issue of stroke overflowing when trailStrokeWidth is different from strokeWidth ([b3d3aab](https://github.com/vydimitrov/react-countdown-circle-timer/commit/b3d3aab1d175bc95478efa7f0ebf3c3d50a66c37))

### Features

* Add inner and outer stroke width prop to timer. ([bdc35a7](https://github.com/vydimitrov/react-countdown-circle-timer/commit/bdc35a7c7ec449d452babbb8f1610e7588bca6e3))
* add snapshots for trailStrokeWidth for web also ([ce12b54](https://github.com/vydimitrov/react-countdown-circle-timer/commit/ce12b5419a6810fbfe83bce4aa04dbd1630f04f8))

# [2.4.0](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.12...v2.4.0) (2021-01-15)

### Bug Fixes

* **web:** put the browser list to the correct file ([2e4d510](https://github.com/vydimitrov/react-countdown-circle-timer/commit/2e4d510fefbd1dfce7ae2a0f58c6809268aa9f20))

### Features

* **web:** add browser list to package.json ([a88c8c8](https://github.com/vydimitrov/react-countdown-circle-timer/commit/a88c8c8a89a4a794265d333c672be02c5409bc8c))

## [2.3.12](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.11...v2.3.12) (2021-01-14)

### Bug Fixes

* **web:** support for IE11 ([201f996](https://github.com/vydimitrov/react-countdown-circle-timer/commit/201f996c478d961a02d90997bd4e3ef8a9ef8434))

## [2.3.11](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.10...v2.3.11) (2021-01-10)

**Note:** Version bump only for package react-countdown-circle-timer

## 2.3.7 (2020-07-24)

**Note:** Configure Github action to release using Lerna. No changes on component code.

## 2.3.6 (2020-07-22)

**Note:** Configure Github action to release using Lerna. No changes on component code.

## 2.3.5 (2020-07-22)

**Note:** Configure Github action to release using Lerna. No changes on component code.

## 2.3.4 (2020-07-22)

**Note:** Configure Github action to release using Lerna. No changes on component code.

## [2.3.3](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.2...v2.3.3) (2020-07-21)

**Note:** An attempt to configure Lerna to create Github releases. No changes on component code.

## [2.3.2](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.1...v2.3.2) (2020-07-21)

**Note:** An attempt to configure Lerna to create Github releases. No changes on component code.

## [2.3.1](https://github.com/vydimitrov/react-countdown-circle-timer/compare/v2.3.0...v2.3.1) (2020-07-21)

**Note:** An attempt to configure Lerna to create Github releases. No changes on component code.

# 2.3.0 (2020-07-21)

### Features

- **web, mobile:** allow passing string as a single color to colors prop ([f5ba08c](https://github.com/vydimitrov/react-countdown-circle-timer/commit/f5ba08c604f89fcf42bf4dbb62f883bd7b2d1647))

## [2.2.2](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-06-24)

**Note:** Version bump only for package react-countdown-circle-timer

## [2.2.1](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-06-21)

### Bug Fixes

- **web:** upgrade use-elapsed-time to 2.1.5, which fixes [#28](https://github.com/vydimitrov/react-countdown-circle-timer/issues/28) ([722e41e](https://github.com/vydimitrov/react-countdown-circle-timer/commit/722e41e95deb7637bcbe1fb3f3cfc8c48643cec4))

# [2.2.0](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-05-31)

### Bug Fixes

- **web:** fix edge-case issues with colors transition and improve test coverage ([979d363](https://github.com/vydimitrov/react-countdown-circle-timer/commit/979d363c2bd7105fa23abde9c3592bd094b172ad))

### Features

- **web, mobile:** add 'rotation' prop to control progress path rotation direction ([6477bfc](https://github.com/vydimitrov/react-countdown-circle-timer/commit/6477bfca722ace184f9d8282ba072c9e4805a645))

## [2.1.3](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-05-30)

### Bug Fixes

- **web:** upgrade useElapsedTime to 2.1.3, which fixes [#24](https://github.com/vydimitrov/react-countdown-circle-timer/issues/24) and fixes [#6](https://github.com/vydimitrov/react-countdown-circle-timer/issues/6) ([0668a6d](https://github.com/vydimitrov/react-countdown-circle-timer/commit/0668a6d3e7558c94103cf40dec6ffd9ad7ddf4b7))

## [2.1.2](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-05-05)

### Bug Fixes

- **web:** Cannot read property 'duration' of undefined - fix [#20](https://github.com/vydimitrov/react-countdown-circle-timer/issues/20) ([bcdb595](https://github.com/vydimitrov/react-countdown-circle-timer/commit/bcdb59595d5fcaa9c7d7f9b357d21dc0af856dde))
- **web:** hide progress path when the duration provided is 0 ([fa48e3d](https://github.com/vydimitrov/react-countdown-circle-timer/commit/fa48e3d5e90e18c25968f0e18d0ca10931e54807))
- **web:** progress path not hidden when countdown is done ([dfe3b2b](https://github.com/vydimitrov/react-countdown-circle-timer/commit/dfe3b2b325ab58c06afed946c9c625ae40737f22))

## [2.1.1](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-28)

### Docs

**Note:** Update Readme and Changelog - docs related release

# [2.1.0](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-28)

### Features

- **web:** pass totalElapsedTime as an argument to onComplete callback ([dfd33ce](https://github.com/vydimitrov/react-countdown-circle-timer/commit/dfd33ce05431c43540f384bbd554e14f620e28af))

`onComplete` callback will receive as an argument the `totalElapsedTime` in seconds. This is the total duration since the countdown has started running. It's mainly used when the countdown is repeated and the total duration has to be known. Example: countdown of days, hours, minutes and seconds.

## [2.0.5](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-27)

### Chore

**Note:** Upgrade use-elapsed-time package to v1.2.1, which passes totalElapsedTime in the onComplete callback

## [2.0.4](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-23)

### Chore

**Note:** Update Readme to reflect all change since the repo is a monorepo and update use cases in Readme

## [2.0.3](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-23)

### Hot fix

Local Lerna package was added as "dependencies" instead of "devDependencies" causing installation problems of the package

## [2.0.2](https://github.com/vydimitrov/react-countdown-circle-timer/compare/react-countdown-circle-timer<EMAIL_ADDRESS>(2020-04-23)

### Hot fix

An attempt to fix broken installation by remove "publishConfig" from package.json

## [2.0.1](2020-04-23)

**Implemented enhancements:**

- Make the repo monorepo handled by Lerna
- Breaking changes:
  - Remove the old `startAt` prop. The recommended prop to use is `initialRemainingTime` instead.
  - Remove `margin` styles from the wrapper and all svg styles
  - `durationSeconds` is renamed to just `duration`. The duration is still in **seconds**
  - `renderTime` prop is now deprecated. React `children` should be used instead. The `children` prop accepts a render function or a component where `remainingTime` and `elapsedTime` are passed as props.
  - `renderAriaTime` prop will receive as an argument an object with the `remainingTime` and `elapsedTime`

## [2.0.0](-)

This release never happened because Lerna bump the first release to 2.0.1. Read the description for version 2.0.1 to find out all changes in this major release.

## 1.2.1 (April 8th, 2020)

**Implemented enhancements:**

- Refactor internal logic to prep the code for monorepo
- Remove `path.getTotalLength()` dependency and add logic to calculate the path length
- Improve test coverage
- Add Prettier

**Bug fixes:**

- Fix an issue in Firefox where the progress bar does not get to 0

## 1.1.1 (February 23th, 2020)

**Implemented enhancements:**

- Add GitHub workflow to report test coverage and build status
- Add a new badge for weekly downloads

## 1.1.0 (February 1st, 2020)

**Implemented enhancements:**

- Replace `startAt` with `initialRemainingTime`. Using `startAt` in the context of countdown is confusing
- `startAt` can be used until the next major release for backward compatibility
- `initialRemainingTime` sets the initial remaining time when the countdown starts

## 1.0.6 (January 12th, 2020)

**Implemented enhancements:**

- Add TypeScript type definitions

## 1.0.5 (December 22nd, 2019)

**Implemented enhancements:**

- Add test coverage

## 1.0.4 (December 3rd, 2019)

**Implemented enhancements:**

- Add `a11y` support by exposing two additional props `ariaLabel` and `renderAriaTime`

## 1.0.3 (November 16th, 2019)

**Implemented enhancements:**

- Replace custom hook that handles animation loop with [useElapsedTime ](https://github.com/vydimitrov/use-elapsed-time)
- Add Changelog file

branch_name: refs/heads/main


text:
Coin2Go is a PoS-based cryptocurrency.
It stands for green mining, smart applications, augmented reality and innovative app technologies.

About Cointogo
===========================

So far, the crypto currency market has clearly been dominated by Bitcoin. With many new thinkings and the introduction of new technologies, a change has taken place . The use of Blockchain technology offers endless possibilities, especially in app development and virtual reality. The goal of Concept 2go is to combine these two components. Smartphones and App's are becoming increasingly popular, this gives us the opportunity to reach out the masses with the subject cryptocurrency. 2Go is a coin, focused on usability with easy access for everyone.

Our Services
===========================

Secret Wallet
The Coin2Go Hard-Wallet meets all safety standards and is easy to use. It gives you control over your money, and you can generate Coins for yourself with Proof of Stake (POS).

Mobile App
Our main focus is on instant payment and smart intelligence, on the other hand, ease to use and innovative technology in gaming and augmented reality. We provide all this through our upcoming app.

Exchange Service
We are planning the listing on two exchanges to bring 2Go into the market. Coin2Go offers all possibilities to trade on the crypto exchanges.

Technology
Our coin is based on Proof of Stake, one of the newest cryptocurrency technologies. The energy consumption when "staking" is much lower compared to the conventional "mining". Constant block time allows fast transactions.

Webwallet
Our webwallet provides access to the coins at any time, as well as real-time payments within the community without having to access an installed wallet. Easy integration into other business models is possible.

Planning
Innovative app solutions in connection with merchants, gaming, instant payment, augmented reality and virtual reality with access for every smartphone user. An API interface will allow apps to connect to each other within our blockchain.

Mobile App
===========================
The demand for apps and smart applications has grown rapidly in recent years. With our app, the combination of blockchain and augmented reality will provide groundbreaking opportunities. New instant pay solutions, especially in the gaming area, are being planned. The combination of these options, as well as ensuring privacy and security standards are the next steps in the 2go project. The interactions between man and machine will become smarter in the future. Thanks to machine learning and artificial intelligence, digital products will be capable of solving problems, learning from mistakes and constantly improving themselves.

Official Links
===========================
http://cointogo.io

https://explorer.cointogo.io/

Social Media
===========================
https://www.facebook.com/CoinToGo/

https://twitter.com/cointogo

https://www.instagram.com/cointogo_official

https://t.me/cointogo/

https://bitcointalk.org/index.php?topic=5055285.msg47161465#msg47161465

https://discordapp.com/invite/NJjb4rD

https://www.reddit.com/user/CoinToGo_official/


text:
---
layout: kanji
v4: 295
v6: 316
kanji: 額
keyword: forehead
elements: forehead, guest, house, each, walking legs, mouth, head, page, one, ceiling, drop, shellfish, clam, oyster, eye, animal legs, eight
strokes: 18
image: E9A18D
on-yomi: ガク
kun-yomi: ひたい
permalink: /rtk/額/
prev: 客
next: 夏
---

1) [Kurisu] 15-3-2008(231): Sign the guestbook page with your forehead. (Picture a guestbook full of forehead prints like thumbprints).

2) [daredawg3583] 7-12-2007(70): In New Zealand, people welcome guests by touching their foreheads together.

3) [akrodha] 3-10-2006(47): Thankful guests bow so much, you never see their entire heads, just their foreheads.

4) [misha] 11-7-2007(40): The guest lowers his forehead as he turns the page in a guestbook.

5) [Green_Airplane] 26-6-2008(33): As a guest in Japan, being too tall for their standards, I have to bow my head every time I enter someone's house, or else I'll smack my forehead.


text:
---
title: 'Managing Your User Group: Sponsor Relationships'
permalink: user-group-sponsor-relationship
categories:
  - Community, User Groups, and Conferences
date: 2015-01-26 11:58:38
summary: "Who holds the leverage in a sponsor/user group relationship?"
---

As a user group leader, you might have this feeling that you need to get sponsors for your user group.  **This is a common feeling!**

In fact, it's one of the most common questions I get as the Director of Membership for INETA.  I've seen groups that bend over backwards for sponsors, such as providing attendee lists (with contact information) or letting them do 15 minute sponsors presentations.  Over marketing is a huge turn off for attendees, and has potential to limit the growth of your group.

> For purposes of this discussion, a sponsor is a recruiter, headhunter, placement firm, etc.  Pretty much anyone that wants to hire your talent pool.

> Yes, venues are sponsors.  Vendors are sponsors.  But that's a different dynamic.  The majority of user group "sponsors" are going to be companies looking to place workers.

1. Access to a community of professionals interested and dedicated to a particular technology.
2. An environment specialized for engagement and learning.
3. Mailing lists (maybe)
4. Discussion boards (maybe)

Over all, you have a supply of **talent**.  Nevermind the skill ranges, but you have a group of folks who are 10% higher than anyone else on the market.  Why?  Because they're showing up.  That's worth gold and more to the right employer.

**What do they offer?**
1. Pizza money
2. Access to a hidden community of professionals they've placed in positions across the region.

I'm going to call #2 a farce and this is *totally based on my experience.*  I've had many sponsors (recruiters) say "We'll send the word out to our people and see if we can get out to the group."  But the people don't come.

So that leaves #1.  Food.  Drinks.  Substance of some kind.

**How does this empower you?**
THEY need you more than YOU need them.  Let's look at a worse case scenario: *you have no sponsors for food*.

***Oh well.***

When I started my first user group back in 2009, I was scared silly that people wouldn't show up because there was no free food.  Put it this way: if someone is coming only for free food, you don't want them at your group anyway.

I begged for sponsors.  "Please please please bring us free food."

Later, I started getting competition for sponsorships.  These companies know what you have, and they WANT to be involved.  Use this to your advantage.  For us, it meant paying for the right to sponsor a meeting.  Twelve meetings per year, that's something worth monetizing.

Take that last paragraph with a grain of salt.  It's a real *first world problem*.  Smaller groups might not want to pull that card, and that's okay.  But don't bend over backwards for sponsors.

>THEY need you more than YOU need them.

**How can I supplement not having a sponsor?**
Donations?  A lot of smaller groups throw out a hat for pizza money, and people put money into it!

Try a shorter meeting without food?

Create a post-meeting outing that everyone is invited to.  At our group, we started a tradition of going to a local diner for pie.  Get creative!

**Wrapping up**
Running a user group is hard.  Your thoughts on priorities might be out of line with what they really should be.  Some of the best user groups I've been to have started in IHOPs or as meetings at a Starbucks.

You don't need sponsors. You *want* sponsors.  And you hold the high card in this game.

gha_language: Vue


text:
[![Build Status](https://travis-ci.com/ProgrammingLanguageLeader/TutorsApp.svg?token=NAXdZ3urs2rzWv4x9zhq&branch=master)](https://travis-ci.com/ProgrammingLanguageLeader/TutorsApp)

# Tutors App
An application for convinient interaction between tutors and students

## Structure
- backend - Django project that provides server API
- vk-apps-frontend - module for the client view of the application in "VK Apps" platform
- docs - the project documentation
- docker - files used by Docker

## Running locally using Docker Compose

Running service:
```bash
docker-compose up -d
```

Stopping service:
```bash
docker-compose down
```

## Running locally without Docker

### vk-apps-frontend
Node.js and NPM are required.

Installation of dependencies:
```bash
npm install
```

Running locally in a development mode:
```bash
npm start
```

Building the module:
```bash
npm run build
```

This module has an apportunity of using Github Pages as a hosting.
Set a property __*homepage*__ in a file __*package.json*__ to an address on Github Pages.
Use the following command to deploy the module via this service:
```bash
npm run deploy
```

### backend
Python 3.6 or higher and pipenv are required.

Run the following command to install dependencies and configure virtual environment:
```bash
pipenv install
```

After the installation you need to run database migrations:
```bash
pipenv shell
python manage.py migrate
```

Finally, you are able to launch the backend server:
```bash
pipenv shell
python manage.py runserver
```

If you need to run tests, use these commands:
```bash
pipenv shell
python manage.py test
```

## Deployment
Use instructions from a __*docs/*__ folder.

## License
This project is licensed under the MIT License - see the LICENSE file for details

repository: ProgrammingLanguageLeader/TutorsApp

repo_name: ProgrammingLanguageLeader/TutorsApp


text:
# [turtle facts](http://alexa.amazon.com/#skills/amzn1.ask.skill.8917f9a3-e29e-4a8e-a78a-11b5325718b3)
![0 stars](../../images/ic_star_border_black_18dp_1x.png)![0 stars](../../images/ic_star_border_black_18dp_1x.png)![0 stars](../../images/ic_star_border_black_18dp_1x.png)![0 stars](../../images/ic_star_border_black_18dp_1x.png)![0 stars](../../images/ic_star_border_black_18dp_1x.png) 0

To use the turtle facts skill, try saying...

* *Alexa, ask turtle facts for a fact*

* *Alexa, ask turtle facts for a turtle fact*

* *Alexa, ask turtle facts to tell me a fact*

Alexa gives a random fact about turtles.

***

### Skill Details

* **Invocation Name:** turtle facts
* **Category:** null
* **ID:** amzn1.ask.skill.8917f9a3-e29e-4a8e-a78a-11b5325718b3
* **ASIN:** B01N09GO4X
* **Author:** Angela Wong
* **Release Date:** November 10, 2016 @ 00:13:09
* **In-App Purchasing:** No


text:
Pepyatka
========

Pepyatka is another attempt to open source FriendFeed social
network/aggregator. At this stage it's a semi-anonymous imageboard.

![Pepyatka screenshot](http://epicmonkey.org/pepyatka/2013-03-10_Pepyatka.png)

Configuration
-------------

- Install redis
- Install graphicsmagick (ensure jpeg and png flags are set)
- Install nodejs
- Install elasticsearch (and java as a dependency ;-)
- Make sure to update secret token: cp ./conf/envDefault.js to
  ./conf/envLocal.js.
- Install dependencies: npm install
- Update translation file: cp ./public/config/envDefault.js
  ./public/config/envLocal.js
- Install mocha globally in the system: npm install -g mocha
- Check there are no broken tests: jake test
- Run elasticsearch
- Run server: node ./server.js
- Run search daemon: node ./bin/search-daemon.js

Roadmap
-------

Tasks: https://trello.com/b/uvRkkOTH

Database
--------

```
username:<username>:uid

type is a enum of set of { "user", "group" } # not implemented yet

user:<userId> { username, hashedPassword, salt, createdAt, updatedAt, type }
user:<userId>:timelines { RiverOfNews, Posts, Likes, Comments, DirectMessages, [name*] }
user:<userId>:administrators { <userId>:<timestamp> } # not implemented yet
* DirectMessages not implemented yet
* Custom lists not implemented yet
user:<userId>:subscriptions ( <timelineId>:<timestamp> )

reserved usernames:
- anonymous
- everyone

timeline:<timelineId> { name, userId }
timeline:<timelineId>:posts ( <postId>:<timestamp> )
timeline:<timelineId>:subscribers ( <userId>:<timestamp> )

as special case there is timeline: timeline:everyone

post:<postId> { body, createdAt, updatedAt, userId, timelineId }
post:<postId>:comments [ <commentId> ]
post:<postId>:attachments [ <attachmentId> ]
post:<postId>:timelines ( <timelineId> )
post:<postId>:likes ( <userId> )

comment:<commentId> { body, createdAt, updatedAt, createdBy, postId }

attachment:<attachmentId> { mimeType, filename, extension, path, createdAt, updatedAt, postId, thumbnailId? }

stats:<userId> { posts, likes, discussions, subscribers, subscriptions }
stats:posts { <userId>:<posts> }
stats:likes { <userId>:<likes> }
stats:discussions { <userId>:<discussions> }
stats:subscribers { <userId>:<subscribers> }
stats:subscripions { <userId>:<subscriptions> }

tags:<userId> { <tag>:<score> } # implemented only for everyone, see below

as special case there are tags: tags:everyone
```

API
---

### Timeline
- GET /v1/timeline/:username - returns all posts from user <username>
- GET /v1/timeline/everyone - returns all posts from everyone
- GET /v1/timeline - returns river of news for auth user
- POST /v1/timeline/:timelineId/subscribe
- POST /v1/timeline/:timelineId/unsubscribe
- GET /v1/timeline/:timelineId/subcribers

### Posts
- GET /v1/posts/:postId
- DELETE /v1/posts/:postId
- PATCH /v1/posts/:postId
- GET /v1/posts/:postId/comments # not implemented yet
- GET /v1/posts/:postId/likes # not implemented yet
- POST /v1/posts
- POST /v1/posts/:postId/like
- POST /v1/posts/:postId/unlike

### Comments
- POST /v1/comments
- DELETE /v1/comments/:commentId
- PATCH /v1/comments/:commentId

### Users and groups
- GET /v1/users/:userId
- GET /v1/users/:username/subscriptions
- GET /v1/users/:username/subscribers - returns Posts timeline subscribers
- DELETE /v1/users/:username/subscribers/:userId - unsubscribe :userId from :username
- POST /v1/users/:username/subscribers/:userId/admin - add admin rights for :userId to administrate :username
- POST /v1/users/:username/subscribers/:userId/unadmin - remove admin rights from :userId to administrate :username
- POST /v1/users # it's a dup of sign up
- DELETE /v1/users/:userId
- GET /v1/users/:userId/feedinfo
- not implemented yet
- PATCH /v1/users/:userId

### Statistics
- GET /v1/top/:category - returns an array of users with the highest
  statistics in a category. Category could be one of { "posts",
  "likes", "discussions", "subscriptions", "subscribers" }

SEARCH API
---

- GET /v1/search/:searchQuery - returns all posts which equals searchQuery.

Search query is a string of keywords.
Keywords:
- intitle:query (search query in post's body)
- incomment:query (search query in comment's body)
- from:username (search by username)
- AND
- OR
- ' ' (whitespace)

If you enter a search phrase that does not match keywords above,
search engine will search it in post's and comment's bodies.

Example: this AND intitle:that OR incomment:comment from:user. Search
engine will return posts that contain 'that' in post's body and 'this'
in post's or comment's body, also it will return posts that contain
'comment' in comment's body and written by user 'user'.

repository: mazmaria/pepyatka

repo_name: mazmaria/pepyatka


text:
---
type: '0.1.1'
title: Changelog
sitemap: false
excluded_in_search: true
category: ''
---
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

# [0.1.1] - 2017-11-12
## Added
  - Changelog
  - Jekyll Documentation website
  - Contibuting page
  - Bages
  - Better README text
  - Examples to documentation
  - Travis support
  - Codeclimate support
  - Codecov support

## Changed
  - Logo format to SVG

---

# [0.1.0] - 2017-11-02
Initial public release


text:
# Custom extensions

A GraphQL extension object can receive events in various stages of a query's execution, and you can collect various kinds of data to be returned in the query results.

You can use `async_graphql::Extension` to define an extension object, and your application must call `Schema::extension` when your `Schema` is created.

You can refer to [Apollo Tracing](https://github.com/async-graphql/async-graphql/blob/master/src/extensions/tracing.rs) to implement your own extension types.

repository: robjtede/async-graphql

gha_license_id: NOASSERTION

repo_name: robjtede/async-graphql