tacknowledge.py - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch) (HTM) git clone git://src.adamsgaard.dk/pism (DIR) Log (DIR) Files (DIR) Refs (DIR) LICENSE --- tacknowledge.py (2944B) --- 1 #!/usr/bin/env python3 2 3 header = """ 4 .. 5 DO NOT EDIT: This file was automatically generated by running doc/acknowledge.py 6 7 Edit doc/acknowledge.py, doc/funding.csv, and doc/citing-pism.bib 8 """ 9 10 acknowledgement = """ 11 Acknowledging PISM funding sources 12 ---------------------------------- 13 14 If you use PISM in a publication then we ask for an acknowledgement of funding and a 15 citation. However, unless PISM developers are involved in the preparation of the 16 publication at the usual co-author level, we do not expect co-authorship on PISM-using 17 papers. 18 19 To acknowledge PISM funding please include the statement: 20 """ 21 22 citing = """ 23 Citing 24 ------ 25 26 To cite PISM please use at least one of Bueler and Brown (2009) or Winkelmann et al. 27 (2011), below, as appropriate to the application. 28 29 If your results came from source code modifications to PISM then we request that your 30 publication say so explicitly. 31 32 If your study relies heavily on certain PISM sub-models (such as hydrology, calving, 33 fracture mechanics, thermodynamics) please contact the corresponding author/developer for 34 information on additional citations. 35 36 .. code:: 37 """ 38 39 import csv 40 import time 41 import sys 42 import argparse 43 44 parser = argparse.ArgumentParser() 45 parser.description = '''Generate a funding acknowledgment string.''' 46 parser.add_argument("--manual", action="store_true") 47 options = parser.parse_args() 48 49 year = time.gmtime(time.time())[0] 50 funding = {} 51 52 with open("funding.csv", "r") as f: 53 reader = csv.reader(f, skipinitialspace=True, quoting=csv.QUOTE_ALL) 54 55 funding = {} 56 for row in reader: 57 start_year, end_year, agency, number, _ = row 58 59 try: 60 start_year = int(start_year) 61 end_year = int(end_year) 62 except: 63 continue 64 65 if start_year <= year and year <= end_year: 66 try: 67 funding[agency].append(number) 68 except: 69 funding[agency] = [number] 70 71 72 def join(strings): 73 assert len(strings) > 0 74 if len(strings) == 1: 75 return strings[0] 76 elif len(strings) == 2: 77 return "{} and {}".format(strings[0], strings[1]) 78 else: 79 return join(["{}, {}".format(strings[0], strings[1]), 80 join(strings[2:])]) 81 82 83 grants = [] 84 for k, v in funding.items(): 85 grant = "grant" 86 if len(v) > 1: 87 grant = "grants" 88 89 grants.append("{agency} {grant} {number}".format(agency=k, 90 grant=grant, 91 number=join(v))) 92 93 if options.manual: 94 print(header) 95 print(""" 96 Development of PISM is supported by {grants}.""".format(grants=join(grants))) 97 else: 98 print(header) 99 print(acknowledgement) 100 print(""" 101 Development of PISM is supported by {grants}. 102 """.format(grants=join(grants))) 103 print(citing) 104 with open("citing-pism.bib") as f: 105 for line in f: 106 sys.stdout.write(" {}".format(line))