Multiple sequence alignment (MSA) places related protein sequences into a common alignment so that conserved and variable regions can be identified. In protein structure prediction, the alignment provides evolutionary information that can help a model infer contacts and plausible three-dimensional structures.
MSA generation can be computationally demanding because it searches large sequence databases. Rowan provides the necessary search infrastructure as a managed workflow, so users do not need to operate a private MMseqs2 or ColabFold server.
Rowan's co-folding workflow uses this functionality internally to generate MSAs. When you submit a job to Boltz-2, Boltz-1, or Chai-1 on Rowan, the necessary alignments are generated for you behind the scenes through Rowan's private MSA server; there is no separate MSA step to run first. The standalone MSA workflow described here is for users who want to obtain MSA files to feed into an external structure-prediction pipeline.
Rowan's MSA workflow runs searches through a Rowan-hosted ColabFold MMseqs2 server. It supports both single-chain and paired-chain searches and produces files that can be used directly by co-folding models like Boltz-2, Boltz-1, and Chai-1.
Sequence processing takes place in Rowan's managed compute environment. Protein sequences are not sent to a third-party MSA server, which is important when working with proprietary targets, unpublished designs, or partner data. See Rowan's security practices for more information.
The workflow can produce formats for Rowan's models as well as standard ColabFold output:
| Format | Intended use | Typical output |
|---|---|---|
| Boltz | Boltz-1, Boltz-2, and Boltz-2.1 | seq_0.csv, seq_1.csv, and so on |
| Chai | Chai-1 | aligned.pqt |
| ColabFold | External AlphaFold-derived pipelines | unpaired/ and paired/ .a3m files |
The results are packaged as compressed archives for download. For Boltz outputs, the sequence index in each seq_*.csv file corresponds to the order of the input sequences.
From the web application, submit one or more protein sequences and select the output formats needed by the downstream model. MSA can also be generated through Rowan's Python API:
import tarfile
from pathlib import Path
import rowan
# Set your API key or use the ROWAN_API_KEY environment variable
# rowan.api_key = "rowan-sk..."
folder = rowan.get_folder("examples")
msa_directory = Path("msa_directory")
msa_workflow = rowan.submit_msa_workflow(
initial_protein_sequences=[
"VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR",
"VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH",
],
output_formats=[rowan.MSAFormat.BOLTZ],
name="Boltz paired MSA example",
folder=folder,
)
print(f"View the workflow privately at: https://labs.rowansci.com/msa/{msa_workflow.uuid}")
msa_result = msa_workflow.result()
msa_result.download_files(rowan.MSAFormat.BOLTZ, path=msa_directory)
tar_path = next(msa_directory.glob("*.tar.gz"))
with tarfile.open(tar_path, "r") as tar_ref:
tar_ref.extractall(msa_directory)
tar_path.unlink()
By default, the extracted Boltz files are named seq_<index>.csv. The sequence index matches the order of the input sequences, so each file can be assigned to the corresponding protein in a Boltz input YAML. The downloaded alignment files can also be passed into a local structure-prediction pipeline or used as inputs to Rowan's co-folding workflows. See the MSA API documentation, Rowan's paired MSA example on GitHub, and the tutorial on using Rowan-generated MSAs with Boltz-2 and Chai-1 for more examples.