{"id":37615331,"url":"https://github.com/dessimozlab/fastoma","last_synced_at":"2026-01-16T10:30:09.923Z","repository":{"id":49445534,"uuid":"515201322","full_name":"DessimozLab/FastOMA","owner":"DessimozLab","description":"FastOMA is a scalable software package to infer orthology relationship.","archived":false,"fork":false,"pushed_at":"2025-12-22T01:07:25.000Z","size":2676,"stargazers_count":86,"open_issues_count":8,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-22T03:51:56.690Z","etag":null,"topics":["bioinformatics","comparative-genomics","evolution","orthology"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DessimozLab.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-18T13:42:51.000Z","updated_at":"2025-12-19T22:46:27.000Z","dependencies_parsed_at":"2025-12-16T16:00:41.509Z","dependency_job_id":null,"html_url":"https://github.com/DessimozLab/FastOMA","commit_stats":{"total_commits":476,"total_committers":3,"mean_commits":"158.66666666666666","dds":"0.13235294117647056","last_synced_commit":"4a495fbb837af311762159b910aaae3da7212c22"},"previous_names":["sinamajidian/fastoma"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/DessimozLab/FastOMA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimozLab%2FFastOMA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimozLab%2FFastOMA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimozLab%2FFastOMA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimozLab%2FFastOMA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DessimozLab","download_url":"https://codeload.github.com/DessimozLab/FastOMA/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimozLab%2FFastOMA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"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","comparative-genomics","evolution","orthology"],"created_at":"2026-01-16T10:30:06.592Z","updated_at":"2026-01-16T10:30:09.784Z","avatar_url":"https://github.com/DessimozLab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"FastOMA\n======\nFastOMA is a scalable software package to infer orthology relationship. \n\nWant to learn more about FastOMA and try it online, check out [FastOMA academy](https://omabrowser.org/oma/academy/module/fastOMA) and FastOMA talk at ISMB 2023 on [YouTube](https://youtu.be/KGetTUMDvlA?si=efeqKKarwpIFgXyN)! And read FastOMA's publication in [Nature Methods](https://www.nature.com/articles/s41592-024-02552-8). \n\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"300px\" src=\"./archive/fastOMA_logo.png\" alt=\"FastOMA logo\" /\u003e\n\u003c/div\u003e\n\n# Input and Output: \n\n### Input: \n1. Sets of protein sequences in FASTA format (with `.fa` extension) in the folder `proteome`.\nThe name of each fasta file is the name of species. Please make sure that the name of fasta records do not contain special characters including `||`.\n\n2. Rooted Species tree in [newick format](http://etetoolkit.org/docs/latest/tutorial/tutorial_trees.html#reading-newick-trees).\nA rough species tree is enough, and it does not need to be binary (fully resolved). Besides, we do not need branch lengths. You could use the NCBI tree via ete3 package via `cat list_taxanomic_id.txt | ete3 ncbiquery --tree \u003e species_tree.nwk` (see [this](http://etetoolkit.org/documentation/ete-ncbiquery/)). \nNote that the name of leaves of the tree (species name) should be the same as the file name of FASTAs (without `.fa` extension) (item 1). \nAnd there shouldn't be any repeated names in leaves names and internal node names. The tree should not be with quotation.  \n\n3. The omamer database which is available for download from the [OMA browser](https://omabrowser.org/oma/current/).\nThe FastOMA workflow will automatically download the omamer database for LUCA (7.7 GB) if the argument `--omamer_db` is not\nprovided on the command line. The argument can be a local file (e.g. a previously downloaded omamer database file) or \na URL to an alternative omamer database, e.g. a subset of the LUCA database which is smaller, like Primates with this [link](https://omabrowser.org/All/Primates.h5) which is ~100MB. However, to have a broader reference gene families, we recommend to use the LUCA database if possible. \n\n\nYou can see an example in the [testdata](https://github.com/DessimozLab/FastOMA/tree/main/testdata/in_folder) folder.\n```\n$ ls proteome\nAQUAE.fa  CHLTR.fa  MYCGE.fa\n$ cat species_tree.nwk\n((AQUAE,CHLTR)inter1,MYCGE)inter2;\n```\n\nBesides, the internal node should not contain any special character (e.g. `\\`  `/` or `space`).\nThe reason is that FastOMA write some files whose names contain the internal node's name. \nIf the species tree does not have label for some/all internal nodes, FastOMA labels them sequentially. \nThe updated tree will be stored in the output folder named as `species_tree_checked.nwk`.\n\n\n\n### Main output:\nOrthology information as HOG structure in [OrthoXML](https://orthoxml.org/) format\nwhich can be used with [PyHAM](https://github.com/DessimozLab/pyham). Learn more about HOG [here](https://youtu.be/5p5x5gxzhZA?si=YxP-1VgKSH5e_wMS) and [here](https://omabrowser.org/oma/homologs/).\nThe details of output are described [below](#expected-output-structure-for-test-data).\n\nAdditionally, FastOMA generates TSV files for rootlevel HOGs (deepest level) and \nmarker genes groups (one gene per species maximum) together with dumps of fasta \nfiles (one per rootlevel HOG / marker gene). \n\n\n# How to run FastOMA\n\nFastOMA is implemented as a [nextflow-workflow](https://www.nextflow.io/). As such, FastOMA can be run without \nany installation steps given the system supports running either docker containers, singularity containers or has conda \ninstalled.\n\n```bash\nnextflow run dessimozlab/FastOMA -profile docker  --input /path/to/in_folder --output_folder /path/to/out_folder \n```\nYou could also add specific version to be used by adding `-r v0.5.1` to the command line. Without any `-r` argument, \nalways the latest available release will be used. With `-r dev` the latest development release can be used.\n\n\u003e [!WARNING]\n\u003e Nextflow caches pulled workflows. Git branches such as `dev` are therefore not automatically updated. You might need\n\u003e to first run `nextflow drop dessimozlab/FastOMA` before pulling again.\n\nNextflow will automatically fetch the [dessimozlab/FastOMA](https://github.com/dessimozlab/FastOMA) repository and starts \nthe `FastOMA.nf` workflow. The `-profile` argument must be used to specify the profile to use. We support `docker`, \n`singularity` and `conda` which then automatically set up the necessary tools by downloading the required containers or creating \na conda environment with the necessary dependencies.\n\nSee also [How to install FastOMA](#how-to-install-FastOMA) for additional ways how to install and run FastOMA. Note also the \nsection on the different [profiles](#using-different-nextflow-profiles).\n\nFor more informaton on how Nextflow and Docker work together, see [here](https://www.nextflow.io/blog/2016/docker-and-nextflow.html).  \n\n### More details on how to run\nWe provide for every commit of the repository a docker image for FastOMA on dockerhub. You can specify the container as \npart of the nextflow command with the parameter `container_version`. If you want to use the container of the current \ngit checkout version, you can specify this in the following way:\n\n```bash\nnextflow run FastOMA.nf -profile docker \\\n    --container_version \"sha-$(git rev-list --max-count=1 --abbrev-commit HEAD)\" \\\n    --input testdata/in_folder \\\n    --output_folder myresult/\n```\n\n\n# How to install FastOMA\n\nThere are four ways to run/install FastOMA detailed below:\n\n### 1. Running workflow directly\n\nThe FastOMA workflow can be run directly without any installation using nextflow's ability to fetch a workflow from github. A specific version can be selected by specifying the `-r` option to nextflow to select a specific version of FastOMA:\n\n```bash\nnextflow run dessimozlab/FastOMA -r v0.5.1 -profile conda \n```\n\nThis will fetch version v0.5.1 from github and run the FastOMA workflow using the conda profile. See section [How to run fastOMA](#how-to-run-fastoma). \n\n### 2. Cloning the FastOMA repo and running from there\n\n```bash\ngit clone https://github.com/DessimozLab/FastOMA.git\ncd FastOMA\nnextflow run FastOMA.nf -profile docker --container_version \"sha-$(git rev-list --max-count=1 --abbrev-commit HEAD)\" ...\n```\n\n### 3. Manual installation (for development) in python virtual environment\n\n- install [mafft](https://mafft.cbrc.jp/alignment/software) and [FastTree](http://www.microbesonline.org/fasttree/) and ensure the software is accessible on the PATH.\n- install python \u003e= 3.9\n- create virtual environment, activate it and install FastOMA with additional extras inside it:\n  ```bash\n  python3 -m venv .venv\n  source .venv/bin/activate\n  pip install FastOMA[report,nextflow] \n  ```\n  You can also install FastOMA from a clone of the repository in editable mode with `pip install -e .[report,nextflow]`.\n\n- run pipeline including with some testdata (For more details, see the section [How to run FastOMA on the test data](https://github.com/DessimozLab/fastoma?tab=readme-ov-file#how-to-run-fastoma-on-the-test-data) )\n  ```bash\n  nextflow run FastOMA.nf -profile standard --input testdata/in_folder --output_folder output -with-report\n  ```\n\n\n### 4. Manual installation in conda/mamba environment\nIn the FastOMA repository, we provide a conda environment file that can be used to generate a conda / mamba \nenvironment. \n\nFor Conda installation you need to first download the Miniconda installer from [this link](https://docs.anaconda.com/free/miniconda/). \n\nFor MacOS:\n```\ncurl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o Miniconda3.sh\nbash Miniconda3.sh\n```\n\nFor Linux\n```\nwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3.sh\nbashMiniconda3.sh\n```\n\nThen follow the instruction on the terminal. Finally, close and re-open the terminal and run\n```\nconda env create -n fastoma python=3.9 --file environment-conda.yml\nconda activate fastoma\n```\nThen, clone and install fastOMA using\n```\ngit clone https://github.com/DessimozLab/FastOMA.git\n\n```\n\n\n\nAlternatively, you could use Mamba instead of Conda (which needs its own [installation](https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html)). \nNote that it is not encouraged to have both Mamba and conda on one system, [more info](https://stackoverflow.com/questions/76760906/installing-mamba-on-a-machine-with-conda).\n\n```\nmamba env create -n FastOMA -f environment-conda.yml\nmamba activate FastOMA\n```\n\nAfterwards, you can run the workflow using nextflow (which is installed as part of the conda environment)\n\n```\nnextflow run FastOMA.nf -profile standard|slurm --input /path/to/input --output_folder /path/to/output\n```\nNote that you should use either the profile `standard` or `slurm` such the nextflow executor will use the activated environment.\n\n\n## Using different nextflow profiles\n\nNextflow provides support to run a workflow on different infrastructures. Selection of this is done using the `-profile` argument. \nFor FastOMA, we've implemented the following profiles below. Additional ones can also be created by specifying them in the `nextflow.config` file.\n\n### Docker\nWith `-profile docker` one can use docker as an execution platform. It requires docker to be installed on the system (see [here](https://docs.docker.com/engine/install/)). The pipeline \nwill automatically fetch missing containers from dockerhub (e.g. dessimozlab/fastoma) if not found locally. By default, the version\n`latest` is used by the pipeline, however we provide images for any branch and release as well; even for every recent commit.\nOne can select the desired container via the `--container_version` argument\n\n```\nnextflow run FastOMA.nf -profile docker \\\n    --container_version \"sha-$(git rev-list --max-count=1 --abbrev-commit HEAD)\" \\\n    --input testdata/in_folder \\\n    --output_folder myresult/\n```\nThis will use the container that is tagged with the current commit id. Similarly, one could also use \n`--container_version \"0.5.1\"` to use the container with version `dessimozlab/fastoma:0.5.1` from dockerhub. Check the latest version on the [DockerHub](https://hub.docker.com/r/dessimozlab/fastoma/tags).\n\n### Singularity\nSince Docker needs administrator privileges (root access), [Singluarity](https://apptainer.org/index.html) (a.k.a Apptainer) is a good alternative. This can be installed using [Conda](https://anaconda.org/conda-forge/singularity) with `conda install conda-forge::singularity`. However, in most of the academic HPC cluster, singluarity is already installed and can be called with `module load`.\nWith `-profile singularity` singularity containers will be used to run the workflow. It requires singularity to \nbe installed on your system. The containers are automatically pulled from dockerhub and converted to singularity \ncontainers. The same options as for [Docker](#docker) will be available.\n\n### Conda\nwith `-profile conda`, the FastOMA workflow will create a conda environment which contains the necessary \ndependencies and use this environment to run the workflow steps. Note that this environment does not need \nto be activated manually. If you prefer to install the dependencies inside a conda or mamba environment \nyourself, this can be achieved as described in [](#manual-installation-for-development-in-python-virtual-environment).\n\n### Slurm (with singularity/conda)\nOn a HPC system you typically run processes using a scheduler system such as slurm or LSF. We provide \na basic profile for slurm `-profile slurm` to run FastOMA with [slurm](https://slurm.schedmd.com/overview.html) as a scheduler system.\nNote that multiple profiles can be combined, e.g. `-profile slurm,singularity`, or `-profile slurm,conda`.\n\nFor many HPC systems, there exists already a nf-core profile, which can be directly used with FastOMA. Check the \navailable profiles interactively [here](https://nf-co.re/configs/) or on [github](https://github.com/nf-core/configs/tree/master/conf).\nIf you found one for your HPC, you can use it directly with `-profile \u003cprofile_name\u003e`, e.g. `-profile ethz_euler`\n\nIf none of those profiles fit directly your needs, you can create your own profile file somewhere on your system and \nspecify it with the `-c \u003cpath_to_profile_file\u003e` argument. The nf-core profiles should give you a \ngood overview of what is possible, together with the \n[nextflow documentation on executors](https://www.nextflow.io/docs/latest/executor.html).\n\n\n# How to run FastOMA on the test data\nNote : If you are using FastOMA with Docker or other profiles, check out the difference [here](#using-different-nextflow-profiles).   \n\nFirst, cd to the `testdata` folder and download the omamer database (optional) and change its name to `omamerdb.h5`.\n```\ncd FastOMA/testdata\nwget https://omabrowser.org/All/Primates.h5     # 105MB\nmv Primates.h5    in_folder/omamerdb.h5 \n```\n(This is for the test however, I would suggest downloading the `LUCA.h5` instead of `Primates.h5` for your real analysis.).\nCheck the item 2 in the [input section](https://github.com/sinamajidian/FastOMA#input) for details.\n\nNow we have such a structure in our testdata folder.\n``` \n$ tree ../testdata/in_folder\n   ├── omamerdb.h5\n   ├── proteome\n   │   ├── AQUAE.fa\n   │   ├── CHLTR.fa\n   │   └── MYCGE.fa\n   └── species_tree.nwk\n```\n\nFinally, run the package using nextflow as below:\n```\n# cd FastOMA/testdata\nnextflow run ../FastOMA.nf  \\\n         --input in_folder  \\\n         --omamer_db in_folder/omamerdb.h5 \\\n         --output_folder out_folder \\\n         --report \\\n         -profile standard\n```\n\n\n\nNote that to have a comprehensive test, we set the default value of needed cpus as 10. \nIf you face `.command.sh: line 2: papermill: command not found`, note that the orthology inference is finished and you have them in output folder and you may want to install `pip install -e .[report]` to have `papermill` generating the report and run the last step.\n\n\n## Expected log for test data\nAfter few minutes, the run for test data finishes. \n```\n[] process \u003e check_input ()     [100%] 1 of 1 ✔\n[] process \u003e omamer_run ()      [100%] 3 of 3 ✔\n[] process \u003e infer_roothogs ()  [100%] 1 of 1 ✔\n[] process \u003e batch_roothogs ()  [100%] 1 of 1 ✔\n[] process \u003e hog_big ()         [100%] 1 of 1 ✔\n[] process \u003e hog_rest ()        [100%] 2 of 2 ✔\n[] process \u003e collect_subhogs () [100%] 1 of 1 ✔\n```\n\nThe first step is to run [OMAmer](https://github.com/DessimozLab/omamer) for finding the putative gene families (putative rootHOG) based on  kmer similarity.\nNext, we write them in FASTA files, which could be used to run next steps in parrallel on each FASTA gene family.\nThen, to have similar size jobs, we batch these FASTA files either as one big roothog (per job `hog_big`) or a few hundreds together as one job `hog_rest`.\nThese are decided based on the FASTA file size. Finally, once all jobs of `hog_big` and `hog_rest` are done, we `collect_subhog` and save all outputs.  \n\nIf the run interrupted, by adding `-resume` to the nextflow commond line, you might be able to continue your previous nextflow job.\n\nPro-tip. Nextflow creat a folder named `work` for storing its temprorary files. The characters in the bracket of the nextflow log (not shown here) are the short form of the folder address in `work/`\nwhere the last task of such job were done.\ne.g `[3f/2efg] process \u003e check_input (1)` you can `cd work/3f/2efg` then use tab to complete the folder name, then you can see the temporary files of `check_input` task. In such folder there are some hidden files `.command.log/sh/run`.f\n\n\n## Expected output structure for test data\n\nThe output of FastOMA includes several output files regarding orthology inference\n(`OrthologousGroups.tsv`, `RootHOGs.tsv`, `FastOMA_HOGs.orthoxml`, `orthologs.tsv.gz` and `species_tree_checked.nwk`),\na jupyter notebook based report about the dataset (`report.ipynb` and `report.html`) and four folders\n(`hogmap`, `OrthologousGroupsFasta`, `RootHOGsFasta` and `stats`).\n  \nThe `hogmap` folder includes the output of [OMAmer](https://github.com/DessimozLab/omamer); each file corresponds to an input proteome.\nThe folder `OrthologousGroupsFasta` includes FASTA files, and all proteins inside each FASTA file are orthologous to each other. \nThese could be used as gene markers for species tree inference with refined resolution, [more info](https://f1000research.com/articles/9-511).\nNote that OrthologousGroups are groups of strict orthologs, with at most 1 representative per species.\nHierarchical Orthologous Groups are groups of orthologs and paralogs, defined at each taxonomic level. The file \n`FastOMA_HOGs.orthoxml` contains all the nested groups in orthoxml format. The `RootHOGs.tsv` and `RootHOGsFasta/` files contains\nthe groups at the deepest level.\n\nSo, following files and folders should appear in the folder `out_folder` which was the argument.\n```\n$tree out_folder\n├── FastOMA_HOGs.orthoxml\n├── hogmap\n│   ├── AQUAE.fa.hogmap\n│   ├── CHLTR.fa.hogmap\n│   └── MYCGE.fa.hogmap\n├── OrthologousGroupsFasta\n│   ├── OG_0000001.fa.gz\n│   ├── OG_0000002.fa.gz\n│   ├── OG_0000003.fa.gz\n│         ├ ...\n├── OrthologousGroups.tsv\n├── orthologs.tsv.gz\n├── phylostratigraphy.html\n├── report.html\n├── report.ipynb\n├── RootHOGsFasta\n│   ├── HOG:0000001.fa.gz\n│   ├── HOG:0000002.fa.gz\n│   ├── HOG:0000003.fa.gz\n│   ├ ...\n├── RootHOGs.tsv\n├── species_tree_checked.nwk\n└── stats\n    ├── pipeline_dag_\u003cdate\u003e.html\n    ├── report_\u003cdate\u003e.html\n    ├── timeline_\u003cdate\u003e.html\n    └── trace_\u003cdate\u003e.txt\n```\namong which `FastOMA_HOGs.orthoxml` is the final output in [orthoXML format](https://orthoxml.org/0.4/orthoxml_doc_v0.4.html). Its content looks like this\n\n```\n\u003c?xml version='1.0' encoding='utf-8'?\u003e\n\u003corthoXML xmlns=\"http://orthoXML.org/2011/\" origin=\"FastOMA 0.1.6\" originVersion=\"2024-01-10 17:36:45\" version=\"0.5\"\u003e\n  \u003cspecies name=\"MYCGE\" taxonId=\"5\" NCBITaxId=\"0\"\u003e\n    \u003cdatabase name=\"database\" version=\"2023\"\u003e\n      \u003cgenes\u003e\n        \u003cgene id=\"1000000001\" protId=\"sp|P47500|RF1_MYCGE\" /\u003e\n        \u003cgene id=\"1000000002\" protId=\"sp|P13927|EFTU_MYCGE\" /\u003e\n        \u003cgene id=\"1000000003\" protId=\"sp|P47639|ATPB_MYCGE\" /\u003e\n            \n ...\n    \u003corthologGroup id=\"HOG:0000001_1\" taxonId=\"1\"\u003e\n      \u003cscore id=\"CompletenessScore\" value=\"1.0\" /\u003e\n      \u003cproperty name=\"OMAmerRootHOG\" value=\"HOG:D0900115\" /\u003e\n      \u003cproperty name=\"TaxRange\" value=\"inter2\" /\u003e\n      \u003cgeneRef id=\"1000000005\" /\u003e\n      \u003corthologGroup id=\"HOG:0000001_2\" taxonId=\"2\"\u003e\n        \u003cscore id=\"CompletenessScore\" value=\"1.0\" /\u003e\n        \u003cproperty name=\"TaxRange\" value=\"inter1\" /\u003e\n        \u003cgeneRef id=\"1002000010\" /\u003e\n        \u003cgeneRef id=\"1001000009\" /\u003e\n      \u003c/orthologGroup\u003e\n    \u003c/orthologGroup\u003e\n  \u003c/groups\u003e\n\u003c/orthoXML\u003e\n```\n\nIf you are interested in specific gene in specific species, and wants to know \nproteins that are in the gene family, you can find its protein ID in the file `RootHOGs.tsv` using grep. \nThe first column of this file `RootHOGs.tsv` shows the rootHOG ID which could be searched on the [OMA browser](https://omabrowser.org/). \nNote that some of the input genes might not appear in this file. \n\nTo find list of genes that are orthologous to your gene of interest, you can search in the file `OrthologousGroups.tsv` \nwhere each line is an orthologous group. Each line corresponds to a FASTA file in the folder ` OrthologousGroupsFasta`. \n\n\nNote that some of the output files are symlink (a.k.a a symbolic link), linked to files in the folder `work` created by nextflow pipeline. \nThis means that if you remove or rename the `work` and its parents folder, you will not have access to the output files anymore. \n\nIf you are working on a large scale project, you may need to change the limitation on the number of files opened in linux using `ulimit -n 271072`. \n\nYou can learn about OMA and FastOMA on [OMA Academy](https://omabrowser.org/oma/academy/).  \n\n\nRegarding temp folders:\nThe folder `temp_output` includes `gene_id_dic_xml.pickle` storing mapping between gene name and gene integer ID used for orthoxml format,\n`temp_omamer_rhogs` a folder that includes the fasta files of omamer-based gene families (described [here](https://github.com/DessimozLab/FastOMA#under-the-hood-what-are-fastoma-gene-families)).  \n\nThe folder `temp_pickles` includes the pickle file of orthoxml object which are final product of FastOMA for each gene family stored in `temp_omamer_rhogs`. \nThese file can be empty when the gene family doesn't end up as a group (usually with size of 5 Byte). Gene trees and MSAs will be stored in `temp_pickles` \nif activated (in `_config.py` and fastOMA installed with `pip -e` ). \n\n\n\n### Using omamer's output\nThe first step of the FastOMA pipele is to run [OMAmer](https://github.com/DessimozLab/omamer). If you already have the hogmap files, you can put them in the `in_folder/hogmap_in`.\nThen your structure of files will be \n```\n$ tree ../testdata/\n├── in_folder\n│   ├── hogmap_in\n│   │   ├── CHLTR.fa.hogmap\n│   │   ├── MYCGE.fa.hogmap\n│   ├── omamerdb.h5\n│   ├── proteome\n│   │   ├── AQUAE.fa\n│   │   ├── CHLTR.fa\n│   │   └── MYCGE.fa\n│   └── species_tree.nwk\n└── README.md\n```\nIn this case, FastOMA uses two hogmap files and only run omamer for the `AQUAE.fa`. Then continue the rest of pipeline. \nLet's save the planet together with \n[green computational Biology](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1009324). \n\n\n### Run on a cluster \nFor running on a SLURM cluster, you can add the slurm profile argument:  `-profile slurm`  to the command line.\n\n```\n# cd FastOMA/testdata\n# rm -r out_folder work          # You may remove stuff from previous run\n# ls ../FastOMA.nf \n\nnextflow ../FastOMA.nf -profile slurm \\\n   --input in_folder \\\n   --output_folder out_folder\n```\n\nYou may need to re-run nextflow command line by adding `-resume`, if the allocated time is not enough for your dataset.\n\nYou may need to increase the limit of number of opened file handles in your system with `ulimit -n 131072` or higher as nextflow generates hundreds of files depending on the size of your input dataset.\n\n\n## Handle splice files\nYou can put the splice files in the folder `in_folder/splice`. They should be named as `species_name.splice` for each species.\nFor each row of different isoforms of a protein, FastOMA selects the best one (based on OMAmer family score and isoform length). \nWe also use those proteins that are not in the splice file but present in the FASTA proteome file. \n```\n$ head HUMAN.splice \nHUMAN00001;HUMAN00002;HUMAN00003;HUMAN00004;HUMAN00005;HUMAN00006\nHUMAN00007;HUMAN00008;HUMAN00009;HUMAN00010;HUMAN00011;HUMAN00012;\nHUMAN00022;HUMAN00023;HUMAN00024;\nHUMAN00027;HUMAN00028;HUMAN00029;HUMAN00030;HUMAN00031;HUMAN00032;HUMAN00033\nHUMAN00034;HUMAN00035\nHUMAN00036\nHUMAN00037\n```\n\nTo find the selected isoforms you can follow the instruction [here](https://github.com/DessimozLab/FastOMA/wiki/How-to-find-the-selected-isoforms).\n\n## Under the hood: what are FastOMA gene families?\nFirstly, those proteins that are mapped to the same OMAdb rootHOG (e.g. HOG:D0066142 for HOG:D0066142.1a.1a) by OMAmer are \ngrouped together to create query rootHOGs (no protein from OMAdb is stored), from now on called rootHOG.\nThen, as OMAmer provides us with alternative mapping, we try to merge those rootHOGs (high chance of split HOGs) that have \nmany shared mappings. The query proteins of these rootHOGs will be stored in only one rootHOG. \nThese will be saved as fasta files in `out_folder/temp_output/temp_omamer_rhogs` with file names format `HOG_LXXXXX.fa`. `L` is the release ID of OMADB. \nReplacing `_` with ':' gives the HOG ID which could be investigated in the [OMA Browser](https://omabrowser.org/oma/hog/HOG:D0114562/Sar/iham/).\n\nThere are some cases that only one protein is mapped to one rootHOG, called singleton (which is not good, we are hoping for orthologous groups/pairs).\nUsing alternative OMAmer mappings, FastOMA tries to put these to other rootHOGs. Still some will be left. \n\nFastOMA uses the [linclust](https://github.com/soedinglab/MMseqs2#cluster) software to find new gene families on the set of unmapped proteins and singletons.\nThese will be saved as fasta files in `out_folder/temp_output/temp_omamer_rhogs` with a file names format as `HOG_clustXXXXX.fa`.\nThese are initial gene families that are used in `infer_subhogs` step, which could be split into a few smaller gene families. \n\n## Cite us\nCitation:  Majidian, Sina, Yannis Nevers, Ali Yazdizadeh Kharrazi, Alex Warwick Vesztrocy, Stefano Pascarelli, David Moi, Natasha Glover, Adrian M. Altenhoff, and Christophe Dessimoz. \"Orthology inference at scale with FastOMA.\" Nature Methods (2025). https://www.nature.com/articles/s41592-024-02552-8  [Preprint](https://www.biorxiv.org/content/10.1101/2024.01.29.577392v1.full). \n\n\n## Change log\n- Update  v0.5.1:\n  - Bug with input handling fixed.\n  - upgraded github actions for CI/CD.\n- Update  v0.5.0:\n  - renamed input_folder parameter to input. input accepts now also (remote) archive tarball files.\n  - better configuration setup (close to nf-core)\n  - improved resource allocation for nextflow\n  - improved handling of alternative splicing variants in reporting\n  - adding test profile and nf-test based CI checks\n- Update  v0.4.1:\n  - bump omamer to 2.1.2 (fixes a bug in the version 2.1.1, see [#74](https://github.com/DessimozLab/omamer/issues/74)\n- Update  v0.4.0:\n  - Improvements for nextflow: alternative version selection, README updates\n  - Split HOG and sampling improvements\n  - ensure orthologGroup at the MRCA of all genes in the group\n  - Docker improvements, additional labels and tools\n  - New gene families with mmseqs easy-cluster if mmseqs is installed\n  - Improved input checking\n  - Merge rootHOGs, improved handling of singleton using omamer multi-hits\n  - Various documentation and usability updates\n- Update  v0.3.5:\n  - Fixes an issue with reaching the maximum recursion limit. (#31)\n  - Fixes a problem with parallel execution for big families. (#44)\n- Update  v0.3.4:\n  - Fixing a bug in marker gene groups extraction. Before, more than one gene per species were possible\n- Update  v0.3.3: improvements for nextflow (selection of alternative versions) and updates on readme\n- Update  v0.3.1: spliting HOG and sampling\n- Update  v0.1.6: adding dynamic resources, additional and improved output\n- Update  v0.1.5: docker, add help, clean nextflow \n- Update  v0.1.4: new gene families with linclust if mmseqs is installed, using quoted protein name to handle species chars, check input first \n- Update  v0.1.3: merge rootHOGs and handle singleton using omamer multi-hits\n- Update  v0.1.2: improve rootHOG inference, splice, OMAmerv2 with multi-hits\n- Release v0.1.0: improve nextflow pipeline and outputs. \n- prelease v.0.0.6: use `--fragment-detection` for `infer-subhogs` and `--low-so-detection --fragment-detection`\n- prelease v.0.0.6: using input hogmpa\n- prelease v.0.0.5: adding pip setup.py \n- prelease v.0.0.4: simple nextflow\n- prelease v.0.0.3: with dask\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessimozlab%2Ffastoma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdessimozlab%2Ffastoma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessimozlab%2Ffastoma/lists"}