From d907e620bf647aa33d28953bda8408f71a79e3df Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Tue, 11 Jul 2023 12:25:33 -0400 Subject: [PATCH 1/6] Update supplier-options.csv 3,none,laborious,total,minimal,defer->scheduled 11,none,super effective,total,minimal,scheduled->out-of-cycle --- data/csvs/supplier-options.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/csvs/supplier-options.csv b/data/csvs/supplier-options.csv index 7e8ecc02..72148dd8 100644 --- a/data/csvs/supplier-options.csv +++ b/data/csvs/supplier-options.csv @@ -1,7 +1,7 @@ row,Exploitation,Utility,Technical Impact,Public-Safety Impact,Priority 1,none,laborious,partial,minimal,defer 2,none,laborious,partial,significant,scheduled -3,none,laborious,total,minimal,defer +3,none,laborious,total,minimal,scheduled 4,none,laborious,total,significant,out-of-cycle 5,none,efficient,partial,minimal,scheduled 6,none,efficient,partial,significant,out-of-cycle @@ -9,7 +9,7 @@ row,Exploitation,Utility,Technical Impact,Public-Safety Impact,Priority 8,none,efficient,total,significant,out-of-cycle 9,none,super effective,partial,minimal,scheduled 10,none,super effective,partial,significant,out-of-cycle -11,none,super effective,total,minimal,scheduled +11,none,super effective,total,minimal,out-of-cycle 12,none,super effective,total,significant,out-of-cycle 13,PoC,laborious,partial,minimal,scheduled 14,PoC,laborious,partial,significant,out-of-cycle From b41294b65caefd74a3ad2bd450052fa21fcba4bf Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Tue, 11 Jul 2023 12:27:35 -0400 Subject: [PATCH 2/6] Update Supplier.json --- ssvc-calc/Supplier.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ssvc-calc/Supplier.json b/ssvc-calc/Supplier.json index 52344e81..963e20ef 100644 --- a/ssvc-calc/Supplier.json +++ b/ssvc-calc/Supplier.json @@ -260,7 +260,7 @@ "Utility": "laborious", "Technical Impact": "total", "Public-Safety Impact": "minimal", - "Priority": "defer" + "Priority": "scheduled" }, { "Exploitation": "none", @@ -316,7 +316,7 @@ "Utility": "super effective", "Technical Impact": "total", "Public-Safety Impact": "minimal", - "Priority": "scheduled" + "Priority": "out-of-cycle" }, { "Exploitation": "none", From 4c4268ef9b2c099d324153f6df8634ac0bc82d32 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Tue, 11 Jul 2023 12:31:39 -0400 Subject: [PATCH 3/6] Update Deployer.json to agree with #262 and #249 Issue #249 changed the CSV files but we forgot to update Deployer.json --- ssvc-calc/Deployer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ssvc-calc/Deployer.json b/ssvc-calc/Deployer.json index 72c08a88..bf749350 100644 --- a/ssvc-calc/Deployer.json +++ b/ssvc-calc/Deployer.json @@ -623,7 +623,7 @@ "Exposure": "open", "Automatable": "no", "Human Impact": "low", - "Priority": "defer" + "Priority": "scheduled" }, { "Exploitation": "PoC", @@ -714,7 +714,7 @@ "Exposure": "small", "Automatable": "yes", "Human Impact": "medium", - "Priority": "scheduled" + "Priority": "out-of-cycle" }, { "Exploitation": "active", @@ -763,7 +763,7 @@ "Exposure": "controlled", "Automatable": "yes", "Human Impact": "low", - "Priority": "scheduled" + "Priority": "out-of-cycle" }, { "Exploitation": "active", @@ -798,7 +798,7 @@ "Exposure": "open", "Automatable": "no", "Human Impact": "medium", - "Priority": "scheduled" + "Priority": "out-of-cycle" }, { "Exploitation": "active", From 32c91026edc7ccedefe096a4ad3be80684a4d611 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 12 Jul 2023 10:43:09 -0400 Subject: [PATCH 4/6] apply black formatter --- src/SSVC_csv-to-latex.py | 601 +++++++++++++++++++++++---------------- 1 file changed, 350 insertions(+), 251 deletions(-) diff --git a/src/SSVC_csv-to-latex.py b/src/SSVC_csv-to-latex.py index 501d54d1..0e2953fe 100755 --- a/src/SSVC_csv-to-latex.py +++ b/src/SSVC_csv-to-latex.py @@ -3,65 +3,113 @@ ## put import statements here import optparse, sys, string, glob, re from optparse import OptionParser + ############################################################################## + def initialize_options(): - parser = optparse.OptionParser(description = """Take a CSV file as input + parser = optparse.OptionParser( + description="""Take a CSV file as input that describes a decision tree exhaustively, and produce a LaTeX - file that will make a pretty version of the tree.""") - parser.add_option("-i", "--input", dest='filelist', type='string', \ - default='stdin', help="input file(s). may be a glob, but will run all \ - output together. Defaults to standard input.") - parser.add_option("-o", "--output", dest='out_file', type='string',\ - default = 'stdout', help="Defaults to stdout.") - parser.add_option("-d", "--delim", default=" ", help="identifies delimiter\ - for the input data (--input). May be any number of characters. Tab default") - ########## - ## put other option definitions here - parser.add_option("-l", "--label", default="5", type ='int', - help="identifies column in input file that contains the label for the leaf\ + file that will make a pretty version of the tree.""" + ) + parser.add_option( + "-i", + "--input", + dest="filelist", + type="string", + default="stdin", + help="input file(s). may be a glob, but will run all \ + output together. Defaults to standard input.", + ) + parser.add_option( + "-o", + "--output", + dest="out_file", + type="string", + default="stdout", + help="Defaults to stdout.", + ) + parser.add_option( + "-d", + "--delim", + default=" ", + help="identifies delimiter\ + for the input data (--input). May be any number of characters. Tab default", + ) + ########## + ## put other option definitions here + parser.add_option( + "-l", + "--label", + default="5", + type="int", + help="identifies column in input file that contains the label for the leaf\ node. For SSVC, this label is the decision. These are python list ranges,\ - so first column is 0.") - parser.add_option("-c", "--columns", default="1,2,3,4", type ='string', - help="identifies columns in input file to use, and the order to use them.\ + so first column is 0.", + ) + parser.add_option( + "-c", + "--columns", + default="1,2,3,4", + type="string", + help="identifies columns in input file to use, and the order to use them.\ Should be in the form of a comma-separated list, such as 2,4,3.\ - Python list ranges start at 0.") - parser.add_option("--header-row", action='store_true', - dest='headerRow', - help="Boolean indicating whether the input file has a header row with names\ + Python list ranges start at 0.", + ) + parser.add_option( + "--header-row", + action="store_true", + dest="headerRow", + help="Boolean indicating whether the input file has a header row with names\ for the columns. Default is to expect a header row. \ - To use --names, --no-header-row must be set") - parser.add_option("-H", "--no-header-row", action='store_false', - dest='headerRow', - help="Boolean indicating whether the input file has a header row with names\ - for the columns. To use --names, --no-header-row must be set") - parser.add_option("-n", "--names", type='string', - default="Exploitation,Virulence,Technical Impact,Situated Impact", - help="Names to use to identify the columns in -c. Comma-separated list.\ - Please don't use a header row in the input file.") - parser.add_option("-p", "--priorities", type='string', - default="Defer, Scheduled, Out-of-Cycle,Immediate", - help="Ranked list, lowest to highest, of the labels for the decisions.\ + To use --names, --no-header-row must be set", + ) + parser.add_option( + "-H", + "--no-header-row", + action="store_false", + dest="headerRow", + help="Boolean indicating whether the input file has a header row with names\ + for the columns. To use --names, --no-header-row must be set", + ) + parser.add_option( + "-n", + "--names", + type="string", + default="Exploitation,Virulence,Technical Impact,Situated Impact", + help="Names to use to identify the columns in -c. Comma-separated list.\ + Please don't use a header row in the input file.", + ) + parser.add_option( + "-p", + "--priorities", + type="string", + default="Defer, Scheduled, Out-of-Cycle,Immediate", + help="Ranked list, lowest to highest, of the labels for the decisions.\ These need to match the values in the CVS file exactly.\ - Please input as a comma-separated list, no spaces. Current max is 5.") - ############################################################################## - #### Set Boolean defaults - parser.set_defaults(headerRow=True) - ############################################################################## - return parser + Please input as a comma-separated list, no spaces. Current max is 5.", + ) + ############################################################################## + #### Set Boolean defaults + parser.set_defaults(headerRow=True) + ############################################################################## + return parser + ########## ## put other method definitions here def print_preamble(location): - """ - This just prints a reasonable latex preamble as a string literal. - It's all hard-coded for now. Also begins the latex document. - Note that \ u is interpreted as a unicode start symbol, even in trip quotes. - \ a t and b have similar problems, and need to be escaped. - """ - # standalone class instead of article as recommended here: - # https://tex.stackexchange.com/questions/11866/compile-a-latex-document-into-a-png-image-thats-as-short-as-possible - location.write(""" + """ + This just prints a reasonable latex preamble as a string literal. + It's all hard-coded for now. Also begins the latex document. + Note that \ u is interpreted as a unicode start symbol, even in trip quotes. + \ a t and b have similar problems, and need to be escaped. + """ + # standalone class instead of article as recommended here: + # https://tex.stackexchange.com/questions/11866/compile-a-latex-document-into-a-png-image-thats-as-short-as-possible + location.write( + """ \documentclass[10pt,preview]{standalone} \\usepackage[utf8]{inputenc} \\usepackage[english]{babel} @@ -79,49 +127,68 @@ def print_preamble(location): \\begin{document} \pagestyle{empty} - """) - -def print_forest_options(location, priorities = ["Defer", "Scheduled", - "Out-of-band","Immediate"]): - """ - Global forest options, which are mostly the defs for the labels. - Remember to escape the backslashes. - As with print_preamble, there is limited flexibility here, but the names of - the priority labels can be given as string inputs to the array "priorities" - If the provided labels have special LaTeX characters, the method makes an - effort to remove them. """ - while len(priorities) < 5: - priorities.append("") - # pad list. If it's too long, those labels just won't be used - - for i in range(len(priorities)): - priorities[i] = re.sub(r'[_^$%&#{}\\]', '', priorities[i]) - # based on https://gist.github.com/jomigo96/6a040d4e4ad384bccd81c9a65e5cd210 - # this should remove the most common Latex control characters - - # There is a danger here that the decision labels may be processed as code - # within the scope of the tikzset command - # but doing this makes printing the right command easier, since it is - # just the decision label in the graph is also the name of the style. - pri1string = str(priorities[0] + - "/.style={outcome, fill=gray, thick, draw=green, label=right:{" + - priorities[0] + "}}\n") - pri2string = str(priorities[1] + - "/.style={outcome, fill=yellow, thick, dashed, draw=yellow, label=right:{" + - priorities[1] + "}}\n") - pri3string = str(priorities[2] + - "/.style={outcome, fill=orange, thick, draw=orange, label=right:{" + - priorities[2] + "}}\n") - pri4string = str(priorities[3] + - "/.style={outcome, fill=red, thick, draw=black, label=right:{" + - priorities[3] + "}}\n") - pri5string = str(priorities[4] + - "/.style={outcome, fill=black, thick, dashed, draw=gray, label=right:{" + - priorities[4] + "}}\n") - - # write the forest options - location.write(""" + ) + + +def print_forest_options( + location, priorities=["Defer", "Scheduled", "Out-of-band", "Immediate"] +): + """ + Global forest options, which are mostly the defs for the labels. + Remember to escape the backslashes. + As with print_preamble, there is limited flexibility here, but the names of + the priority labels can be given as string inputs to the array "priorities" + If the provided labels have special LaTeX characters, the method makes an + effort to remove them. + """ + while len(priorities) < 5: + priorities.append("") + # pad list. If it's too long, those labels just won't be used + + for i in range(len(priorities)): + priorities[i] = re.sub(r"[_^$%&#{}\\]", "", priorities[i]) + # based on https://gist.github.com/jomigo96/6a040d4e4ad384bccd81c9a65e5cd210 + # this should remove the most common Latex control characters + + # There is a danger here that the decision labels may be processed as code + # within the scope of the tikzset command + # but doing this makes printing the right command easier, since it is + # just the decision label in the graph is also the name of the style. + pri1string = str( + priorities[0] + + "/.style={outcome, fill=gray, thick, draw=green, label=right:{" + + priorities[0] + + "}}\n" + ) + pri2string = str( + priorities[1] + + "/.style={outcome, fill=yellow, thick, dashed, draw=yellow, label=right:{" + + priorities[1] + + "}}\n" + ) + pri3string = str( + priorities[2] + + "/.style={outcome, fill=orange, thick, draw=orange, label=right:{" + + priorities[2] + + "}}\n" + ) + pri4string = str( + priorities[3] + + "/.style={outcome, fill=red, thick, draw=black, label=right:{" + + priorities[3] + + "}}\n" + ) + pri5string = str( + priorities[4] + + "/.style={outcome, fill=black, thick, dashed, draw=gray, label=right:{" + + priorities[4] + + "}}\n" + ) + + # write the forest options + location.write( + """ \\forestset{ my label/.style={edge label={node [pos=0.75,above,font=\scriptsize] {#1}} }, } @@ -130,184 +197,214 @@ def print_forest_options(location, priorities = ["Defer", "Scheduled", outcome/.style={shape=isosceles triangle,, shape border rotate=180, minimum height=0.4cm, minimum width=0.07cm} } \\tikzset{ -""") - location.write(pri1string) - location.write("""} +""" + ) + location.write(pri1string) + location.write( + """} \\tikzset{ -""") - location.write(pri2string) - location.write("""} +""" + ) + location.write(pri2string) + location.write( + """} \\tikzset{ -""") - location.write(pri3string) - location.write("""} +""" + ) + location.write(pri3string) + location.write( + """} \\tikzset{ -""") - location.write(pri4string) - location.write("""} +""" + ) + location.write(pri4string) + location.write( + """} \\tikzset{ -""") - location.write(pri5string) - location.write("}\n") #close the last tikzset; forestset is already closed +""" + ) + location.write(pri5string) + location.write("}\n") # close the last tikzset; forestset is already closed def begin_forest(location): - """This text begins a forest within the LaTeX document. These are - options specific to this tree. This could be used multiple times in one - LaTeX document, but if we are just going to have to split the PDF later - then don't bother. These have been tuned reasonably well, but could change. - Make sure there are no empty lines between the begin and end statements. - Escape backslashes. - """ - location.write(""" + """This text begins a forest within the LaTeX document. These are + options specific to this tree. This could be used multiple times in one + LaTeX document, but if we are just going to have to split the PDF later + then don't bother. These have been tuned reasonably well, but could change. + Make sure there are no empty lines between the begin and end statements. + Escape backslashes. + """ + location.write( + """ \\footnotesize \\noindent \\begin{forest} for tree={s sep*=0.33, l sep=20mm, child anchor=west, anchor=west, grow=east, calign=center, tier/.pgfmath=level()}, forked edges, - """) + """ + ) ############################################################################## + def main(): - parser = initialize_options() - (options, args) = parser.parse_args() - f_iter = glob.glob(options.filelist) - delim = options.delim - if delim is not None: delimlen = len(delim) - if options.out_file in ('-', 'stdout'): - ofile = sys.stdout - else: - ofile = open(options.out_file, 'w') - ########## - ## recover other options here - label = options.label - columns = options.columns.split(',') - depth = len(columns) #depth of the tree - for i in range(depth): - columns[i] = int(columns[i]) - headerRow = options.headerRow - if not headerRow: - names = options.names.split(',') - else: - # if headerRow is true, need to recover names after file is read - names = [None] * depth - priorities = (options.priorities.split(',')) - ############################################################################## - - ########## - ## initialize variables here - lines = [] - graph = {} - dpoint_values = [[] for i in range(depth)] # decision point values - # creates an empty list to store decision values for each column - sort_order = [[] for i in range(depth)] # to preserve order in file - counts = [0 for i in range(depth)] # decision point values - #tracking path traversal at each level of the tree - tmp_path = [] # for tracking our place in the tree - latex_brace_close = "] " + "\n" #how we close a part of the tree in TeX - ############################################################################## - for file in f_iter: - if file in ('-', 'stdin'): - handle = sys.stdin - use_stdin = True + parser = initialize_options() + (options, args) = parser.parse_args() + f_iter = glob.glob(options.filelist) + delim = options.delim + if delim is not None: + delimlen = len(delim) + if options.out_file in ("-", "stdout"): + ofile = sys.stdout else: - handle = open(file, 'r') - use_stdin = False - try: - ########## - ## read the input files here. To catch ingest errors, nest a try block - lines = lines + handle.readlines() # will need to strip whitespace - finally: - if not use_stdin: - handle.close() - - ########## - ## do whatever else you have to do here - print_preamble(ofile) - # This just prints the fairly static front matter. - print_forest_options(location = ofile, priorities = priorities) - # The labels for decisions are changable, these should be cmd line configs - - if headerRow: - tmp_names = lines.pop(0).split(',') - for i in range(depth): - names[i] = tmp_names[columns[i]] - # columns is the order the columns will be used, so make sure the - # labels read from the file match that order - - for line in lines: - path = [] - tmp = line.strip().split(delim) - i = 0 # index for sort order matrix - for col in columns: - path.append(tmp[col]) - if tmp[col] not in sort_order[i]: - sort_order[i].append(tmp[col]) - i += 1 - graph[tuple(path)] = tmp[label] - # once we've constructed the path, to hash it it must be immutable - - paths = list(graph) - for path in paths: + ofile = open(options.out_file, "w") + ########## + ## recover other options here + label = options.label + columns = options.columns.split(",") + depth = len(columns) # depth of the tree for i in range(depth): - if path[i] not in dpoint_values[i]: - dpoint_values[i].append(path[i]) - for i in range(depth): - dpoint_values[i].sort(key = lambda j: sort_order[i].index(j), reverse=True) - # reverse because the latex will flip it again - # loop twice so we don't sort every time we check a new path - - # Now take this "graph" structure and print the latex for the tree. - begin_forest(ofile) - - ofile.write(str("[" + names[0] + ", rectangle, draw," + "\n")) - #The root is special, and has no label. Only happens once. - - i = 0 - while i >= 0: - outstring = "" - if i == depth - 1: #off by one error if we just test == depth - # last layer needs to include decision labels - for j in range(len(dpoint_values[i])): - # this loop is for printing intermediate tree nodes (not root and not leaf) - # The latex requires a nested structure just like the tree. - label = dpoint_values[i][j] - tmp_path.append(label) - ofile.write("[, " + graph[tuple(tmp_path)] + ", my label={" + label + "} ]" + "\n") - del tmp_path[-1] - i = i - 1 - ofile.write(latex_brace_close) #close each latex brace - del tmp_path[-1] # every time we close a brace, update the path to reflect - else: # "Normal" case - if counts[i] == len(dpoint_values[i]): + columns[i] = int(columns[i]) + headerRow = options.headerRow + if not headerRow: + names = options.names.split(",") + else: + # if headerRow is true, need to recover names after file is read + names = [None] * depth + priorities = options.priorities.split(",") + ############################################################################## + + ########## + ## initialize variables here + lines = [] + graph = {} + dpoint_values = [[] for i in range(depth)] # decision point values + # creates an empty list to store decision values for each column + sort_order = [[] for i in range(depth)] # to preserve order in file + counts = [0 for i in range(depth)] # decision point values + # tracking path traversal at each level of the tree + tmp_path = [] # for tracking our place in the tree + latex_brace_close = "] " + "\n" # how we close a part of the tree in TeX + ############################################################################## + for file in f_iter: + if file in ("-", "stdin"): + handle = sys.stdin + use_stdin = True + else: + handle = open(file, "r") + use_stdin = False try: - del tmp_path[-1] - except IndexError: - tmp_path = [] # basically this just allows us to reach the loop exit - ofile.write(latex_brace_close) - counts[i] = 0 - i = i - 1 - continue - else: # This section is for printing leaf labels - current = counts[i] - counts[i] += 1 - label = dpoint_values[i][current] - tmp_path.append(label) - outstring = str("[" + names[i+1] + ", rectangle, draw, my label={" + - label + "}," +"\n") - ofile.write(outstring) - i += 1 - - #ofile.write(latex_brace_close) # close the initial brace befoer the loop. - # The last pass through the loop produces the requisite extra brace close - ofile.write(str("\end{forest}" + "\n")) - ofile.write(str("\end{document}" + "\n")) - - ############################################################################## - - ofile.close() - print("""If everything went OK, then you should be able to create a PDF from \ + ########## + ## read the input files here. To catch ingest errors, nest a try block + lines = lines + handle.readlines() # will need to strip whitespace + finally: + if not use_stdin: + handle.close() + + ########## + ## do whatever else you have to do here + print_preamble(ofile) + # This just prints the fairly static front matter. + print_forest_options(location=ofile, priorities=priorities) + # The labels for decisions are changable, these should be cmd line configs + + if headerRow: + tmp_names = lines.pop(0).split(",") + for i in range(depth): + names[i] = tmp_names[columns[i]] + # columns is the order the columns will be used, so make sure the + # labels read from the file match that order + + for line in lines: + path = [] + tmp = line.strip().split(delim) + i = 0 # index for sort order matrix + for col in columns: + path.append(tmp[col]) + if tmp[col] not in sort_order[i]: + sort_order[i].append(tmp[col]) + i += 1 + graph[tuple(path)] = tmp[label] + # once we've constructed the path, to hash it it must be immutable + + paths = list(graph) + for path in paths: + for i in range(depth): + if path[i] not in dpoint_values[i]: + dpoint_values[i].append(path[i]) + for i in range(depth): + dpoint_values[i].sort(key=lambda j: sort_order[i].index(j), reverse=True) + # reverse because the latex will flip it again + # loop twice so we don't sort every time we check a new path + + # Now take this "graph" structure and print the latex for the tree. + begin_forest(ofile) + + ofile.write(str("[" + names[0] + ", rectangle, draw," + "\n")) + # The root is special, and has no label. Only happens once. + + i = 0 + while i >= 0: + outstring = "" + if i == depth - 1: # off by one error if we just test == depth + # last layer needs to include decision labels + for j in range(len(dpoint_values[i])): + # this loop is for printing intermediate tree nodes (not root and not leaf) + # The latex requires a nested structure just like the tree. + label = dpoint_values[i][j] + tmp_path.append(label) + ofile.write( + "[, " + + graph[tuple(tmp_path)] + + ", my label={" + + label + + "} ]" + + "\n" + ) + + del tmp_path[-1] + i = i - 1 + ofile.write(latex_brace_close) # close each latex brace + del tmp_path[-1] # every time we close a brace, update the path to reflect + else: # "Normal" case + if counts[i] == len(dpoint_values[i]): + try: + del tmp_path[-1] + except IndexError: + tmp_path = ( + [] + ) # basically this just allows us to reach the loop exit + ofile.write(latex_brace_close) + counts[i] = 0 + i = i - 1 + continue + else: # This section is for printing leaf labels + current = counts[i] + counts[i] += 1 + label = dpoint_values[i][current] + tmp_path.append(label) + outstring = str( + "[" + + names[i + 1] + + ", rectangle, draw, my label={" + + label + + "}," + + "\n" + ) + ofile.write(outstring) + i += 1 + + # ofile.write(latex_brace_close) # close the initial brace befoer the loop. + # The last pass through the loop produces the requisite extra brace close + ofile.write(str("\end{forest}" + "\n")) + ofile.write(str("\end{document}" + "\n")) + + ############################################################################## + + ofile.close() + print( + """If everything went OK, then you should be able to create a PDF from \ the .tex file I just made by running: latexmk -pdf $file Then you can remove all the extraneous latex files with: @@ -315,9 +412,11 @@ def main(): You can also remove the .tex file, I can always make it again. To make the PNG files for the HTML output document, use GhostScript: gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dBackgroundColor=16#ffffff -dMinFeatureSize=2 -sOutputFile=tree.png $pdf \ - """) + """ + ) # See https://www.ghostscript.com/doc/current/Devices.htm#PNG - return 0 # if nothing goes wrong, return success for the exit code. + return 0 # if nothing goes wrong, return success for the exit code. + if __name__ == "__main__": - sys.exit(main()) + main() From 8804e52da8e25fe3973727e78339b7e6b2f67980 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 12 Jul 2023 10:43:41 -0400 Subject: [PATCH 5/6] update supplier tree graphics --- doc/graphics/ssvc_2_supplier.pdf | Bin 29561 -> 31560 bytes doc/graphics/ssvc_2_supplier.tex | 60 +++++++++++++++---------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/doc/graphics/ssvc_2_supplier.pdf b/doc/graphics/ssvc_2_supplier.pdf index a0c663c5c5e6fff2eefedd86a63597524c50e4c0..2075b98f97a2cebded3ac0f47ea7b641ec888558 100644 GIT binary patch delta 19446 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 e#Vd1w$AAgkH54m?1Rop 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 Js;>TSTmV^s6_Ee{ diff --git a/doc/graphics/ssvc_2_supplier.tex b/doc/graphics/ssvc_2_supplier.tex index 319042cd..62ab0fe1 100644 --- a/doc/graphics/ssvc_2_supplier.tex +++ b/doc/graphics/ssvc_2_supplier.tex @@ -46,96 +46,96 @@ for tree={s sep*=0.33, l sep=20mm, child anchor=west, anchor=west, grow=east, calign=center, tier/.pgfmath=level()}, forked edges, [Exploitation, rectangle, draw, [Utility, rectangle, draw, my label={active}, -[TechnicalImpact, rectangle, draw, my label={super effective}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={super effective}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, immediate, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, immediate, my label={significant} ] [, immediate, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={efficient}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={efficient}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={laborious}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={laborious}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] ] ] -[Utility, rectangle, draw, my label={poc}, -[TechnicalImpact, rectangle, draw, my label={super effective}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Utility, rectangle, draw, my label={PoC}, +[Technical Impact, rectangle, draw, my label={super effective}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={efficient}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={efficient}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, out-of-cycle, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, immediate, my label={significant} ] [, scheduled, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={laborious}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={laborious}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, immediate, my label={significant} ] [, scheduled, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, out-of-cycle, my label={significant} ] [, scheduled, my label={minimal} ] ] ] ] [Utility, rectangle, draw, my label={none}, -[TechnicalImpact, rectangle, draw, my label={super effective}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={super effective}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, out-of-cycle, my label={significant} ] -[, scheduled, my label={minimal} ] +[, out-of-cycle, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, out-of-cycle, my label={significant} ] [, scheduled, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={efficient}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={efficient}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, out-of-cycle, my label={significant} ] [, scheduled, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, out-of-cycle, my label={significant} ] [, scheduled, my label={minimal} ] ] ] -[TechnicalImpact, rectangle, draw, my label={laborious}, -[PublicSafetyImpact, rectangle, draw, my label={total}, +[Technical Impact, rectangle, draw, my label={laborious}, +[Public-Safety Impact, rectangle, draw, my label={total}, [, out-of-cycle, my label={significant} ] -[, defer, my label={minimal} ] +[, scheduled, my label={minimal} ] ] -[PublicSafetyImpact, rectangle, draw, my label={partial}, +[Public-Safety Impact, rectangle, draw, my label={partial}, [, scheduled, my label={significant} ] [, defer, my label={minimal} ] ] From 2468e96d7237fe4b23db399e54ccf25c3b20e463 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 12 Jul 2023 10:47:04 -0400 Subject: [PATCH 6/6] update deployer tree graphics --- doc/graphics/ssvc_2_deployer_SeEUMss.pdf | Bin 34934 -> 33855 bytes doc/graphics/ssvc_2_deployer_SeEUMss.tex | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/graphics/ssvc_2_deployer_SeEUMss.pdf b/doc/graphics/ssvc_2_deployer_SeEUMss.pdf index 986007d3f6e59938bf8613384cda84f5c19555fc..827a676af83ba2a8d9292b547cca2c7532cf2259 100644 GIT binary patch delta 11661 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 delta 12898 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 diff --git a/doc/graphics/ssvc_2_deployer_SeEUMss.tex b/doc/graphics/ssvc_2_deployer_SeEUMss.tex index 61cac58b..db396c1d 100644 --- a/doc/graphics/ssvc_2_deployer_SeEUMss.tex +++ b/doc/graphics/ssvc_2_deployer_SeEUMss.tex @@ -56,7 +56,7 @@ [Human Impact, rectangle, draw, my label={no}, [, immediate, my label={very high} ] [, out-of-cycle, my label={high} ] -[, scheduled, my label={medium} ] +[, out-of-cycle, my label={medium} ] [, scheduled, my label={low} ] ] ] @@ -65,7 +65,7 @@ [, out-of-cycle, my label={very high} ] [, out-of-cycle, my label={high} ] [, out-of-cycle, my label={medium} ] -[, scheduled, my label={low} ] +[, out-of-cycle, my label={low} ] ] [Human Impact, rectangle, draw, my label={no}, [, out-of-cycle, my label={very high} ] @@ -78,7 +78,7 @@ [Human Impact, rectangle, draw, my label={yes}, [, out-of-cycle, my label={very high} ] [, out-of-cycle, my label={high} ] -[, scheduled, my label={medium} ] +[, out-of-cycle, my label={medium} ] [, scheduled, my label={low} ] ] [Human Impact, rectangle, draw, my label={no}, @@ -101,7 +101,7 @@ [, out-of-cycle, my label={very high} ] [, scheduled, my label={high} ] [, scheduled, my label={medium} ] -[, defer, my label={low} ] +[, scheduled, my label={low} ] ] ] [Automatable, rectangle, draw, my label={controlled},