EPICS IOC record search and meta information tool
Project description
EPICS IOC record search and meta information tool.
Spiritual successor of recordwhat.
https://pcdshub.github.io/whatrecord/
What?
Lark grammar-based parsers which parse any of the following into easy-to-use Python dataclasses:
EPICS access security files (.acf)
EPICS autosave save files (.sav)
EPICS V3 database files
EPICS V4 database files
EPICS msi-style template/substitutions files (.template/.substitutions)
EPICS gateway configuration (.pvlist)
EPICS sequencer state notation language programs (.st)
EPICS StreamDevice protocols (.proto)
All of the above can be easily serialized to JSON for interoperability.
Pseudo-IOC shell interpreter:
Reads st.cmd files as if it were an IOC
Loads and lints record files (and other supported formats above)
Builds inter- and intra- IOC PV relationship graphs
Stores context information about where each record/field/etc came from
API server
IOC finder (LCLS IOC manager, list of files, or external script)
Provides access to all parsed information above
Preliminary asyncio-based client to talk with the server
Frontend
User-friendly vue.js v3 frontend that communicates with API server
- Interfaces for:
Searching for records
Record relationships (processing and links, cross-IOC links)
IOC information
Gateway configuration overview
Duplicate records
Optional plugins
Plugins
happi devices
Simple LDAP search (LCLS hosts, “netconfig”)
LCLS-specific epicsArch / logbook DAQ PVs
TwinCAT PLC source code (pytmc)
Makefile / build system information
Determine build dependencies from a Makefile
Recursively inspect sub-dependencies
Graph IOC dependency information or output it as JSON
Command-line tools
whatrecord lint - lint a database
whatrecord parse - parse supported formats
whatrecord server - start the API server
whatrecord graph - graph PV relationships, SNL diagrams, IOC dependencies
Record?
Requirements
Requirements:
Python 3.9
aiohttp
apischema[graphql]
graphviz
jinja2
lark
Docker
See /docker to set up a Python 3.10-based whatrecord container. A docker-compose configuration for starting up the frontend/backend servers is also provided. Note that the default configuration only indexes the whatrecord-provided IOCs.
Frontend Screenshots
Search for records and view relationships:
View StreamDevice protocol information:
See where your qsrv pvAccess keys come from:
See access security settings:
View all of your IOCs in one place and browse their records by type:
View inter-IOC record relationships:
View all of your ophyd/happi devices and their relevant PVs:
View LDAP-provided settings:
(LCLS-specific) View epicsArch DAQ PVs:
View gateway PVList configurations:
View record duplicates:
View API server logs:
See per-parameter values:
See database lint:
Other Screenshots
Use whatrecord deps --graph to inspect IOCs/modules with make and generate a dependency graph of modules:
Use whatrecord graph to graph state notation language .st file logic:
Use an external tool like jq to sift through information from whatrecord’s JSON output:
$ whatrecord parse whatrecord/tests/iocs/db/pva/iq.db | jq '.records[] | [.name, .record_type, .fields.OUT.value]'
[
"$(PREFIX)Rate",
"ao",
"$(PREFIX)dly_.ODLY NPP"
]
[
"$(PREFIX)Delta",
"ao",
null
]
...
$ whatrecord parse whatrecord/tests/iocs/db/pva/iq.db | jq '.records[] | [ .name, .info["Q:group"]]'
[
"$(PREFIX)Rate",
null
]
[
"$(PREFIX)Phase:I",
{
"$(PREFIX)iq": {
"phas.i": {
"+type": "plain",
"+channel": "VAL"
}
}
}
]
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file whatrecord-0.4.2.tar.gz
.
File metadata
- Download URL: whatrecord-0.4.2.tar.gz
- Upload date:
- Size: 245.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | baf605e34ef9f5b97765c9d6df8b9628af751ca5112bb89dccafeed0919a82a2 |
|
MD5 | 0594eec3b3b57479f69b3a2297af19c2 |
|
BLAKE2b-256 | eec92ca2d9c41ee63cea0299248bf626a55f04e5022e24771b5250283d233e56 |