we wanted to implement a slightly different FEMA AG LOSS indicator. Here, we take the 90th percentile only of tracts that have agvalue, and then we also floor the denominator of the rate calculation (loss/total value) at $408k
This updates the backend to produce tile data with island indicators / island fields.
Contains:
- new tile codes for island data
- threshold column that specifies number of thresholds to show
- ui experience column that specifies which ui experience to show
TODO: Drop the logger info message from main :)
When implementing definition M for the score, the variable names were not yet updated. For example:
This legacy field naming:
```
UNEMPLOYMENT_LOW_HS_EDUCATION_FIELD = (
f"Greater than or equal to the {PERCENTILE}th percentile for unemployment"
" and has low HS education"
)
```
Should actually be renamed something like this:
```
UNEMPLOYMENT_LOW_HS_LOW_HIGHER_ED_FIELD = (
f"Greater than or equal to the {PERCENTILE}th percentile for unemployment"
" and has low HS education and low higher ed attendance"
)
```
This PR is for the backend updates for this -- keeping the old fields, and adding new, Score M specific fields as listed below:
- [x] `field_names`: add new fields to capture low_higher_ed
- [x] `score_m`: replace old fields with new fields
- [x] `DOWNLOADABLE_SCORE_COLUMNS`: replace old fields with new fields
- [x] `TILES_SCORE_COLUMNS`: replace old fields with new fields
* draft wip
* initial commit
* clear output from notebook
* revert to 65ceb7900f
* draft wip
* initial commit
* clear output from notebook
* revert to 65ceb7900f
* make michigan prefix for readable
* standardize Michigan names and move all constants from class into field names module
* standardize Michigan names and move all constants from class into field names module
* include only pertinent columns for scoring comparison tool
* michigan EJSCREEN standardization
* final PR feedback
* added exposition and summary of Michigan EJSCREEN
* added exposition and summary of Michigan EJSCREEN
* fix typo
Co-authored-by: Saran Ahluwalia <ahlusar.ahluwalia@gmail.com>
* Update Side Panel Tile Data
* Update Side Panel Tile Data
* Correct indicator names to match csv
* Replace Score with Rate
* Comment out FEMA Loss Rate to troubleshoot
* Removes all "FEMA Loss Rate" array elements
* Revert FEMA to Score
* Remove expected loss rate
* Remove RMP and NPL from BASIC array
* Attempt to make shape mismatch align
- update README typo
* Add Score L indicators to TILE_SCORE_FLOAT_COLUMNS
* removing cbg references
* completes the ticket
* Update side panel fields
* Update index file writing to create parent dir
* Updates from linting
* fixing missing field_names for island territories 90th percentile fields
* Update downloadable fields and fix field name
* Update file fields and tests
* Update ordering of fields and leave TODO
* Update pickle after re-ordering of file
* fixing bugs in etl_score_geo
* Repeating index for diesel fix
* passing tests
* adding pytest.ini
Co-authored-by: Vim USDS <vimal.k.shah@omb.eop.gov>
Co-authored-by: Shelby Switzer <shelby.switzer@cms.hhs.gov>
Co-authored-by: lucasmbrown-usds <lucas.m.brown@omb.eop.gov>
* switching to low
* fixing score-etl-post
* updating comments
* fixing comparison
* create separate field for clarity
* comment fix
* removing healthy food
* fixing bug in score post
* running black and adding comment
* Update pickles and add a helpful notes to README
Co-authored-by: Shelby Switzer <shelby.switzer@cms.hhs.gov>
* Adds four fields:
* Summer days above 90F
* Percent low access to healthy food
* Percent impenetrable surface areas
* Low third grade reading proficiency
* Each of these four gets added into Definition L in various factors.
* Additionally, I add college attendance fields to the ETL for Census ACS.
* This PR also introduces the notion of "reverse percentiles", relevant to ticket #970.
* Update etl constants to use score field_names
Put strings around tract IDs in downloadable CSV
No need to modify the xls file creation because the string type is
preserved and interpreted correctly in Excel already.
One note is that this does cause the ID in the CSV to be have quotes
around it, which might be annoying. Maybe we don't want this behavior?
* Update based on PR feedback and lint needs
* Change field we're using in downloadable
This reverts the downloadable csv field list to use
MEDIAN_INCOME_AS_PERCENT_OF_STATE_FIELD instead of
MEDIAN_INCOME_AS_PERCENT_OF_AMI_FIELD in order to get the test to pass.
The point of this PR is a refactor (and a small change to the CSV
quotations), not to change the output. That will be a different PR
later.
Co-authored-by: Shelby Switzer <shelby.switzer@cms.hhs.gov>
* added fieldnames
* todo pollution, water, health & workforce
* workforce
* work in progress
* add utility function to replace duplicate summation logic
* move fpl series into add columns - run black .
* added revisions - still a wip
* added fieldnames
* todo pollution, water, health & workforce
* workforce
* work in progress
* add utility function to replace duplicate summation logic
* move fpl series into add columns - run black .
* added revisions - still a wip
* revise workforce and water
* revise housing and add incremental counter for workforce
* last PR nit
* revise workforce
* more PR feedback in score l
* more PR feedback in score l
* more PR feedback in score l
* addd FPL_SERIES and update references in score 1
* fix bugs
* reparameterize function
* final revisions in fieldnames
* make computations all consistent so we assing with FPL_200_SERIES
* fieldnames refactor after clarification and PR review
* finalize
* finalize with no typos
* fix length
* added median income var
* swap thresholds
* remove iteration
* remove stray '
* address flake 8
* added f string formatting and fixed typos
* added f string formatting and fixed typos
* move up
* remove dupes
* reformat
* fix bugs
* fix bugs
* initialize
Co-authored-by: Saran Ahluwalia <sarahluw@cisco.com>
This ended up being a pretty large task. Here's what this PR does:
1. Pulls in Vincent's data from island areas into the score ETL. This is from the 2010 decennial census, the last census of any kind in the island areas.
2. Grabs a few new fields from 2010 island areas decennial census.
3. Calculates area median income for island areas.
4. Stops using EJSCREEN as the source of our high school education data and directly pulls that from census (this was related to this project so I went ahead and fixed it).
5. Grabs a bunch of data from the 2010 ACS in the states/Puerto Rico/DC, so that we can create percentiles comparing apples-to-apples (ish) from 2010 island areas decennial census data to 2010 ACS data. This required creating a new class because all the ACS fields are different between 2010 and 2019, so it wasn't as simple as looping over a year parameter.
6. Creates a combined population field of island areas and mainland so we can use those stats in our comparison tool, and updates the comparison tool accordingly.
* WIP
* Create ScoreCalculator
This calculates all the factors for score L for now (with placeholder
formulae because this is a WIP). I think ideallly we'll want to
refactor all the score code to be extracted into this or similar
classes.
* Add factor logic for score L
Updated factor logic to match score L factors methodology.
Still need to get the Score L field itself working.
Cleanup needed: Pull field names into constants file, extract all score
calculation into score calculator
* Update thresholds and get score L calc working
* Update header name for consistency and update comparison tool
* Initial move of score to score calculator
* WIP big refactor
* Continued WIP on score refactor
* WIP score refactor
* Get to a working score-run
* Refactor to pass df to score init
This makes it easier to pass df around within a class with multiple
methods that require df.
* Updates from Black
* Updates from linting
* Use named imports instead of wildcard; log more
* Additional refactors
* move more field names to field_names constants file
* import constants without a relative path (would break docker)
* run linting
* raise error if add_columns is not implemented in a child class
* Refactor dict to namedtuple in score c
* Update L to use all percentile field
* change high school ed field in L back
Co-authored-by: Shelby Switzer <shelby.switzer@cms.hhs.gov>