{ "cells": [ { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "import re\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Parse Clustal Omega alignment output" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def read_clustal_omega(file_name: str) -> dict:\n", " with open(file_name, 'r') as reader:\n", " # skip the first 3 lines\n", " for _ in range(3):\n", " next(reader)\n", "\n", " res = {}\n", " for line in reader:\n", " line = line.strip()\n", " if not line.startswith(' ') and not line.startswith('\\t') and line and not '*' in line:\n", " tokens = re.split(r'[ ]+|\\t', line)\n", "\n", " if tokens[0] not in res:\n", " res[tokens[0]] = list(tokens[1])\n", " else:\n", " res[tokens[0]] = res[tokens[0]] + list(tokens[1])\n", "\n", " return res" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | 0 | \n", "1 | \n", "2 | \n", "3 | \n", "4 | \n", "5 | \n", "6 | \n", "7 | \n", "8 | \n", "9 | \n", "... | \n", "1059 | \n", "1060 | \n", "1061 | \n", "1062 | \n", "1063 | \n", "1064 | \n", "1065 | \n", "1066 | \n", "1067 | \n", "1068 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| KM355915.1 | \n", "A | \n", "T | \n", "G | \n", "G | \n", "A | \n", "T | \n", "T | \n", "A | \n", "T | \n", "C | \n", "... | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "
| KM355864.1 | \n", "A | \n", "T | \n", "G | \n", "G | \n", "A | \n", "T | \n", "T | \n", "A | \n", "T | \n", "C | \n", "... | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "
| KM355862.1 | \n", "A | \n", "T | \n", "G | \n", "G | \n", "A | \n", "T | \n", "T | \n", "A | \n", "T | \n", "C | \n", "... | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "
| KM355863.1 | \n", "A | \n", "T | \n", "G | \n", "G | \n", "A | \n", "T | \n", "T | \n", "A | \n", "T | \n", "C | \n", "... | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "
| KM355861.1 | \n", "A | \n", "T | \n", "G | \n", "G | \n", "A | \n", "T | \n", "T | \n", "A | \n", "T | \n", "C | \n", "... | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "- | \n", "
5 rows × 1069 columns
\n", "| \n", " | A | \n", "C | \n", "G | \n", "T | \n", "- | \n", "R | \n", "S | \n", "K | \n", "Y | \n", "M | \n", "N | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 1 | \n", "0 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 2 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 3 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 5 | \n", "0 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 6 | \n", "0 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 7 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 8 | \n", "0 | \n", "0 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 9 | \n", "0 | \n", "76 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "