45 Commits

Author SHA256 Message Date
0a879cbfe9 removes debug line, writes json to file instead (path: output/) 2026-02-13 11:49:59 +01:00
f60b58f2f2 ignores output of main.py (output/*.json) 2026-02-13 11:49:13 +01:00
6f618b2340 adds comments 2026-02-13 01:05:32 +01:00
38940995b5 completes the dataset with instruments_used (in a way...)
only lacks units of measurement, then I'll be ready for conversion
2026-02-13 00:59:22 +01:00
f686ea65b1 adds get_instruments method to Layer class
get_instruments returns a dictionary with the names of every system used
during the deposition
unfortunately, NeXus standard allows for a single value of all three
keys per every sample - not every layer
this means that every layer has its own data for laser, rheed system and
depo chamber which IDEALLY is the same for every layer, but in practice
they COULD be different and I still don't know how to deal with this
2026-02-13 00:32:31 +01:00
23bfdefd30 adds all the remaining layer data
only lacks the instrument_used data and units of measurement
NOTE: units of measurement are hard to collect, but could be assumed
considering our instruments are standard
2026-02-13 00:18:07 +01:00
38d281543e code cleanup: deletes debug lines from main.py 2026-02-13 00:07:39 +01:00
a12506b8be MAJOR: main.py successfully produces JSON following NeXus-schema
takes API key and elabid of the "entrypoint" sample as input
returns indented JSON with the reconstructed dataset!
currently lacks instruments_used data (matter of minutes)
and all the layer data (already present in Layer-class objects)
2026-02-13 00:01:24 +01:00
43cfd788f3 adds non-req. attr. "description" to class Target 2026-02-12 23:53:21 +01:00
da42de5466 handles error 400 bad request with exit message 2026-02-12 23:52:37 +01:00
d86b35a5fe integrates sub-classes Target and Substrate in main.py 2026-02-12 16:01:10 +01:00
c4903a536b [untested] creates child classes of Material for Substrates and Targets 2026-02-12 15:53:44 +01:00
3e85940eb6 adds chained request from layer to pld target 2026-02-12 15:24:01 +01:00
820337c06e fixes category title for materials: "Substrate", not "Substrate batch"
"Substrate" is the title of the category of substrate items
"Substrate batch" is a key in a sample's dictionary
2026-02-12 15:16:35 +01:00
5a605038df fixes small residual from copy-paste in call_material_from_elabid
the fix changes "sample_data" - which was residual from copy-pasting the
call_entrypoint... function and therefore undefined - with
"material_data" which is very well defined in the previous line
2026-02-12 15:09:59 +01:00
fd4c3b718a creates chain functions to expand the dataset from the entrypoint 2026-02-12 14:58:48 +01:00
7b3bff854d adds mock layers of mock sample 26015 for testing purposes 2026-02-12 14:37:50 +01:00
4df8048e55 aligns chained requests test with main.py (Layer class) 2026-02-12 14:37:16 +01:00
97d534c5d1 documents main.py functions 2026-02-12 12:15:25 +01:00
88aacf23c1 aligns chained requests test with main.py (debug mode) 2026-02-12 11:29:40 +01:00
43a898e4e6 adds various main.py functions to call entries from elabid's
also replaces "pass" with "continue" in loops
2026-02-10 16:15:22 +01:00
5725dbfbf8 adds layer progressive number as Layer class attribute 2026-02-10 15:59:13 +01:00
ddd3775112 http error handling in APIHandler method get_entry_from_elabid() 2026-02-10 15:03:47 +01:00
2117f61f36 changes APIHandler attribute "dump" to "header" for clarity 2026-02-10 15:03:33 +01:00
5aa7527cca more use(less,ful) comments 2026-02-10 14:46:57 +01:00
c49aa23aea first attempt to refactor the test code into something more elegant 2026-02-09 17:50:35 +01:00
352a223d95 copies entire Header class in chained_requests test script 2026-02-09 16:53:16 +01:00
1d0bc6668c moves chained_requests in folder tests 2026-02-09 16:50:59 +01:00
46df7a948f completes methods for class Material 2026-02-09 16:27:52 +01:00
03d7811904 fixes Layer temperature and pressure keys (deletes trailing whitespace)
also changes default elabid to newer resource
2026-02-09 15:14:32 +01:00
c5f85b2618 Layer.__init__: ValueError on num.of pulses is fatal, not warning
error message changed accordingly
2026-02-09 15:04:35 +01:00
9dbf523190 huge improvements, read below
* function get_entry_from_elabid moved to the top to be used by classes
* class Layers renamed Layer
* class Layer expanded and completed with all NeXus-needed metadata
* classes improved with "quality" error management
* class Material added, for now it fetches just compound_elabid and
  compund chemical formula (as attribute and method respectively)
* class Material has get_compound() method which needs some commenting
* DEBUG MODE improved to cover all cases: layer, sample, substr. and pld
  target; creates a new shortcut for prompting (read line 147)
* removed herobrine (fuck i'm old aren't i)
2026-02-06 16:56:50 +01:00
4e224d3e29 completes Entrypoint class for now
also adds a few comments to Layers class
and changes debug mode to test Entrypoint
2026-01-28 16:03:14 +01:00
f74d8efea8 keyerrors handled on all attributes of classes Layers and Entrypoint 2026-01-28 15:45:36 +01:00
fd903f025b adds compound definition to glossary 2026-01-28 15:43:38 +01:00
f51b0d8615 adds asyncio to requirements
will probably start using it, if not I'll roll back
2026-01-28 15:42:28 +01:00
7245c757c3 reworks chained_requests
classes for parsing, functions for requests
also in general I shouldn't put error handling inside a class
2026-01-28 15:41:20 +01:00
e40173f264 adds script to resolve chained requests 2026-01-27 23:23:09 +01:00
b771fedf49 changes Header.dump from method to attribute 2026-01-27 22:40:32 +01:00
da074b027b adds glossary 2026-01-27 22:23:38 +01:00
9b86791c9e adds test function 2026-01-27 16:51:06 +01:00
93a87a2282 adds gitignore from python/jupyter template 2026-01-27 16:46:10 +01:00
27b2f5cd94 adds (http requests) header class 2026-01-27 16:44:55 +01:00
31109a423f adds requirements 2026-01-27 16:07:26 +01:00
2eb701d1a1 Initial commit 2026-01-27 14:59:34 +00:00