{"id":41713163,"url":"https://github.com/kentwait/conspos","last_synced_at":"2026-01-24T21:49:47.562Z","repository":{"id":57585192,"uuid":"99769135","full_name":"kentwait/conspos","owner":"kentwait","description":"Computes the consensus alignment between global, local and sub-global multiple sequence alignments","archived":false,"fork":false,"pushed_at":"2019-04-25T07:37:25.000Z","size":835,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-21T02:17:48.158Z","etag":null,"topics":[],"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/kentwait.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}},"created_at":"2017-08-09T05:41:19.000Z","updated_at":"2024-06-21T02:17:48.159Z","dependencies_parsed_at":"2022-09-10T15:50:51.995Z","dependency_job_id":null,"html_url":"https://github.com/kentwait/conspos","commit_stats":null,"previous_names":["kentwait/consalign"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kentwait/conspos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentwait%2Fconspos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentwait%2Fconspos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentwait%2Fconspos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentwait%2Fconspos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kentwait","download_url":"https://codeload.github.com/kentwait/conspos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentwait%2Fconspos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28737622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T21:19:41.845Z","status":"ssl_error","status_checked_at":"2026-01-24T21:13:38.675Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2026-01-24T21:49:47.027Z","updated_at":"2026-01-24T21:49:47.557Z","avatar_url":"https://github.com/kentwait.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ConsPos\n\n[![Build Status](https://travis-ci.org/kentwait/conspos.svg?branch=master)](https://travis-ci.org/kentwait/conspos)\n[![Coverage Status](https://coveralls.io/repos/github/kentwait/conspos/badge.svg?branch=master)](https://coveralls.io/github/kentwait/conspos?branch=master)\n\nComputes the consensus alignment by comparing alignment patterns\nof global, local and sub-global multiple sequence alignments generated \nby the alignment program [MAFFT][1].\n\n## Quickstart\n\n### Align a set of nucleotide or protein sequences in a single FASTA file\n\n    conspos input.fa \u003e output.aln\n\n### Align multiple FASTA files located in a single folder\n\n    conspos -batch path/to/folder -outdir path/to/save/alignments\n\n## Background\n\nConsPos uses the multiple alignment program [MAFFT][1] to create three\nmultiple sequence alignments from one set of unaligned sequences using\nthree different alignment strategies - global alignment based on the\nNeedleman–Wunsch algorithm, local alignment based on the\nSmith–Waterman algorithm, and local with affine-gap penalty scoring.\n\nEven if these alignments were based on the same set of sequences, the\nresult could be vastly different. Thus, it is important to identify sites\nthat align robustly regardless of the alignment model used. We call\nrobustly aligning sites \"consistent sites\" and sites which exhibit mixed\npatterns \"inconsistent sites\".\n\n## Method\n\nConsPos identifies consistent sites by comparing the all alignment patterns\ngenerated by the three strategies. It marks sites as \"consistent\" if the\nparticular alignment is rendered in all the given strategies. If the\nparticular alignment is not obeserved in all the alignment strategies\nused, that site is marked \"inconsistent\". ConsPos creates a marker sequence\nat the head of the generated FASTA-formatted alignment to mark the status of\neach site.\n\n## Example - consistent sites\n\nHere is an unaligned set of 5 sequences. Our aim is to find out if different\nalignment strategies will affect the resulting alignment.\n\n#### Unaligned\n\n    \u003emel01\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003emel02\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003esim\n    gtaagtgtacacattatttcggatgtgggtcttttgacgacaaagacatttatag\n    \u003eyak\n    gtatgtgtacacgttatttctaatgtgaaacttttaacgacgaagacatttctag\n    \u003eere\n    gtaagtgtacacgttatttctaatgtgaaacttttgacgacaaaagacatttatag\n\nThe following are results of iterative global (G-INSI), local (L-INSI), and\naffine-gap penalty (E-INSI) alignments.\n\n#### Global alignment\n\n    \u003emel01\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003emel02\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003esim\n    gtaagtgtacacattatttcggatgtgggtcttttgacgac-aaagacatttatag\n    \u003eyak\n    gtatgtgtacacgttatttctaatgtgaaacttttaacgac-gaagacatttctag\n    \u003eere\n    gtaagtgtacacgttatttctaatgtgaaacttttgacgacaaaagacatttatag\n\n#### Local alignment\n\n    \u003emel01\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003emel02\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003esim\n    gtaagtgtacacattatttcggatgtgggtcttttgacgac-aaagacatttatag\n    \u003eyak\n    gtatgtgtacacgttatttctaatgtgaaacttttaacgac-gaagacatttctag\n    \u003eere\n    gtaagtgtacacgttatttctaatgtgaaacttttgacgacaaaagacatttatag\n\n#### Affine-gap alignment\n\n    \u003emel01\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003emel02\n    gtaagtgtacacattatttccgatgtgggccttttgacgacaaaagaaatttatag\n    \u003esim\n    gtaagtgtacacattatttcggatgtgggtcttttgacgac-aaagacatttatag\n    \u003eyak\n    gtatgtgtacacgttatttctaatgtgaaacttttaacgac-gaagacatttctag\n    \u003eere\n    gtaagtgtacacgttatttctaatgtgaaacttttgacgacaaaagacatttatag\n\nBased on these three alignments, we can conclude that all sites are consistent\nacross different alignment strategies because the three methods produced the\nexact same alignment.\n\n#### ConsPos alignment\n\nThis is the summarized alignment produced by ConsPos. The first sequence\nrepresents the status of each site after comparing between the different\nstrategies. Here, consistent sites are marked by \"C\" and inconsistent sites\nare marked by \"N\". Because all sites are consistent, all characters in the\nmarker sequence are \"C\".\n\n    \u003emarker\n    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n    \u003emel01\n    GTAAGTGTACACATTATTTCCGATGTGGGCCTTTTGACGACAAAAGAAATTTATAG\n    \u003emel02\n    GTAAGTGTACACATTATTTCCGATGTGGGCCTTTTGACGACAAAAGAAATTTATAG\n    \u003esim\n    GTAAGTGTACACATTATTTCGGATGTGGGTCTTTTGACGAC-AAAGACATTTATAG\n    \u003eyak\n    GTATGTGTACACGTTATTTCTAATGTGAAACTTTTAACGAC-GAAGACATTTCTAG\n    \u003eere\n    GTAAGTGTACACGTTATTTCTAATGTGAAACTTTTGACGACAAAAGACATTTATAG\n\n## Example - inconsistent sites\n\nWhat happens if the alignment strategies produce different results?\nThe following example shows how alignments can change based on the\nmethod used.\n\n#### Unaligned\n\n    \u003emel01\n    gtaagatagtggcagattaattattagagtatctgcaacatgaatattatcttaacag\n    \u003emel02\n    gtaagatagtggcagattaattattagagtatctgcaacatgaatattatcttaacag\n    \u003esim\n    gtaagataatggcagattaaacattagattatctgcaacaagaatattatctcgacag\n    \u003eyak\n    gtaagtctgtggcaggttaataattattataatatttgcaataacaatattttctgaacag\n    \u003eere\n    gtaagccagtggcaggttaataatcagtatatttgcaacaacaataattcctcaatag\n\n#### Global alignment \n\n    \u003emel01\n    gtaagatagtggcagat---taattattagagtatctgcaacatgaatattatcttaacag\n    \u003emel02\n    gtaagatagtggcagat---taattattagagtatctgcaacatgaatattatcttaacag\n    \u003esim\n    gtaagataatggcagat---taaacattagattatctgcaacaagaatattatctcgacag\n    \u003eyak\n    gtaagtctgtggcaggttaataattattataatatttgcaataacaatattttctgaacag\n    \u003eere\n    gtaagccagtggcaggt---taataatcagtatatttgcaacaacaataattcctcaatag\n\n#### Local alignment\n\n    \u003emel01\n    gtaagatagtggcagat---taattattagagtatctgcaacatgaatattatcttaacag\n    \u003emel02\n    gtaagatagtggcagat---taattattagagtatctgcaacatgaatattatcttaacag\n    \u003esim\n    gtaagataatggcagat---taaacattagattatctgcaacaagaatattatctcgacag\n    \u003eyak\n    gtaagtctgtggcaggttaataattattataatatttgcaataacaatattttctgaacag\n    \u003eere\n    gtaagccagtggcaggt---taataatcagtatatttgcaacaacaataattcctcaatag\n\n#### Affine-gap alignment\n\n    \u003emel01\n    gtaagatagtggcagattaattattaga---gtatctgcaacatgaatattatcttaacag\n    \u003emel02\n    gtaagatagtggcagattaattattaga---gtatctgcaacatgaatattatcttaacag\n    \u003esim\n    gtaagataatggcagattaaacattaga---ttatctgcaacaagaatattatctcgacag\n    \u003eyak\n    gtaagtctgtggcaggttaataattattataatatttgcaataacaatattttctgaacag\n    \u003eere\n    gtaagccagtggcaggttaataatcagt---atatttgcaacaacaataattcctcaatag\n\nIn this case, the affine-gap method produced a different alignment compared\nto the global and local alignments. Thus we observe that gap moves around the\nmiddle portion of the alignment while the rest of the alignment remains the\nsame.\n\n#### ConsPos alignment\n\n    \u003emarker\n    CCCCCCCCCCCCCCCCCNNNNNNNNNNNNNNCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n    \u003emel01\n    gtaagatagtggcagattaattattaga---gtatctgcaacatgaatattatcttaacag\n    \u003emel02\n    gtaagatagtggcagattaattattaga---gtatctgcaacatgaatattatcttaacag\n    \u003esim\n    gtaagataatggcagattaaacattaga---ttatctgcaacaagaatattatctcgacag\n    \u003eyak\n    gtaagtctgtggcaggttaataattattataatatttgcaataacaatattttctgaacag\n    \u003eere\n    gtaagccagtggcaggttaataatcagt---atatttgcaacaacaataattcctcaatag\n\nConsPos detects these inconsistencies between alignments and marks these\ninconsistent sites with the character \"N\" in the marker sequence.\n\n## Installation\n\n### Requirements\n\n- MAFFT must be installed in your system. ConsPos does not include MAFFT.\n- MAFFT must be included in the $PATH variable and executable from the shell.\n  This means that the program can be started in any directory by simplying\n  typing `mafft` from the command line.\n\nConsPos is available as a compiled binary for Mac and Linux operating\nsystems.\n\n- [Mac][2] - Compiled and tested on MacOS 10.11.6\n- [Linux][3] - compiled and tested on Ubuntu Linux\n\nFor other systems, its possible to compile the program from source\nusing `go build`. Note that you must have [Go][4] installed in your system\nto compile this program.\n\n## Links\n\n- [MAFFT download page][1]\n- [ConsPos for MacOS][2]\n- [ConsPos for Linux (compiled on Ubuntu 16.04 x86-64)][3]\n\n[1]: http://mafft.cbrc.jp/alignment/software/\n[2]: https://github.com/kentwait/conspos/releases/download/v1.0.1/conspos\n[3]: https://github.com/kentwait/conspos/releases/download/v1.0.1/conspos_linux_amd64\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentwait%2Fconspos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkentwait%2Fconspos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentwait%2Fconspos/lists"}