{"id":18561984,"url":"https://github.com/timstaley/drive-ami","last_synced_at":"2026-06-23T08:32:00.275Z","repository":{"id":5524526,"uuid":"6726402","full_name":"timstaley/drive-ami","owner":"timstaley","description":"Scripting interface for the MRAO-AMI 'reduce' pipeline.","archived":false,"fork":false,"pushed_at":"2017-05-05T17:00:46.000Z","size":105,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-15T17:50:50.264Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timstaley.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-11-16T18:49:48.000Z","updated_at":"2019-06-07T09:44:44.000Z","dependencies_parsed_at":"2022-07-06T23:31:50.034Z","dependency_job_id":null,"html_url":"https://github.com/timstaley/drive-ami","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/timstaley/drive-ami","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timstaley%2Fdrive-ami","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timstaley%2Fdrive-ami/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timstaley%2Fdrive-ami/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timstaley%2Fdrive-ami/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timstaley","download_url":"https://codeload.github.com/timstaley/drive-ami/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timstaley%2Fdrive-ami/sbom","scorecard":{"id":886804,"data":{"date":"2025-08-11","repo":{"name":"github.com/timstaley/drive-ami","commit":"2d18d0d44702ffc92da838938e6066df29f0f6e5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENCE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T10:18:42.686Z","repository_id":5524526,"created_at":"2025-08-24T10:18:42.686Z","updated_at":"2025-08-24T10:18:42.686Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34682622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-06T22:08:28.901Z","updated_at":"2026-06-23T08:32:00.251Z","avatar_url":"https://github.com/timstaley.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"============\ndrive-ami\n============\nA python package for scripting the AMI_-reduce pipeline.\n\nFor a full description, see `Staley and Anderson (2015)`_. \nIf you use drive-ami in work leading to a publication, we ask that you cite \nthe paper above, and the relevant `ASCL entry`_.\n\n.. _AMI: http://www.mrao.cam.ac.uk/telescopes/ami/\n.. _Staley and Anderson (2015): https://github.com/timstaley/automated-radio-imaging-paper\n.. _ASCL entry: http://ascl.net/1502.017\n\n\nRationale\n---------\nFrom a radio astronomy point of view:\n This package makes it trivial to script reduction of raw AMI data\n from python. What's more, it provides tools to group the raw files into \n datasets, outputting the UVFITS for each dataset under a single folder.\n It does this by extracting the pointing information from the raw data,\n resulting in fairly reliable groupings (although you can edit these manually, \n see later). \n\n When processing the data, all output from ``reduce`` is saved to an\n accompanying log-file, retaining all information that would normally \n be available to the user from the interactive interface.\n Meanwhile, all emulated commands passed to ``reduce`` are \n recorded in a separate log for each file processed, so it's easy to\n re-run the script manually and tinker with the reduction process.\n \n Additionally, when running commands listed in a script the interface\n quietly parses key information such as flagging percentages, \n rain modulation, and estimated noise, from the ``reduce`` output. \n These are then stored to disk alongside the UVFITs in easily \n machine readable JSON format. \n (These may also be added to the UVFITS header in future.)\n\n \n\nFrom a software engineering point of view:\n Written in Fortran, with an interactive terminal interface, the ``reduce`` \n pipeline takes a little coaxing to co-operate with calling scripts, \n making automated processing of large numbers of files tricky.\n Fortunately, the python library ``pexpect`` provides an easy mechanism \n to emulate human interaction, upon which I've built an interface class.\n Limitations such as a maximum path length of ~32 chars are circumvented\n with a few careful hacks. \n The python logging libraries then allow us provide the user with \n minimal progress information, whilst retaining all possible information \n for debugging and scientific evaluation.\n \nInstallation\n------------\n\n*Requirements*:\n - You will need a working installation of AMI-reduce (naturally)\n - `pexpect \u003chttp://pypi.python.org/pypi/pexpect/\u003e`_ For interfacing with AMI-reduce.\n   (Installed automatically as part of the python setup.) \n - `astropy \u003chttp://astropy.org/\u003e`_ Used for calculating\n   co-ordinate distances, etc.\n   (Installed automatically as part of the python setup.)\n   \nFrom the command line (preferably within a virtualenv):: \n\n git clone git://github.com/timstaley/drive-ami.git\n cd drive-ami\n pip install numpy #Workaround for buggy scipy/numpy combined install.\n pip install .\n\nUsage\n-----\n\nCommand-line scripts are installed along with the package. \nTheir sourcefiles can be found at https://github.com/timstaley/drive-ami/tree/master/bin.\nFor full details, run e.g.::\n\n    driveami_list_rawfiles.py -h\n\nWhere ``-h`` is short for 'help'.\n\nTypical usage is to run ``driveami_list_rawfiles.py`` to build a full\nlisting of available data, followed by ``driveami_filter_rawfile_listing.py`` \nto extract the entries on a desired target. \nFinally, ``driveami_calibrate_rawfiles.py`` actually does the processing using \nAMI-REDUCE.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimstaley%2Fdrive-ami","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimstaley%2Fdrive-ami","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimstaley%2Fdrive-ami/lists"}