From ac81aba9a5c58d73bea57763ac54c5aab77fd566 Mon Sep 17 00:00:00 2001
From: Markus Scheidgen <markus.scheidgen@gmail.com>
Date: Mon, 17 Aug 2020 12:55:07 +0200
Subject: [PATCH] Added a parser readme template. #394

---
 README.parsers.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 README.parsers.md

diff --git a/README.parsers.md b/README.parsers.md
new file mode 100644
index 0000000000..e53ad5b1ad
--- /dev/null
+++ b/README.parsers.md
@@ -0,0 +1,77 @@
+***Note:** This is a general README file for NOMAD parsers, consult the README of specific parser projects for more detailed information!*
+
+## Preparing code input and output file for uploading to NOMAD
+
+NOMAD accepts `.zip` and `.tar.gz` archives as uploads. Each upload can contain arbitrary
+files and directories. NOMAD will automatically try to choose the right parser for you files.
+For each parser (i.e. for each supported code) there is one type of file that the respective
+parser can recognize. We call these files `mainfiles` as they typically are the main
+output file a code. For each `mainfile` that NOMAD discovers it will create an entry
+in the database that users can search, view, and download. NOMAD will associate all files
+in the same directory as files that also belong to that entry. Parsers
+might also read information from these auxillary files. This way you can add more files
+to an entry, even if the respective parser/code might not directly support it.
+
+For $code-name$ please provide at least the files from this table if applicable to your
+calculations (remember that you can provide more files if you want):
+
+$table-of-files$
+
+To create an upload with all calculations in a directory structure:
+
+```
+zip -r <upload-file>.zip <directory>/*
+```
+
+Go to the [NOMAD upload page](https://nomad-lab.eu/prod/rae/gui/uploads) to upload files
+or find instructions about how to upload files from the command line.
+
+## Using the parser
+
+You can use NOMAD's parsers and normalizers locally on your computer. You need to install
+NOMAD's pypi package:
+
+```
+pip install nomad-lab
+```
+
+To parse code input/output from the command line, you can use NOMAD's command line
+interface (CLI) and print the processing results output to stdout:
+
+```
+nomad parse --show-backend <path-to-file>
+```
+
+To parse a file in Python, you can program something like this:
+```python
+import sys
+from nomad.cli.parse import parse, normalize_all
+
+# match and run the parser
+backend = parse(sys.argv[1])
+# run all normalizers
+normalize_all(backend)
+
+# get the 'main section' section_run as a metainfo object
+section_run = backend.resource.contents[0].section_run[0]
+
+# get the same data as JSON serializable Python dict
+python_dict = section_run.m_to_dict()
+```
+
+## Developing the parser
+
+Also install NOMAD's pypi package:
+
+```
+pip install nomad-lab
+```
+
+Clone the parser project and install it in development mode:
+
+```
+git clone $parser-git-url$ $parser-dir-name$
+pip install -e $parser-dir-name$
+```
+
+Running the parser now, will use the parser's Python code from the clone project.
-- 
GitLab