Skip to content
Snippets Groups Projects
Commit e36dafeb authored by Mikhail Karnevskiy's avatar Mikhail Karnevskiy
Browse files

Merge branch 'feat/run_start_time' into 'master'

Feat: Get run starting date from the MDC

See merge request detectors/pycalibration!157
parents 4dc10dd3 7498657e
No related branches found
No related tags found
1 merge request!157Feat: Get run starting date from the MDC
class MDC_config:
mdconf = {}
mdconf['user-id'] = ''
mdconf['user-secret'] = ''
mdconf['user-email'] = 'calibration@example.com'
mdconf['token-url'] = 'https://in.xfel.eu/metadata/oauth/token'
mdconf['refresh-url'] = 'https://in.xfel.eu/metadata/oauth/token'
mdconf['auth-url'] = 'https://in.xfel.eu/metadata/oauth/authorize'
mdconf['scope'] = ''
mdconf['base-api-url'] = 'https://in.xfel.eu/metadata/api/'
......@@ -13,14 +13,16 @@ from textwrap import dedent
from time import sleep
from urllib.parse import urljoin
import dateutil.parser
import ipykernel
from metadata_client.metadata_client import MetadataClient
from notebook.notebookapp import list_running_servers
import numpy as np
import requests
import tabulate
from jinja2 import Template
from .mdc_config import MDC_config
from xfel_calibrate import settings
......@@ -425,15 +427,55 @@ def get_notebook_name():
return environ.get("CAL_NOTEBOOK_NAME", "Unknown Notebook")
def get_dir_creation_date(directory, run, tsdir=False):
def get_run_info(proposal, run):
"""
Return information about run from the MDC
:param proposal: proposal number
:param run: run number
:return: dictionary with run information
"""
mdconf = MDC_config.mdconf
mdc = MetadataClient(client_id=mdconf['user-id'],
client_secret=mdconf['user-secret'],
user_email=mdconf['user-email'],
token_url=mdconf['token-url'],
refresh_url=mdconf['refresh-url'],
auth_url=mdconf['auth-url'],
scope=mdconf['scope'],
base_api_url=mdconf['base-api-url'])
runs = mdc.get_proposal_runs(mdc, proposal_number=proposal,
run_number=run)
run_id = runs['data']['runs'][0]['id']
resp = mdc.get_run_by_id_api(run_id)
return resp.json()
def get_dir_creation_date(directory, run, tsdir=False, verbosity=0):
"""
Return modification time of oldest file.h5 in [directory]/[run]04
Return run starting time from the MDC.
If not succeeded, return modification time of oldest file.h5
in [directory]/[run]04.
:param directory: path to directory which contains runs
:param run: run number
:param tsdir: to get modification time of [directory]/[run]04.
:param verbosity: Level of verbosity (0 - silent)
:return: (datetime) modification time
"""
try:
path_list = list(filter(None, directory.strip('/').split('/')))
proposal = int(path_list[-2][1:])
run_info = get_run_info(proposal, run)
return dateutil.parser.parse(run_info['begin_at'])
except Exception as e:
if verbosity > 0:
print(e)
ntries = 100
while ntries > 0:
try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment