annotate add_taxonomic_labels.py @ 1:5155c1c41198 draft default tip

planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit d771f9fbfd42bcdeda1623d954550882a0863847-dirty
author onnodg
date Mon, 20 Oct 2025 12:25:29 +0000
parents abd214795fa5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
1 """This script processes the output obtained from a curated BLAST database
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
2 and prepares the correct input format for downstream analysis.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
3
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
4 The difference before and after running this script is that taxonomic labels
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
5 in the BLAST output are no longer marked as unknown, because the curated database
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
6 only includes taxonomy information in the headers of the output sequences.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
7
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
8 To extract the correct taxonomy levels, it is necessary to know the exact
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
9 positions of the required taxonomic ranks. These positions must be specified
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
10 in the `--taxon_levels`, based on splitting each header string first on '=' and
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
11 then on whitespace.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
12
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
13 Important:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
14 This script is not needed for GenBank-based databases, since their output
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
15 is already usable.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
16 `--taxon_levels` is a critical variable — do not modify it unless you
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
17 understand what you're doing.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
18 """
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
19
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
20 import argparse
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
21
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
22 def parse_arguments(args_list=None):
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
23 """Parse the command line arguments."""
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
24 parser = argparse.ArgumentParser(description="Add taxonomix labels from curated database output")
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
25 parser.add_argument("-i", "--input_file", required=True)
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
26 parser.add_argument("-o", "--output_file", required=True)
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
27 parser.add_argument("-t", "--taxon_levels", type=int, nargs="+", default=[1, 2, 4, 7, 11, 12, 13])
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
28 return parser.parse_args(args_list)
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
29
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
30
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
31 def add_labels(input, output, taxon_levels):
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
32 """
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
33 Add taxonomic labels to BLAST output.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
34
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
35 :param input: Path to BLAST output file.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
36 :type input: str
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
37 :param output: Path to output file.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
38 :type output: str
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
39 :param taxon_levels: List of taxonomic levels.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
40 :type taxon_levels: list
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
41 :return: None
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
42 :rtype: None
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
43 :raises: ValueError: if certain fields are missing from the input
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
44 """
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
45 # Make header in file
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
46 with open(output, 'w') as outfile:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
47 outfile.write('#Query ID #Subject #Subject accession #Subject Taxonomy ID #Identity percentage '
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
48 '#Coverage #evalue #bitscore #Source #Taxonomy\n')
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
49
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
50 with open(input, 'r') as infile, open(output, 'a') as outfile:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
51 for line in infile:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
52 if "#Query ID" not in line:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
53 new_taxa = ''
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
54 src_val = ""
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
55 if "superkingdom=" in line and "markercode=" in line and "Genbank" in line:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
56 taxonomy = line.split("superkingdom=")[-1].split("markercode=")[0].strip()
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
57 line = line.split("Genbank")[0].strip()
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
58 parts = line.strip().split()
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
59 else:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
60 raise ValueError("Line does not contain expected fields: superkingdom, markercode, or Genbank")
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
61
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
62 for p in parts:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
63 if p.startswith("source="):
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
64 src_val = p.split("=", 1)[1] # only keep the value after '='
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
65 break # we only need to get the source once
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
66 if src_val:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
67 line = line.strip() + "\t" + src_val
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
68
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
69 for level in taxon_levels:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
70 if level != taxon_levels[-1]:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
71 new_taxa += taxonomy.split('=')[level].split(' ')[0]
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
72 new_taxa += ' / '
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
73 else:
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
74 # The species name already contains a space, so it
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
75 # should not be split further.
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
76 new_taxa += taxonomy.split('=')[level]
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
77 line += '\t'
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
78 line += new_taxa
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
79 outfile.write(f'{line}\n')
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
80
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
81
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
82 def main(arg_list=None):
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
83 args = parse_arguments(arg_list)
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
84 add_labels(args.input_file, args.output_file, args.taxon_levels)
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
85
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
86
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
87 if __name__ == '__main__':
abd214795fa5 planemo upload for repository https://github.com/Onnodg/Naturalis_NLOOR/tree/main/NLOOR_scripts/add_header_tool commit c944fd5685f295acba06679e85b67973c173b137
onnodg
parents:
diff changeset
88 main()