diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..2398357401ede836962ddff646a27842ea7243fd --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,19 @@ +stages: + - test + +testing: + stage: test + script: + - cd .. && rm -rf nomad-lab-base + - git clone --recursive git@gitlab.mpcdf.mpg.de:nomad-lab/nomad-lab-base.git + - cd nomad-lab-base + - git submodule foreach git checkout master + - git submodule foreach git pull + - sbt dftbPlus/test + - export PYTHONEXE=/labEnv/bin/python + - sbt dftbPlus/test + only: + - master + tags: + - test + - spec2 diff --git a/src/main/scala/eu/nomad_lab/parsers/DftbPlusParser.scala b/src/main/scala/eu/nomad_lab/parsers/DftbPlusParser.scala new file mode 100644 index 0000000000000000000000000000000000000000..469ffeaaffee691c326499b9bc28032146c4d550 --- /dev/null +++ b/src/main/scala/eu/nomad_lab/parsers/DftbPlusParser.scala @@ -0,0 +1,44 @@ +package eu.nomad_lab.parsers + +import eu.nomad_lab +import eu.nomad_lab.DefaultPythonInterpreter +import org.{ json4s => jn } +import eu.{ nomad_lab => lab } +import scala.collection.breakOut + +object DftbPlusParser extends SimpleExternalParserGenerator( + name = "DftbPlusParser", + parserInfo = jn.JObject( + ("name" -> jn.JString("DftbPlus")) :: + ("parserId" -> jn.JString("DftbPlus" + lab.DftbPlusVersionInfo.version)) :: + ("versionInfo" -> jn.JObject( + ("nomadCoreVersion" -> jn.JObject(lab.NomadCoreVersionInfo.toMap.map { + case (k, v) => k -> jn.JString(v.toString) + }(breakOut): List[(String, jn.JString)])) :: + (lab.DftbPlusVersionInfo.toMap.map { + case (key, value) => + (key -> jn.JString(value.toString)) + }(breakOut): List[(String, jn.JString)]) + )) :: Nil + ), + mainFileTypes = Seq("text/.*"), + mainFileRe = """ Fermi distribution function + +""".r, + cmd = Seq(DefaultPythonInterpreter.pythonExe(), "${envDir}/parsers/dftb-plus/parser/parser-dftb-plus/dftb-plus_parser.py", + "--uri", "${mainFileUri}", "${mainFilePath}"), + resList = Seq( + "parser-dftb+/parser_dftb+.py", + "parser-dftb+/setup_paths.py", + "nomad_meta_info/public.nomadmetainfo.json", + "nomad_meta_info/common.nomadmetainfo.json", + "nomad_meta_info/meta_types.nomadmetainfo.json", + "nomad_meta_info/dftb_plus.nomadmetainfo.json" + ) ++ DefaultPythonInterpreter.commonFiles(), + dirMap = Map( + "parser-dftb-plus" -> "parsers/dftb-plus/parser/parser-dftb-plus", + "nomad_meta_info" -> "nomad-meta-info/meta_info/nomad_meta_info", + "python" -> "python-common/common/python/nomadcore" + ) ++ DefaultPythonInterpreter.commonDirMapping(), + metaInfoEnv = Some(lab.meta.KnownMetaInfoEnvs.dftbPlus) +) diff --git a/src/test/scala/eu/nomad_lab/parsers/DftbPlusParserSpec.scala b/src/test/scala/eu/nomad_lab/parsers/DftbPlusParserSpec.scala new file mode 100644 index 0000000000000000000000000000000000000000..0e0dcf39b2ae98e1eef34bb4036ed72c9eb088a2 --- /dev/null +++ b/src/test/scala/eu/nomad_lab/parsers/DftbPlusParserSpec.scala @@ -0,0 +1,14 @@ +package eu.nomad_lab.parsers + +import org.specs2.mutable.Specification + +object DftbPlusTests extends Specification { + "DftbPlusParserTest" >> { + "test with json-events" >> { + ParserRun.parse(DftbPlusParser, "parsers/dftbPlus/test/examples/detailed.out", "json-events") must_== ParseResult.ParseSuccess + } + "test with json" >> { + ParserRun.parse(DftbPlusParser, "parsers/dftbPlus/test/examples/detailed.out", "json") must_== ParseResult.ParseSuccess + } + } +}