Based on Kai's airpact_airnow, I am creating another airpact scripts needed for some works.  I noticed something to improve and here are the lists: 
In airpact_read_full_output.py
1. Please define "combined_dir" path (/data/airpact5/AIRRUN/ in your current script), instead of hardcoding the path in multiple lines.  
      - same comment for GRIDCROD path
      -  I suggest you to define any data directory in the beginning of the scripts, so people knows what to update for their application . 
2. I don't think "date()" is necessary here: start.date().strftime('%Y%m%d').  Moreover, I am getting an error to run your script because of "date()". It is interesting to check if you run this successfully. 
3. in airpact_functions.py, you introduced "layer" in readairpact but in get_airpact_DF, it uses hardcoded "0" there. The best way to define layer in the main program (as a parameter) and passing to the sub-functions. 
4. I couldn't understand why you need to loop over the dictionary keys here: 
            for i in list(gas0.keys()):               
            gas[i]=gas0[i][:,:,:]
 what is the difference between gas and gas0?