ltc-code 0.2.21__tar.gz → 0.2.23__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ltc_code-0.2.21 → ltc_code-0.2.23}/PKG-INFO +1 -1
- {ltc_code-0.2.21 → ltc_code-0.2.23}/pyproject.toml +1 -1
- ltc_code-0.2.23/pyproject.toml.orig +19 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/build_nsc_outcomes.py +61 -0
- ltc_code-0.2.21/src/ltc_code/.DS_Store +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/.DS_Store +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/naics.csv +0 -25
- ltc_code-0.2.21/src/ltc_code/nsc/naics_raw.xlsx +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/.DS_Store +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/CREDENTIAL_LEVEL_LOOKUP_TABLE.xlsx +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/IPEDS_IC_2013.csv +0 -7647
- ltc_code-0.2.21/src/ltc_code/nsc/raw/IPEDS_IC_manual.xlsx +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/chetty/mrc_table11.dta +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/chetty/mrc_table2.dta +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/college_crosswalk.xls +0 -0
- ltc_code-0.2.21/src/ltc_code/nsc/raw/directory.dta +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/README.md +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/aspire.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/check_cmo_apps.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/christel_house.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/democracy_prep.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/green_dot.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/helpers.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/ilt.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/kipp_nj.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/main.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/mappings.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/rocketship.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260614_new_build_scripts_update/yes_prep.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/aspire.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/christel_house.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/democracy_prep.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/green_dot.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/ilt.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/kipp.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/kipp_nj.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/rocketship.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260630_census_disclosure/yes_prep.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/BALANCE.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/FS.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/ITT.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/TOT.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/apps_helpers.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/harmony.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260706_ceprscripts/main.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260712_uncommon_scripts/main.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260712_uncommon_scripts/mappings.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/20260712_uncommon_scripts/uncommon.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/__init__.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/aspire.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/check_cmo_apps.do +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/christel_house.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/green_dot.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/helpers.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/june13.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/june2.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/june30.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/june5.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/june7.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/kipp_nj.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/kipp_tx.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/main.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/make_summary_stats_table.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/mappings.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/may27.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/__init__.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/input/.gitkeep +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/naics.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/output/.gitkeep +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/raw/ipeds_data.dta +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/nsc/run_nsc_outcomes.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/polars_dates.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/rocketship.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/schema_mapping.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/school_name_xwalk/__init__.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/school_name_xwalk/all_schools_with_ccd.csv +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/school_name_xwalk/merge_school_ccd.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/signal_var_calcs.py +0 -0
- {ltc_code-0.2.21 → ltc_code-0.2.23}/src/ltc_code/yes_prep.py +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "ltc-code"
|
|
3
|
+
version = "0.2.23"
|
|
4
|
+
description = "Add your description here"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.9"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"fastexcel>=0.16,<0.20",
|
|
9
|
+
"polars>=1.36.1,<1.42",
|
|
10
|
+
"polars-readstat>=0.20.2",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
[project.scripts]
|
|
14
|
+
ltc-code = "ltc_code:main"
|
|
15
|
+
ltc-summary-stats = "ltc_code.make_summary_stats_table:main"
|
|
16
|
+
|
|
17
|
+
[build-system]
|
|
18
|
+
requires = ["uv_build>=0.11.16,<0.12.0"]
|
|
19
|
+
build-backend = "uv_build"
|
|
@@ -86,6 +86,8 @@ NSC_CUTOFF_DATE = date(2026, 12, 31)
|
|
|
86
86
|
RANDOM_SEED = 3852804
|
|
87
87
|
STEM_CIP_FAMILIES = {11, 14, 15, 26, 27, 40, 41}
|
|
88
88
|
COLLEGE_TYPES = ["any", "4yr", "2yr", "elite"]
|
|
89
|
+
AGE_ATTENDANCE_TYPES = ["any", "4yr", "2yr"]
|
|
90
|
+
AGE_ATTENDANCE_RANGE = range(18, 27)
|
|
89
91
|
|
|
90
92
|
|
|
91
93
|
###########################################################
|
|
@@ -1020,6 +1022,40 @@ for year in range(1, N_YEARS_OUT + 1):
|
|
|
1020
1022
|
)
|
|
1021
1023
|
)
|
|
1022
1024
|
|
|
1025
|
+
# Build calendar-year attendance indicators for each age. These use birth year
|
|
1026
|
+
# plus age, rather than the July-to-June school-year windows above.
|
|
1027
|
+
for age in AGE_ATTENDANCE_RANGE:
|
|
1028
|
+
bounded = enroll.with_columns(
|
|
1029
|
+
(pl.col("cohort_lottery") + age).alias("_age_window_year")
|
|
1030
|
+
).with_columns(
|
|
1031
|
+
pl.date(pl.col("_age_window_year"), 1, 1).alias("_age_window_start"),
|
|
1032
|
+
pl.date(pl.col("_age_window_year"), 12, 31).alias("_age_window_end"),
|
|
1033
|
+
).with_columns(
|
|
1034
|
+
(
|
|
1035
|
+
(pl.col("term_start_date") <= pl.col("_age_window_end"))
|
|
1036
|
+
& (pl.col("term_end_date") >= pl.col("_age_window_start"))
|
|
1037
|
+
& (pl.col("_term_att") == 1)
|
|
1038
|
+
)
|
|
1039
|
+
.cast(pl.Int8)
|
|
1040
|
+
.alias("_overlaps")
|
|
1041
|
+
)
|
|
1042
|
+
|
|
1043
|
+
enrollment_pieces.append(
|
|
1044
|
+
bounded.group_by("sid_cepr").agg(
|
|
1045
|
+
[
|
|
1046
|
+
(
|
|
1047
|
+
pl.col("_overlaps")
|
|
1048
|
+
* pl.col(f"college_{college_type}")
|
|
1049
|
+
.fill_null(0)
|
|
1050
|
+
.cast(pl.Int8)
|
|
1051
|
+
)
|
|
1052
|
+
.max()
|
|
1053
|
+
.alias(f"att_{college_type}_{age}")
|
|
1054
|
+
for college_type in AGE_ATTENDANCE_TYPES
|
|
1055
|
+
]
|
|
1056
|
+
)
|
|
1057
|
+
)
|
|
1058
|
+
|
|
1023
1059
|
enrollment_outcomes = enrollment_pieces[0]
|
|
1024
1060
|
for piece in enrollment_pieces[1:]:
|
|
1025
1061
|
enrollment_outcomes = enrollment_outcomes.join(
|
|
@@ -1585,6 +1621,27 @@ for year in range(1, N_YEARS_OUT + 1):
|
|
|
1585
1621
|
]
|
|
1586
1622
|
)
|
|
1587
1623
|
|
|
1624
|
+
for age in AGE_ATTENDANCE_RANGE:
|
|
1625
|
+
age_start = pl.date(pl.col("cohort_lottery") + age, 1, 1)
|
|
1626
|
+
age_columns = [
|
|
1627
|
+
column
|
|
1628
|
+
for column in nsc_outcomes.columns
|
|
1629
|
+
if column.startswith("att_") and column.endswith(f"_{age}")
|
|
1630
|
+
]
|
|
1631
|
+
|
|
1632
|
+
nsc_outcomes = nsc_outcomes.with_columns(
|
|
1633
|
+
[
|
|
1634
|
+
pl.when(age_start > NSC_CUTOFF_DATE)
|
|
1635
|
+
.then(None)
|
|
1636
|
+
.when(pl.col(column).is_null())
|
|
1637
|
+
.then(0)
|
|
1638
|
+
.otherwise(pl.col(column))
|
|
1639
|
+
.cast(pl.Int8)
|
|
1640
|
+
.alias(column)
|
|
1641
|
+
for column in age_columns
|
|
1642
|
+
]
|
|
1643
|
+
)
|
|
1644
|
+
|
|
1588
1645
|
|
|
1589
1646
|
# Sarah removes the raw school-specific rate for students who were not observed
|
|
1590
1647
|
# attending by Y2 before creating cmp_rate.
|
|
@@ -1684,6 +1741,10 @@ outcome_columns = [
|
|
|
1684
1741
|
"att_2yr_byY2", "att_2yr_byY3", "att_2yr_byY4",
|
|
1685
1742
|
"att_elite_byY2", "att_elite_byY3", "att_elite_byY4", "att_elite_byY5", "att_elite_byY6",
|
|
1686
1743
|
|
|
1744
|
+
*[f"att_any_{age}" for age in AGE_ATTENDANCE_RANGE],
|
|
1745
|
+
*[f"att_4yr_{age}" for age in AGE_ATTENDANCE_RANGE],
|
|
1746
|
+
*[f"att_2yr_{age}" for age in AGE_ATTENDANCE_RANGE],
|
|
1747
|
+
|
|
1687
1748
|
"cmp_any_byY4", "cmp_any_byY5", "cmp_any_byY6", "cmp_any_byY7", "cmp_any_byY8",
|
|
1688
1749
|
"cmp_AA_byY4", "cmp_AA_byY5", "cmp_AA_byY6", "cmp_AA_byY7", "cmp_AA_byY8",
|
|
1689
1750
|
"cmp_BA_byY4", "cmp_BA_byY5", "cmp_BA_byY6", "cmp_BA_byY7", "cmp_BA_byY8",
|
|
Binary file
|
|
Binary file
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
naics_code,sector
|
|
2
|
-
11,"Agriculture, Forestry, Fishing and Hunting"
|
|
3
|
-
21,"Mining, Quarrying, and Oil and Gas Extraction"
|
|
4
|
-
22,Utilities
|
|
5
|
-
23,Construction
|
|
6
|
-
31,Manufacturing
|
|
7
|
-
32,Manufacturing
|
|
8
|
-
33,Manufacturing
|
|
9
|
-
42,Wholesale Trade
|
|
10
|
-
44,Retail Trade
|
|
11
|
-
45,Retail Trade
|
|
12
|
-
48,Transportation and Warehousing
|
|
13
|
-
49,Transportation and Warehousing
|
|
14
|
-
51,Information
|
|
15
|
-
52,Finance and Insurance
|
|
16
|
-
53,Real Estate and Rental and Leasing
|
|
17
|
-
54,"Professional, Scientific, and Technical Services"
|
|
18
|
-
55,Management of Companies and Enterprises
|
|
19
|
-
56,Administrative and Support and Waste Management and Remediation Services
|
|
20
|
-
61,Educational Services
|
|
21
|
-
62,Health Care and Social Assistance
|
|
22
|
-
71,"Arts, Entertainment, and Recreation"
|
|
23
|
-
72,Accommodation and Food Services
|
|
24
|
-
81,Other Services (except Public Administration)
|
|
25
|
-
92,Public Administration
|
|
Binary file
|
|
Binary file
|
|
Binary file
|