{"id":22753638,"url":"https://github.com/slaclab/lcls-tools","last_synced_at":"2025-04-14T15:34:22.473Z","repository":{"id":38297051,"uuid":"232679048","full_name":"slaclab/lcls-tools","owner":"slaclab","description":"Python tools for LCLS: post processing data, PV handling, pulling archive settings, etc.","archived":false,"fork":false,"pushed_at":"2025-04-09T22:28:25.000Z","size":17129,"stargazers_count":3,"open_issues_count":56,"forks_count":22,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-09T23:27:43.898Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slaclab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-08T23:17:04.000Z","updated_at":"2025-04-07T23:57:13.000Z","dependencies_parsed_at":"2023-10-21T00:34:53.119Z","dependency_job_id":"4953131e-6a70-4690-b324-c6fe2d3a4665","html_url":"https://github.com/slaclab/lcls-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Flcls-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Flcls-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Flcls-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slaclab%2Flcls-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slaclab","download_url":"https://codeload.github.com/slaclab/lcls-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248906553,"owners_count":21181186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-11T06:12:17.560Z","updated_at":"2025-04-14T15:34:22.467Z","avatar_url":"https://github.com/slaclab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CAUTION: This repository is a WORK IN PROGRESS!\n## THESE TOOLS ARE IN VARIOUS STAGES OF DEVELOPMENT. You are welcome to submit an issue or pull request for any improvements you would like to see or make.\n\n# About\nVarious tools to support high level application development at LCLS using python.  This is an effort to maintain a single repo that can be referenced for development.\n\n# lcls-tools\nPython tools for LCLS:\n* Device API (profile monitors, SC cavities, stoppers, magnets, etc...)\n* Data processing and fitting tools\n* Image collection and processing tools\n* Beam calculations (emittance, solenoid alignment corrections, etc...)\n\n# Organization\nFiles should be organized by their function and be as modular as possible. See [model-view-control](https://www.codecademy.com/article/mvc) programming style.\nFirst, if the code is general enough to be used on both LCLS and LCLS-II, it belongs in the lcls-tools/common directory.\nIf the code specific to LCLS or LCLS-II, use the normalconducting and superconducting directories respectively.\nFunctions used to analyze data, belongs in the common/data_analysis directory.\n\n# Rules of contribution\n* Try to make your code readable\n* Add comments whenever possible\n* Try your best to adhere to style guidelines set forth in [PEP8](https://www.python.org/dev/peps/pep-0008/)\n  * One of the automated checks for each PR is linting with ruff and pre-commit hooks and will fail otherwise. You can install `pre-commit` with `pip install pre-commit` and then run `pre-commit install` in the root of the repository, then run `pre-commit run --all-files` to check all files before pushing to the repo.\n* Try to be [idiomatic](https://docs.python-guide.org/writing/style).\n* Add tests (unittest is currently used, please use unit tests at a bare minimum)\n* Focus on extensibility (don't put a bunch of modules/classes into one file or directory, if you can avoid it)\n* Try to understand the purpose of each tool and do not overcomplicate with business logic that can live in an application. These should be small and useful tools/apis with well understood and firm contracts between the api and the user\n\n# Python 3\nPython 2 is no longer supported. Please write all new modules in Python 3.9 or above.\n\n# TODO\n* See running list of to do's written up as [issues here.](https://github.com/slaclab/lcls-tools/issues)\n* Update documentation\n* Make a robust and somewhat flexible logger module that knows about SLAC things\n\n# Dependencies and Installation\n\nFor a local development install, clone the repository and run the following commands:\n```bash\npip install -e .\n```\n\nIf you'd like to install the `meme` package requirement as well, run the following to install through HTTPS\n```bash\npip install -e \".[meme]\"\n```\n\nor the following to install through SSH\n```bash\npip install -e \".[meme-ssh]\"\n```\n\nThe full list of dependencies can be found in the `requirements.txt` file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaclab%2Flcls-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslaclab%2Flcls-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslaclab%2Flcls-tools/lists"}