Hello,
I am encountering an error with uploading data to MP-contribs:
I have the following script:
from mpcontribs.client import Client
client = Client(
host="contribs-api.materialsproject.org",
apikey=API_KEY,
project="bader_charges"
)
client.init_columns({"task_id": None, "vacuum_charge": "e"})
contributions = [{
"identifier": row['material_id'],
"data": {
"task_id":row['task_id'],
"vacuum_charge": row['vacuum_charge'],
},
"tables": [pd.DataFrame({"charge":row['charge'],"atomic_volume":row['atomic_volume']})],
"structures": [Structure.from_dict(row['structure'])],} for n, row in df[:1].iterrows()]
My contributions
looks like the following, for example:
[{'identifier': 'mp-864733',
'data': {'task_id': 'mp-2901424', 'vacuum_charge': 0.0},
'tables': [ charge atomic_volume
0 10.947680 21.496675
1 10.947656 21.499067
2 7.349433 56.440158
3 7.351823 56.433166
4 7.351371 56.423598
5 7.349040 56.433350
6 7.351273 56.404646
7 7.351724 56.414214],
'structures': [Structure Summary
Lattice
abc : 10.794529822305464 10.794529822305464 3.781098
angles : 90.0 90.0 120.00237694128245
volume : 381.5448745437776
A : 5.397071 -9.348449 0.0
B : 5.397071 9.348449 -0.0
C : -0.0 -0.0 3.781098
pbc : True True True
PeriodicSite: Mo (5.397, -3.117, 0.9453) [0.6667, 0.3333, 0.25]
PeriodicSite: Mo (5.397, 3.117, 2.836) [0.3333, 0.6667, 0.75]
PeriodicSite: I (5.397, -5.247, 2.836) [0.7806, 0.2194, 0.75]
PeriodicSite: I (3.553, -2.052, 2.836) [0.4389, 0.2194, 0.75]
PeriodicSite: I (7.241, -2.052, 2.836) [0.7806, 0.5611, 0.75]
PeriodicSite: I (5.397, 5.247, 0.9453) [0.2194, 0.7806, 0.25]
PeriodicSite: I (7.242, 2.052, 0.9453) [0.5612, 0.7806, 0.25]
PeriodicSite: I (3.552, 2.052, 0.9453) [0.2194, 0.4388, 0.25]]}]
I get the following error:
0/1 processed -> retrying ... 0/1 processed -> retrying ... 0/1 processed -> retrying ...
bader_charges: Tried 3 times - abort.
It took 0.0min to submit 0/1 contributions.
With the following stacktrace:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/flask_mongorest/views.py", line 189, in _dispatch_request
return super(ResourceView, self).dispatch_request(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/flask/views.py", line 188, in dispatch_request
return current_app.ensure_sync(meth)(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/flask_mongorest/views.py", line 387, in post
self.create_object(**kwargs)
File "/usr/local/lib/python3.11/site-packages/flask_mongorest/views.py", line 413, in create_object
if not self.has_add_permission(request, obj):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/mpcontribs/api/contributions/views.py", line 168, in has_add_permission
if obj.project.unique_identifiers and Contributions.objects(query).count():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/mongoengine/queryset/base.py", line 123, in __call__
raise InvalidQueryError(msg)
mongoengine.errors.InvalidQueryError: Not a query object: {'project': 'bader_charges', 'identifier': 'mp-864733'}. Did you intend to use key=value?
...
Could you please advise as to what I am doing wrong?