matvirdkit stands for Material virtual design kit. This toolkit has been developed for 3 purpose.
Describing the data schema
Parsing data from DFT calculation raw data
Supplying API request information.
matvirdkit
├── api
├── builder
├── creator
└── model
api api interface
builder basic parser for data generating
creator used for writing data into database
model define the model of material
, task
and properties
basic rules:
if you want to add a set of properties named Abc into the model. You may add a new class for the new set Abc and corresponding document AbcDoc, e.g.
from typing import ClassVar, Dict
from pydantic import BaseModel, Field
from matvirdkit.model.provenance import LocalProvenance
from matvirdkit.model.common import MatvirdBase
class Abc(MatvirdBase):
provenance: Dict[str,LocalProvenance] = Field({}, description="Property provenance, make sure keep this!")
sub_property_1: float = Field(...)
sub_property_2: int = Field(...)
class AbcDoc(BaseModel):
"""
ABC property block
"""
property_name: ClassVar[str] = "Abc"
abc: Dict[str,Abc] = Field({}, description='abc information')
or, you may just add the sub_prop to the existed property class. For example, we can add new property update_time to the set Abc above.
from typing import ClassVar, Dict
from pydantic import BaseModel, Field
from matvirdkit.model.provenance import LocalProvenance
from matvirdkit.model.common import MatvirdBase
class Abc(MatvirdBase):
provenance: Dict[str,LocalProvenance] = Field({}, description="Property provenance, make sure keep this!")
sub_property_1: float = Field(...)
sub_property_2: int = Field(...)
update_time: str = Field(...)
class AbcDoc(BaseModel):
"""
ABC property block
"""
property_name: ClassVar[str] = "Abc"
abc: Dict[str,Abc] = Field({}, description='abc information')
To set up a instance of AbcDoc, we can use the following code:
doc=AbcDoc(
abc={'label': Abc(sub_property_1=0.2, sub_property_2=0.3, update_time= str(datetime.now()) ,description='This is a test')},
provenance={'label':{}}
)
print(doc.dict())
Generally speaking, the key of Dict for property AbcDoc.abc can be functional of calculation or calcuation method, such as "GGA-PBE", "GW", "PBE+U".
tasks definition:
Currently, we only support the VASP task.
The command line operation for preparing datasets and database operating are supported.
usage: mvdkit [-h] [-v] {build,create} ...
Desctiption:
------------
mvdkit is collection of toolkits for preparing and quering the data of matvird database.
To see the options for the sub-commands, type "mvdkit sub-command -h".
positional arguments:
{build,create}
build Generating data set for matvird.
create Write the data into database
optional arguments:
-h, --help show this help message and exit
-v, --version Display version
To prepare the dataset for specific database, you have to write your own info.json
firstly, and
then run the cmd mvdkit build -c info.json
Generally, the repository location can be ~/.repository
, which can be setted in then ~/.env
.
The directory tree of repository:
.
├── datasets
│ └── mech2d
│ └── m2d-2
│ ├── 1794cb78e03147af65fb3a4f2110b8f92b915f12-mp-755811-dos.json
│ ├── c271afe290f282540eccf92dbd03530df9070de9-mp-755811-dos.png
│ ├── m2d-2.json
│ └── mechanics
│ ├── elc_energy
│ │ ├── Def_1
│ │ │ ├── Def_1_Energy.dat
│ │ │ └── Def_1_Energy_Strain.png
│ │ ├── Def_2
│ │ │ ├── Def_2_Energy.dat
│ │ │ └── Def_2_Energy_Strain.png
│ │ ├── Def_3
│ │ │ ├── Def_3_Energy.dat
│ │ │ └── Def_3_Energy_Strain.png
│ │ ├── Def_4
│ │ │ ├── Def_4_Energy.dat
│ │ │ └── Def_4_Energy_Strain.png
│ │ ├── energy-EV.png
│ │ ├── EV_theta.dat
│ │ ├── Mech2D.json
│ │ └── Result.json
│ ├── elc_stress
│ │ ├── Def_1
│ │ │ ├── Def_1_Lagrangian_Stress.dat
│ │ │ ├── Def_1_Lagrangian_Stress.png
│ │ │ └── Def_1_Physical_Stress.dat
│ │ ├── Def_2
│ │ │ ├── Def_2_Lagrangian_Stress.dat
│ │ │ ├── Def_2_Lagrangian_Stress.png
│ │ │ └── Def_2_Physical_Stress.dat
│ │ ├── EV_theta.dat
│ │ ├── Mech2D.json
│ │ ├── Result.json
│ │ └── stress-EV.png
│ └── ssc_stress
│ ├── Def_bi
│ │ ├── Def_bi_Lagrangian_Stress.dat
│ │ ├── Def_bi_Lagrangian_Stress.png
│ │ └── Def_bi_Physical_Stress.dat
│ ├── Def_xx
│ │ ├── Def_xx_Lagrangian_Stress.dat
│ │ ├── Def_xx_Lagrangian_Stress.png
│ │ └── Def_xx_Physical_Stress.dat
│ ├── Def_xy
│ │ ├── Def_xy_Lagrangian_Stress.dat
│ │ ├── Def_xy_Lagrangian_Stress.png
│ │ └── Def_xy_Physical_Stress.dat
│ ├── Def_yy
│ │ ├── Def_yy_Lagrangian_Stress.dat
│ │ ├── Def_yy_Lagrangian_Stress.png
│ │ └── Def_yy_Physical_Stress.dat
│ └── Mech2D.json
├── meta
└── tasks
├── qe
│ └── 3d3616d4-49f8-4c97-9084-5846e8dbc903
└── vasp
├── 007d2c20b64b678e0d0fa1ff3f6950c0ceef8d5b
│ ├── 1477eeae6f878e441588f86c42857c2b34580624-CONTCAR.gz
│ ├── 3fcf67030e2044f6a74da9611778c0d9e7281642-CONTCAR.json
│ ├── 81c8a4ade5c45aef52bb2eea3cdbf118d20c38bc-vasprun.xml.gz
│ ├── 832f638ae8029d0ca099be0aa08b8519e0e98548-vasprun.xml.json
│ └── task.json
├── 0446e56c-8f9c-49b9-9d09-a1bcfb24e585
├── 06a7163b7b14404c93f985bdf0079ff20edbefb7
│ ├── 771be761164e4c5841e0eca173bddb4a01b410a1-CONTCAR.json
│ ├── a6349f104781f34f1459d1ba6124cbebe291ef7d-vasprun.xml.json
│ ├── d67ee17be51577b948a74dfd7769562cb3733970-vasprun.xml.gz
│ ├── f6e1b58a62479f6db561a63af912ff8cb904af1d-CONTCAR.gz
│ └── task.json
├── 071a0189883132bd8541b9430d073ffca5111860
│ ├── 283126d3546db1a51aea3e9a2467ba893c0630d5-vasprun.xml.json
│ ├── 4d8ff43e2ebabefa45eb204c308ded6eedb93ef9-CONTCAR.json
│ ├── b3f32ff8e4d1a9fd9d3c489102e557f7fe9de57f-vasprun.xml.gz
│ ├── cabd3d9c80a6ca864fc37dc7ab2932528c64b880-CONTCAR.gz
│ └── task.json
├── 074cb012-764b-489f-bd0a-7dda570b907e
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。