{"id":42117659,"url":"https://github.com/lucblassel/fastago","last_synced_at":"2026-01-26T14:11:38.847Z","repository":{"id":46602921,"uuid":"398038512","full_name":"lucblassel/fastago","owner":"lucblassel","description":"CLI to deal with fasta files written in Go","archived":false,"fork":false,"pushed_at":"2021-10-15T13:45:48.000Z","size":104,"stargazers_count":1,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-19T19:44:05.066Z","etag":null,"topics":["bioinformatics","fasta","go","hacktoberfest","sequences"],"latest_commit_sha":null,"homepage":"","language":"Go","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/lucblassel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-19T18:26:49.000Z","updated_at":"2021-10-15T13:45:51.000Z","dependencies_parsed_at":"2022-08-26T20:12:00.375Z","dependency_job_id":null,"html_url":"https://github.com/lucblassel/fastago","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lucblassel/fastago","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucblassel%2Ffastago","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucblassel%2Ffastago/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucblassel%2Ffastago/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucblassel%2Ffastago/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucblassel","download_url":"https://codeload.github.com/lucblassel/fastago/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucblassel%2Ffastago/sbom","scorecard":{"id":602296,"data":{"date":"2025-08-11","repo":{"name":"github.com/lucblassel/fastago","commit":"44ed403647cf2ed46f16110e2a98d86343eeb12f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:9","Info: no jobLevel write permissions found"],"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":"Code-Review","score":0,"reason":"Found 2/26 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":"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/lucblassel/fastago/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/lucblassel/fastago/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/lucblassel/fastago/release.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.1.0 not signed: https://api.github.com/repos/lucblassel/fastago/releases/51431764","Warn: release artifact alpha.0.1 not signed: https://api.github.com/repos/lucblassel/fastago/releases/49552424","Warn: release artifact v0.1.0 does not have provenance: https://api.github.com/repos/lucblassel/fastago/releases/51431764","Warn: release artifact alpha.0.1 does not have provenance: https://api.github.com/repos/lucblassel/fastago/releases/49552424"],"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 'main'"],"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 8 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"}},{"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"}}]},"last_synced_at":"2025-08-21T00:44:37.039Z","repository_id":46602921,"created_at":"2025-08-21T00:44:37.040Z","updated_at":"2025-08-21T00:44:37.040Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28780339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bioinformatics","fasta","go","hacktoberfest","sequences"],"created_at":"2026-01-26T14:11:38.093Z","updated_at":"2026-01-26T14:11:38.802Z","avatar_url":"https://github.com/lucblassel.png","language":"Go","readme":"# Fastago\n\n## Presentation\nThis is a very simple tool to do basic operations on fasta formatted files.   \n\n It is inspired by [goalign](https://github.com/evolbioinfo/goalign), with the main difference that this tool streams the files and executes operations per sequence. This eliminates the need to load the whole file into memory.  \n This tool is not meant to work on alignments, it is simply a collection of useful \"ease of life\" functions when working with fasta files. \n\n## Examples\n```bash\n# Transform all characters to uppercase and save to \"upper.fasta\"\n$\u003e fastago transform upper --input input.fasta --output upper.fasta\n\n# Count sequences in file\n$\u003e fastago stats count --input input.fasta \n\n# Read from stdin\n$\u003e cat input.fasta | fastago stats length  \n\n# chain operations\n$\u003e cat input.fasta | fastago transform lower | fastago stats count\n\n# read compressed file\n$\u003e fastago stats count --input input.fasta.gz\n\n# pipe in compressed data\n$\u003e cat input.fasta.xz | fastago stats count --compression xz\n\n# Extract \"Seq_1\" and \"Seq_2\" sequences from input file\n$\u003e fastago subset --input input.fasta Seq_1 Seq_2 \n```\n\n## Installation\n### Binaries\nGrab a binary from the [releases](https://github.com/lucblassel/fastago/releases/) section.\n\n### Build from source\nMake sure you have [go `1.16` installed](https://golang.org/doc/install). Then clone this repository and build with:  \n`go build` or `go build -o \u003cbinaryName\u003e` if you want to specify another name than `fastago`. \n\n## Commands\n- **addid** [🏳](#addid) : add a prefix or a suffix to sequence names \n- **rename** [🏳](#rename) : rename sequences with either a regex or a map file\n- **stats** : get statistics and information on the sequences\n  - **count** : count sequences in file\n  - **length** [🏳](#length) : get length of sequences in file *(can also output the average/min/max)* \n  - **freqs** [🏳](#freqs) : get average frequencies of bases in file *(can also output frequencies in each sequence)*\n- **subset** [🏳](#subset) : subset the files, keeping only specified sequences. Works with regex, a file of names or positional arguments\n- **transform** : apply transformtaion functions to sequences\n  - **upper** : transform sequence bases to uppercase\n  - **lower** : transform sequence bases to lowercase\n  - **replace base1 base2** : transform sequence replace base1 with base2\n- **help** : show usage message\n- **version** : get current version of fastago\n- **completion** : generate autocompletion script for bash, zsh, fish or powershell *(thank you [cobra](https://github.com/spf13/cobra) 🙏)*\n  \n## General flags\n- `-i` or `--input`: specify the input file. The default is stdin.\n- `-o` or `--output`: specify the output file. The default is stdout.\n- `-c` or `--compression`: specify the compression method of the input file. If the input on stdin is compressed, this flag must be specified for this tool to work. If this flag is not used and `-i` is, fastago will try to guess the compression from the file extension. Supported compression schemes: `gzip (.gz)`, `bzip2 (.bz2)`, `xzip (.xz)`\n- `-w` or `--linewidth`: specify the width at which a sequence will wrap in the output. The default is 80 characters.\n- `-h` or `--help` : display a help message.\n\n\n## Per command flags\n### addid\nYou must specify at least one of the following flagas to run this command: \n - `-p` or `--prefix` to add your identifier to the beginning of each sequence name\n - `s` or `--suffix` to add your identifier to the end of each sequence name\n\n### rename\nThere are 2 ways to rename sequences: \n - The `-m` or `--map` flag allows you to specify a mapping of names to be renamed. On each line of this file you must write the name of the sequence you want to change and the new name, separated by a `tab` character. \n - The `-r` or `--regex` flag, allows you to specify a regular expression that will match a substring in each sequence name. This match will be replace by the value specified with the `-p`or `--replace` flag. If you provide a regular expression you must also provide a replacement string. More info on Go regular expression syntax [here](https://pkg.go.dev/regexp/syntax).\n\n### stats\n#### length \nWith the `-m` or `--mode` flag you can choose which information you want to display: \n - `-m each` : will display the length of each sequence after it's name on a single line\n - `-m average` or `-m mean` will display the average length of all sequences in the file\n - `-m min` or `-m minimum` will display the length of the shortest sequence in the file\n - `-m max` or `-m maximum` will display the length of the longest sequence in the file\n\nThe default value for this flag is `each`.\n\n### subset\nThere are 2 ways to subset your fasta file: \n - You can use the `-n` or `--names` flag to specify a file of names to keep (1 by line)\n - You can use the `r` or `--regex` flag to specify a regular expression that matches the sequences you want to keep. \n\nIf you specify the `-x` or `--exclude` flag you specify the sequences to exclude instead of the sequences to keep.\n\n#### freqs\nWith the `-m` or `--mode` flag you can choose which information you want to display: \n - `-m each` : will display the frequencies in each sequence after it's name on a single line\n\nNot specifying the m flag will output the frequencies averaged over all sequences.\n\n## Contributing\nIf you wish to contribute to this project check out our [contribution guidelines](https://github.com/lucblassel/fastago/blob/main/CONTRIBUTING.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucblassel%2Ffastago","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucblassel%2Ffastago","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucblassel%2Ffastago/lists"}