After much thrashing about, I was able to get my program to work by using a 2014 (?) PUMA to 2021 census tract crosswalk. Hats off to the people at GEOCORR. One issue was that the PUMS file that we are using is from 2019 (the Supplemental Poverty Measure PUMS file -- most recent) and the census tracts (ACS B S and DP tables) are the 2021 5 year data.
Does anyone know where to find the relationship file for the 5 year ACS tables that gives a list of the census tracts in each PUMA ? When I use this file: (Massachusetts 2010 pumas) https://www2.census.gov/geo/docs/reference/puma/PUMSEQ10_25.txt I get census tracts for PUMA 03400 that don't download (using the API) for the 2021 5 year ACS "B" tables
STATEFP COUNTYFP PUMA TRACTCE nitem1921 25 017 03400 373900 01935 25 021 03400 400200 01937 25 021 03400 400400 01945 25 021 03400 401200 0
This is all pretty confusing. I've also downloaded from GEOCOR and I get the same result.