├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── THIRD_PARTY_LICENSES ├── alignment ├── AlignSubPeptides.py ├── AlignUtils.py ├── ApiUtils.py ├── PyHELM_simple.py ├── ROCS ├── __init__.py ├── api.py ├── mafft │ ├── bin │ │ ├── einsi │ │ ├── fftns │ │ ├── fftnsi │ │ ├── ginsi │ │ ├── linsi │ │ ├── mafft │ │ ├── mafft-distance │ │ ├── mafft-einsi │ │ ├── mafft-fftns │ │ ├── mafft-fftnsi │ │ ├── mafft-ginsi │ │ ├── mafft-homologs.rb │ │ ├── mafft-linsi │ │ ├── mafft-nwns │ │ ├── mafft-nwnsi │ │ ├── mafft-profile │ │ ├── mafft-qinsi │ │ ├── mafft-sparsecore.rb │ │ ├── mafft-xinsi │ │ ├── nwns │ │ └── nwnsi │ ├── libexec │ │ └── mafft │ │ │ ├── addsingle │ │ │ ├── contrafoldwrap │ │ │ ├── countlen │ │ │ ├── disttbfast │ │ │ ├── dndblast │ │ │ ├── dndfast7 │ │ │ ├── dndpre │ │ │ ├── dvtditr │ │ │ ├── f2cl │ │ │ ├── getlag │ │ │ ├── hex2maffttext │ │ │ ├── mafft-distance │ │ │ ├── mafft-homologs.1 │ │ │ ├── mafft-profile │ │ │ ├── mafft.1 │ │ │ ├── mafftash_premafft.pl │ │ │ ├── maffttext2hex │ │ │ ├── makedirectionlist │ │ │ ├── mccaskillwrap │ │ │ ├── multi2hat3s │ │ │ ├── nodepair │ │ │ ├── pairash │ │ │ ├── pairlocalalign │ │ │ ├── regtable2seq │ │ │ ├── replaceu │ │ │ ├── restoreu │ │ │ ├── score │ │ │ ├── seekquencer_premafft.pl │ │ │ ├── seq2regtable │ │ │ ├── setcore │ │ │ ├── setdirection │ │ │ ├── sextet5 │ │ │ ├── splittbfast │ │ │ ├── tbfast │ │ │ └── version │ └── share │ │ └── man │ │ └── man1 │ │ ├── mafft-homologs.1 │ │ └── mafft.1 ├── mafft_manpage.txt ├── models.py ├── monomers_map.txt └── scoring │ ├── SCORING.md │ └── ScoringUtils.py ├── local.env ├── requirements.txt └── tests ├── .flake8 ├── .pylintrc └── unit_tests ├── environment.yml ├── resources ├── test_AlignSubPeptides │ ├── PEPTIDE1_SCORE_matrix.txt │ ├── ROCS │ ├── align_input.txt │ ├── align_output.json │ ├── for_scoring.txt │ ├── monomers_map.txt │ ├── new_sequences.txt │ ├── realign_output.json │ └── test_split_sub_peptides │ │ ├── example_PEPTIDE1_only_output.json │ │ ├── example_PEPTIDE2_only_output.json │ │ ├── example_all_peptides_output.json │ │ ├── example_input.txt │ │ ├── for_alignment1_CHEM1_only_output.json │ │ ├── for_alignment1_PEPTIDE1_only_output.json │ │ ├── for_alignment1_all_peptides_output.json │ │ ├── for_alignment1_input.txt │ │ ├── for_alignment2_PEPTIDE1_only_output.json │ │ ├── for_alignment2_all_peptides_output.json │ │ ├── for_alignment2_input.txt │ │ ├── for_alignment3_PEPTIDE1_only_output.json │ │ ├── for_alignment3_all_peptides_output.json │ │ ├── for_alignment3_input.txt │ │ ├── for_alignment_without_nh2_CHEM1_only_output.json │ │ ├── for_alignment_without_nh2_PEPTIDE1_only_output.json │ │ ├── for_alignment_without_nh2_all_peptides_output.json │ │ ├── for_alignment_without_nh2_input.txt │ │ ├── helmtest_CHEM1_only_output.json │ │ ├── helmtest_PEPTIDE1_only_output.json │ │ ├── helmtest_all_peptides_output.json │ │ ├── helmtest_input.txt │ │ ├── input_data_PEPTIDE1_only_output.json │ │ ├── input_data_all_peptides_output.json │ │ ├── input_data_input.txt │ │ ├── multi_chain_peps_PEPTIDE1_only_output.json │ │ ├── multi_chain_peps_PEPTIDE2_only_output.json │ │ ├── multi_chain_peps_PEPTIDE3_only_output.json │ │ ├── multi_chain_peps_all_peptides_output.json │ │ ├── multi_chain_peps_input.txt │ │ ├── multi_pep_chem_CHEM1_only_output.json │ │ ├── multi_pep_chem_CHEM2_only_output.json │ │ ├── multi_pep_chem_CHEM3_only_output.json │ │ ├── multi_pep_chem_PEPTIDE1_only_output.json │ │ ├── multi_pep_chem_PEPTIDE2_only_output.json │ │ ├── multi_pep_chem_all_peptides_output.json │ │ ├── multi_pep_chem_input.txt │ │ ├── test_data_PEPTIDE1_only_output.json │ │ ├── test_data_all_peptides_output.json │ │ └── test_data_input.txt ├── test_AlignUtils │ ├── CHEM1_EXPECTED_matrix.txt │ ├── CHEM1_TEST_mafft.txt │ ├── PEPTIDE1_EXPECTED_matrix.txt │ ├── PEPTIDE1_TEST_mafft.txt │ ├── PEPTIDE1_mafft_aligned.txt │ ├── ROCS │ ├── artificial_seqs.json │ ├── decode.json │ ├── input.json │ └── monomers_map.txt ├── test_ApiUtils │ ├── aligned.json │ ├── example.json │ ├── json_output.json │ ├── raw_input.json │ └── raw_output.json └── test_ScoringUtils │ ├── PEPTIDE1_FOR_SCORING_matrix.txt │ ├── aligned_seqs.txt │ └── expected_matrix.txt ├── test_AlignSubPeptides.py ├── test_AlignUtils.py ├── test_ApiUtils.py ├── test_PyHELM_simple.py ├── test_ScoringUtils.py └── test_models.py /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | __pycache__/ 4 | *.py[cod] 5 | venv 6 | .venv 7 | .cvenv 8 | report* 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2021 Merck Sharp & Dohme Corp. a subsidiary of Merck & Co., Inc., Kenilworth, NJ, USA. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: help 2 | 3 | # Auto-generated help 4 | # Adapted from: https://raw.githubusercontent.com/nestauk/patent_analysis/3beebda/Makefile 5 | help: 6 | @echo "$$(tput bold)Available rules:$$(tput sgr0)" 7 | @echo 8 | @sed -n -e "/^## / { \ 9 | h; \ 10 | s/.*//; \ 11 | :doc" \ 12 | -e "H; \ 13 | n; \ 14 | s/^## //; \ 15 | t doc" \ 16 | -e "s/:.*//; \ 17 | G; \ 18 | s/\\n## /---/; \ 19 | s/\\n/ /g; \ 20 | p; \ 21 | }" ${MAKEFILE_LIST} \ 22 | | LC_ALL='C' sort --ignore-case \ 23 | | awk -F '---' \ 24 | -v ncol=$$(tput cols) \ 25 | -v indent=19 \ 26 | -v col_on="$$(tput setaf 6)" \ 27 | -v col_off="$$(tput sgr0)" \ 28 | '{ \ 29 | printf "%s%*s%s ", col_on, -indent, $$1, col_off; \ 30 | n = split($$2, words, " "); \ 31 | line_length = ncol - indent; \ 32 | for (i = 1; i <= n; i++) { \ 33 | line_length -= length(words[i]) + 1; \ 34 | if (line_length <= 0) { \ 35 | line_length = ncol - indent - length(words[i]) - 1; \ 36 | printf "\n%*s ", -indent, " "; \ 37 | } \ 38 | printf "%s ", words[i]; \ 39 | } \ 40 | printf "\n"; \ 41 | }' \ 42 | | more $(shell test $(shell uname) = Darwin && echo '--no-init --raw-control-chars') 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Peptide SAR: MAFFT based API for multiple sequence alignment 2 | 3 | API for the alignment of multiple peptide sequences represented in the [HELM notation](https://www.pistoiaalliance.org/helm-notation/). Input sequences can contain up to 256 non-natural amino acids. 4 | 5 | ## Deployment 6 | 7 | 1) Download and install MAFFT. Proceed to the MAFFT [page](https://mafft.cbrc.jp/alignment/software/). In the ___Download and Installation___ section choose your system and follow the installation instructions. 8 | 9 | By default MAFFT is installed into the __/usr/local/bin/__ folder. The same path for MAFFT is specified in the __local.env__ file. Please, edit this file if you installed MAFFT into other folder. 10 | 11 | 2) Create Python 3.8 virtual environment and activate it: 12 | ```bash 13 | python3 -m venv ENV_NAME 14 | source ENV_NAME/bin/activate 15 | ``` 16 | 17 | 3) Install dependencies specified in __requirements.txt__: 18 | ```bash 19 | python3 -m pip install -r requirements.txt 20 | ``` 21 | 22 | 4) Run the API using uvicorn HTTP server. Execute the following command through the terminal, while you are in the root directory: 23 | ```bash 24 | uvicorn alignment.api:api --env-file local.env 25 | ``` 26 | 27 | 5) Access the API through a web-browser. Copy the address specified on the last line of the terminal, after execution of the __uvicorn__ command(by default it is http://127.0.0.1:8000), or you can use any API testing tool (e.g. Postman: https://www.postman.com/api-platform/) 28 | 29 | 30 | ## Testing 31 | Execute the following command to run all the tests: 32 | 33 | python -m pytest -v 34 | 35 | Execute the following command to run a specific test: 36 | 37 | python -m pytest tests/unit_tests/*script_name* -v 38 | 39 | ## Links 40 | For more information about MAFFT follow this link https://mafft.cbrc.jp/alignment/software/ 41 | 42 | For more information on FastAPI deployment you can refer to: https://fastapi.tiangolo.com/deployment/ 43 | 44 | For more information on uvicorn package you can refer to: https://www.uvicorn.org/ 45 | -------------------------------------------------------------------------------- /THIRD_PARTY_LICENSES: -------------------------------------------------------------------------------- 1 | -------------------------------------------------- 2 | Third party dependencies listed by License type 3 | [Format: Name Version License URL] 4 | -------------------------------------------------- 5 | 6 | Name Version License URL 7 | falcon 2.0.0 Apache Software License https://falconframework.org 8 | requests 2.24.0 Apache Software License https://requests.readthedocs.io 9 | python-dateutil 2.8.1 Apache Software License; BSD License https://dateutil.readthedocs.io 10 | uvloop 0.14.0 Apache Software License; MIT License http://github.com/MagicStack/uvloop 11 | numpy 1.19.2 BSD https://www.numpy.org 12 | pandas 1.0.3 BSD https://pandas.pydata.org 13 | click 7.1.2 BSD License https://palletsprojects.com/p/click/ 14 | enum34 1.1.10 BSD License https://bitbucket.org/stoneleaf/enum34 15 | idna 2.10 BSD License https://github.com/kjd/idna 16 | python-dotenv 0.14.0 BSD License https://github.com/theskumar/python-dotenv 17 | starlette 0.13.6 BSD License https://github.com/encode/starlette 18 | ujson 4.0.1 BSD License https://github.com/ultrajson/ultrajson 19 | uvicorn 0.12.1 BSD License https://github.com/encode/uvicorn 20 | websockets 8.1 BSD License https://github.com/aaugustin/websockets 21 | chardet 3.0.4 GNU Library or Lesser General Public License (LGPL) https://github.com/chardet/chardet 22 | PyYAML 5.3.1 MIT License https://github.com/yaml/pyyaml 23 | SQLAlchemy 1.4.0 MIT License http://www.sqlalchemy.org 24 | fastapi 0.61.1 MIT License https://github.com/tiangolo/fastapi 25 | fastapi-utils 0.2.1 MIT License https://fastapi-utils.davidmontague.xyz 26 | greenlet 1.0.0 MIT License https://greenlet.readthedocs.io/ 27 | gunicorn 20.0.4 MIT License http://gunicorn.org 28 | h11 0.11.0 MIT License https://github.com/python-hyper/h11 29 | httptools 0.1.1 MIT License https://github.com/MagicStack/httptools 30 | pyMSA 0.8.1 MIT License https://github.com/benhid/pyMSA 31 | pydantic 1.6.1 MIT License https://github.com/samuelcolvin/pydantic 32 | pytz 2020.1 MIT License http://pythonhosted.org/pytz 33 | six 1.15.0 MIT License https://github.com/benjaminp/six 34 | urllib3 1.25.9 MIT License https://urllib3.readthedocs.io/ 35 | watchgod 0.6 MIT License https://github.com/samuelcolvin/watchgod 36 | certifi 2020.6.20 Mozilla Public License 2.0 (MPL 2.0) https://certifiio.readthedocs.io/en/latest/ 37 | -------------------------------------------------------------------------------- /alignment/ApiUtils.py: -------------------------------------------------------------------------------- 1 | """ 2 | API input/output manipulation utility functions 3 | """ 4 | 5 | import json 6 | 7 | from alignment.PyHELM_simple import HelmObj 8 | 9 | 10 | def extract_helm_from_json(input_json): 11 | """Extracts the HELM strings out of a JSON array. 12 | 13 | :param input_json: JSON array of Peptide objects 14 | :return: output_helm: string (extracted HELM strings separated by a newline) 15 | """ 16 | output_helm = "" 17 | for peptide in input_json: 18 | if len(output_helm) > 0: 19 | output_helm += "\n" 20 | output_helm += peptide["HELM"] 21 | return output_helm 22 | 23 | 24 | def json_output(helm_data, json_input): 25 | """ 26 | Creates JSON output from the decoded and aligned HELM sequence and JSON input. 27 | Returns JSON array of aligned sequences. 28 | 29 | :param helm_data: Dictionary of the aligned subpeptides 30 | :param json_input: Original JSON input 31 | :return: 32 | """ 33 | 34 | # If helm_data is empty, the function will return an empty json_list 35 | json_list = [] 36 | if len(helm_data) > 0: # pylint: disable=too-many-nested-blocks 37 | 38 | # The following cycle iterates over the helm_data dictionary, where keys are the names of subpeptides 39 | for key in helm_data: 40 | 41 | # peptides variable stores the sequences of subpeptides of the given key 42 | peptides = [x.strip("\n") for x in helm_data[key].split(f"> {key}\n")[1:]] 43 | index = 0 44 | 45 | """ 46 | The following cycle iterates over the items of the original JSON input. 47 | 48 | At the beginning, it checks, whether the current entity contains the given subpeptide. 49 | If the subpeptide exists in current sequence, then "if" part is executed, which creates 50 | separate item for JSON output. 51 | 52 | 53 | """ 54 | for entity in json_input: 55 | 56 | """ 57 | Differentiate between aligned input (output of "/align" endpoint) and raw input. 58 | If we don't have already aligned input, we only need to extract polymer, which equals current key (subpeptide) 59 | If we have aligned input, we need to extract polymer, which equals key AND PolymerID 60 | """ 61 | polymer_in_entity = entity.get('PolymerID', None) 62 | if not polymer_in_entity or polymer_in_entity == key: 63 | sequence = extract_subpeptide(key, entity['HELM']) 64 | else: 65 | sequence = None 66 | 67 | # If there is a subpeptide with a given key, we can add it to the output 68 | if sequence is not None: 69 | output_json = "{" 70 | output_json += '"PolymerID":"' + key + '", ' 71 | output_json += '"AlignedSubpeptide":"' + sequence + '", ' 72 | output_json += '"HELM":"' + entity['HELM'] + '", ' 73 | output_json += '"ID":"' + entity["ID"] + '", ' 74 | output_json += '"AlignedSeq":"' + peptides[index] + '", ' 75 | 76 | """ 77 | The following cycle iterates over the aligned subsequence, and the the help of the "extract_monomer" 78 | function adds separate monomers to the JSON output in the following format: 79 | 80 | "PEPTIDE1_1": "d1Nal", 81 | 82 | """ 83 | if key.startswith("CHEM"): 84 | output_json += f'"{key}_1":"' + sequence[1:-1] + '"' + ", " 85 | else: 86 | for ind, el in enumerate(extract_monomer(peptides[index])): 87 | output_json += f'"{key}_{ind + 1}":"' + el + '"' + ", " 88 | output_json = output_json[:-2] 89 | output_json += "}" 90 | index += 1 91 | 92 | json_list.append(json.loads(output_json)) 93 | 94 | return json_list 95 | 96 | 97 | def extract_subpeptide(peptide_name, helm_string): 98 | """Extracts the sub-peptide sequence, given the HELM string and the name of the sub-peptide. 99 | 100 | :param peptide_name: 101 | :param helm_string: 102 | :return: 103 | """ 104 | helm_obj = HelmObj() 105 | helm_obj.parse_helm(helm_string) 106 | 107 | # The following cycle goes through all the subpeptides of the HELM sequence. 108 | # If the name of the subpeptide equals the peptide_name, the function returns sequence of the subpeptide 109 | for poly in helm_obj.polymers: 110 | if poly.name == peptide_name: 111 | return poly.data 112 | return None 113 | 114 | 115 | def extract_monomer(aligned_sequence): 116 | """ 117 | Generator function. Yields the monomers of the aligned sequence. Every symbol is accounted for monomer, 118 | unless they are not in square brackets. Otherwise, symbols in square brackets are precessed as single monomer. 119 | 120 | Currently works with sequences, where monomers are not separated with dots, e.g. 121 | [ClAc]FRYLY[Ahp]FCGKK[NH2] 122 | 123 | If monomers will be separated with dots, it will be necessary to update this function. 124 | :param aligned_sequence: 125 | :return: 126 | """ 127 | non_natural = False 128 | monomer = '' 129 | 130 | # These variables track the number of opened and and closed square brackets. 131 | # This is needed for correct parsing of sequences, which have SMILES as monomers 132 | opened = 0 133 | closed = 0 134 | 135 | for el in aligned_sequence: 136 | if monomer != "" and not non_natural: 137 | monomer = "" 138 | 139 | if el == "[" and opened == 0: 140 | non_natural = True 141 | opened += 1 142 | elif el == "[": 143 | opened += 1 144 | monomer += el 145 | elif not non_natural: 146 | yield el 147 | 148 | # Yield the monomer, only if the current symbol is closing bracket, 149 | # and number of opened brackets is exactly one more than the number of closed ones 150 | elif el == "]" and opened == closed + 1: 151 | non_natural = False 152 | opened = 0 153 | closed = 0 154 | yield monomer 155 | elif el == "]": 156 | monomer += el 157 | closed += 1 158 | else: 159 | monomer += el 160 | 161 | assert not non_natural, f"Non-valid notation of non-natural amino acids in the following sequence {aligned_sequence}" 162 | 163 | 164 | def extract_aligned_sequences(aligned_array): 165 | """ 166 | Transforms aligned sequences into FASTA format 167 | 168 | :param aligned_array: array of aligned sequences 169 | :return: string, aligned sequences in FASTA format 170 | """ 171 | 172 | aligned_seqs = '' 173 | 174 | for element in aligned_array: 175 | if len(aligned_seqs) > 0: 176 | aligned_seqs += '\n' 177 | aligned_seqs += f"> {element['PolymerID']}\n" 178 | aligned_seqs += element['AlignedSeq'] 179 | 180 | return aligned_seqs 181 | 182 | 183 | def escape_double_quotes_in_input(input_data): 184 | """ Adds escape character in front of double quotes in HELM string 185 | 186 | :param input_data: JSON array of input data 187 | :return: JSON array 188 | """ 189 | 190 | if "aligned_sequences" and "new_sequences" in input_data: 191 | 192 | for ind, element in enumerate(input_data["aligned_sequences"]): 193 | helm = element["HELM"].replace('"', '\\"') 194 | input_data["aligned_sequences"][ind]["HELM"] = helm 195 | 196 | for ind, element in enumerate(input_data["new_sequences"]): 197 | helm = element["HELM"].replace('"', '\\"') 198 | input_data["new_sequences"][ind]["HELM"] = helm 199 | 200 | else: 201 | 202 | for ind, element in enumerate(input_data): 203 | helm = element["HELM"].replace('"', '\\"') 204 | input_data[ind]["HELM"] = helm 205 | 206 | return input_data 207 | -------------------------------------------------------------------------------- /alignment/PyHELM_simple.py: -------------------------------------------------------------------------------- 1 | """ 2 | PyHELM - A class for working with HELM 3 | 4 | Copyright 2014, quattro research GmbH 5 | """ 6 | 7 | import re 8 | 9 | 10 | class NotationError (Exception): 11 | """Custom exception for invalid HELM""" 12 | 13 | 14 | # pylint: disable=redefined-builtin 15 | # noinspection PyShadowingBuiltins 16 | class Polymer: 17 | """Class representing a polymer chain""" 18 | def __init__(self, type, data='', name=''): 19 | self.type = type 20 | self.data = data 21 | self.name = name 22 | 23 | 24 | # noinspection PyShadowingNames 25 | class Connection: 26 | """ A connection has 3 Attributes: Polymer, Start, Stop; All of them are tuples with two elements 27 | 28 | Example: (Polymer1,Polymer2),(20,'R2'),(3,'R1') or (Polymer1,Polymer2),(10,'pair'),(3,'pair') 29 | """ 30 | def __init__(self, poly, start, stop): 31 | self.polymers = poly 32 | self.start = start 33 | self.stop = stop 34 | 35 | def validate(self): 36 | """Validate connection between polymer chains""" 37 | if len(self.polymers) == 2 and len(self.start) == 2 and len(self.stop) == 2: 38 | if self.polymers[0].countmonomer() > self.start[0] and self.polymers[1].countmonomer() > self.stop[0]: 39 | return True 40 | return False 41 | 42 | 43 | # noinspection PyUnresolvedReferences,RegExpRedundantEscape 44 | class HelmObj: 45 | """ A HelmObj is a complete polymer made of simple polymers, connections and attributes, separated by the '$' sign. 46 | 47 | self.polymers = List of polymer objects 48 | self.connections = List of connections 49 | self.attributes = List of (Polymer,String) 50 | self.notation = HELM String 51 | """ 52 | 53 | def __init__(self): 54 | self.polymers = [] 55 | self.connections = [] 56 | self.attributes = [] 57 | self.data = '' 58 | 59 | # #### self.monomerDB = os.path.dirname(__file__) + '/MonomerDB.xml' 60 | # #### 61 | # #### if not os.path.isfile(self.monomerDB): 62 | # #### print('could not find monomerDB') 63 | # #### return 64 | # #### 65 | # #### self.tree = ET.parse(self.monomerDB) 66 | # #### polymers = self.tree.findall("PolymerList/Polymer") 67 | # for p in polymers: 68 | # print(p.attrib['polymerType']) 69 | # 70 | # print('monomerDB initialized') 71 | 72 | # noinspection PyPep8Naming,PyMethodMayBeStatic 73 | def validate_helm(self, helm): # pylint: disable=no-self-use 74 | """Validate input HELM string""" 75 | # #check $ signs 76 | sections = re.split(r'\$', helm) 77 | if len(sections) != 5: 78 | return False 79 | 80 | # #check polymer connections 81 | first_list = re.findall(r'\w+(?=\{)', sections[0]) # all polymers from first element 82 | second_list = re.findall(r'\w+(?=[\{,])', sections[1]) # all polymers from second element 83 | for element in second_list: 84 | if element not in first_list: 85 | return False 86 | return True 87 | 88 | # noinspection PyPep8Naming,PyShadowingNames 89 | def parse_helm(self, helm): 90 | """Parse input HELM string into objects of Polymers, Connection and Attributes""" 91 | # clear the list of objects 92 | del self.polymers[:] 93 | del self.connections[:] 94 | del self.attributes[:] 95 | 96 | if not self.validate_helm(helm): 97 | raise NotationError('Invalid HELM notation') 98 | 99 | sections = re.split(r'\$', helm) 100 | poly_section = sections[0] 101 | poly_strings = re.split(r'\|', poly_section) 102 | for p in poly_strings: 103 | p_name = re.match(r'\w+(?=\{)', p).group() 104 | p_type = re.match(r'\D+', p_name).group() 105 | p_data = p[len(p_name) + 1:len(p) - 1] 106 | self.polymers.append(Polymer(p_type, p_data, p_name)) 107 | 108 | if sections[1] != '': 109 | conn_section = sections[1] 110 | conn_strings = re.split(r'\|', conn_section) 111 | for c in conn_strings: 112 | items = re.split(r'[,:-]', c) 113 | polys = [poly for poly in self.polymers if poly.name == items[0]] 114 | polys.extend([poly for poly in self.polymers if poly.name == items[1]]) 115 | start = (int(items[2]), items[3]) 116 | stop = (int(items[4]), items[5]) 117 | self.connections.append(Connection(polys, start, stop)) 118 | 119 | # noinspection PyPep8Naming,PyMethodMayBeStatic 120 | def get_polymer_names_from_helm(self, helm): # pylint: disable=no-self-use 121 | """Get Polymer chain names from a HELM string""" 122 | sections = re.split(r'\$', helm) 123 | return re.findall(r'\w+(?=\{)', sections[0]) 124 | 125 | # noinspection PyPep8Naming,PyMethodMayBeStatic 126 | def get_polymers_from_helm(self, helm): # pylint: disable=no-self-use 127 | """Get Polymer chain name and sequence from a HELM string""" 128 | sections = re.split(r'\$', helm) 129 | poly_section = sections[0] 130 | return re.split(r'\|', poly_section) 131 | 132 | # noinspection PyPep8Naming,PyMethodMayBeStatic 133 | def get_monomers_from_polymer(self, helm, polymer_name): # pylint: disable=no-self-use,inconsistent-return-statements 134 | """Get all monomers from a Polymer chain - the sequence""" 135 | sections = re.split(r'\$', helm) 136 | poly_section = sections[0] 137 | polymers = re.split(r'\|', poly_section) 138 | for p in polymers: 139 | if p.find(polymer_name) >= 0: 140 | # remove name and curly brackets 141 | mono_str = p[len(polymer_name) + 1:len(p) - 1] 142 | return re.split(r'\.', mono_str) 143 | 144 | # noinspection PyPep8Naming 145 | def get_distinct_monomers_from_polymer(self, helm, polymer_name): 146 | """Return a set of unique monomers in a polymer chain""" 147 | all_monomers = self.get_monomers_from_polymer(helm, polymer_name) 148 | return set(all_monomers) 149 | 150 | 151 | if __name__ == '__main__': 152 | # example use 153 | my_helm = HelmObj() 154 | 155 | my_helm.parse_helm('RNA1{[am6]P.R(C)P.R(U)P.R(U)P.R(G)P.R(A)P.R(G)P.R(G)}|PEPTIDE1{A.C.G.K.E.D.K.R}|CHEM1{SMCC}$PEPTIDE1,CHEM1,2:R3-1:R2|RNA1,CHEM1,1:R1-1:R1$$$') # pylint: disable=line-too-long 156 | for polymer in my_helm.polymers: 157 | print(polymer.type) 158 | print(polymer.data) 159 | print('') 160 | 161 | for conn in my_helm.connections: 162 | print(conn.polymers[0].name + str(conn.start) + ' -> ' + conn.polymers[1].name + str(conn.stop)) 163 | -------------------------------------------------------------------------------- /alignment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/__init__.py -------------------------------------------------------------------------------- /alignment/mafft/bin/einsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/fftns: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/fftnsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/ginsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/linsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-distance: -------------------------------------------------------------------------------- 1 | /home/vcap/app/alignment/mafft/libexec/mafft/mafft-distance -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-einsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-fftns: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-fftnsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-ginsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-linsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-nwns: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-nwnsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-profile: -------------------------------------------------------------------------------- 1 | /home/vcap/app/alignment/mafft/libexec/mafft/mafft-profile -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-qinsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-sparsecore.rb: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env ruby 2 | require 'optparse' 3 | 4 | mafftpath = "/home/vcap/app/alignment/mafft/bin/mafft" 5 | 6 | def cleartempfiles( filenames ) 7 | for f in filenames 8 | system( "rm -rf #{f}" ) 9 | end 10 | end 11 | 12 | 13 | seed = 0 14 | scand = "50%" 15 | npick = 500 16 | infn = "" 17 | reorderoption = "--reorder" 18 | pickoptions = " --retree 1 " 19 | coreoptions = " --globalpair --maxiterate 100 " 20 | corelastarg = " " 21 | addoptions = " " 22 | directionoptions = " --retree 0 --pileup " 23 | markcore = "" 24 | randompickup = true 25 | outnum = false 26 | 27 | begin 28 | params = ARGV.getopts('m:s:n:p:i:C:L:A:o:MhuD:') 29 | rescue => e 30 | STDERR.puts e 31 | STDERR.puts "See #{$0} -h" 32 | exit 1 33 | end 34 | 35 | #p params 36 | 37 | mafftpath = params["m"] if params["m"] 38 | seed = params["s"].to_i if params["s"] 39 | scand = params["n"].to_s if params["n"] 40 | npick = params["p"].to_i if params["p"] 41 | infn = params["i"] if params["i"] 42 | #pickoptions += params["P"] if params["P"] 43 | coreoptions += params["C"] if params["C"] # tsuikagaki! 44 | corelastarg += params["L"] if params["L"] # tsuikagaki! 45 | addoptions += params["A"] if params["A"] 46 | directionoptions += params["D"] if params["D"] # tsuikagaki 47 | markcore = "*" if params["M"] 48 | #randompickup = false if params["S"] 49 | reorderoption = "" if params["o"] =~ /^i/ 50 | outnum = true if params["u"] 51 | 52 | if params["h"] then 53 | STDERR.puts "Usage: #{$0} -i inputfile [options]" 54 | STDERR.puts "Options:" 55 | STDERR.puts " -i string Input file." 56 | STDERR.puts " -m string Mafft command. Default: mafft" 57 | STDERR.puts " -s int Seed. Default:0" 58 | STDERR.puts " -n int Number of candidates for core sequences. Default: upper 50% in length" 59 | STDERR.puts " -p int Number of core sequences. Default: 500" 60 | # STDERR.puts " -P \"string\" Mafft options for the PICKUP stage." 61 | # STDERR.puts " Default: \"--retree 1\"" 62 | # STDERR.puts " -S Tree-based pickup. Default: off" 63 | STDERR.puts " -C \"string\" Mafft options for the CORE stage." 64 | STDERR.puts " Default: \"--globalpair --maxiterate 100\"" 65 | STDERR.puts " -A \"string\" Mafft options for the ADD stage." 66 | STDERR.puts " Default: \"\"" 67 | STDERR.puts " -D \"string\" Mafft options for inferring the direction of nucleotide sequences." 68 | STDERR.puts " Default: \"\"" 69 | STDERR.puts " -o r or i r: Reorder the sequences based on similarity. Default" 70 | STDERR.puts " i: Same as input." 71 | exit 1 72 | end 73 | 74 | if infn == "" then 75 | STDERR.puts "Give input file with -i." 76 | exit 1 77 | end 78 | 79 | 80 | 81 | pid = $$.to_s 82 | tmpdir = ENV["TMPDIR"] 83 | tmpdir = "/tmp" if tmpdir == nil 84 | tempfiles = [] 85 | tempfiles.push( temp_pf = tmpdir + "/_pf" + pid ) 86 | tempfiles.push( temp_nf = tmpdir + "/_nf" + pid ) 87 | tempfiles.push( temp_cf = tmpdir + "/_cf" + pid ) 88 | tempfiles.push( temp_of = tmpdir + "/_of" + pid ) 89 | 90 | Signal.trap(:INT){cleartempfiles( tempfiles ); exit 1} 91 | at_exit{ cleartempfiles( tempfiles )} 92 | 93 | system "#{mafftpath} --version > #{temp_of} 2>&1" 94 | 95 | fp = File.open( temp_of, "r" ) 96 | line = fp.gets 97 | fp.close 98 | 99 | 100 | versionnum = line.split(' ')[0].sub(/v/,"").to_f 101 | 102 | if versionnum < 7.210 then 103 | STDERR.puts "\n" 104 | STDERR.puts "Please use mafft version >= 7.210\n" 105 | STDERR.puts "\n" 106 | exit 107 | end 108 | 109 | srand( seed ) 110 | 111 | def readfasta( fp, name, seq ) 112 | nseq = 0 113 | tmpseq = "" 114 | while fp.gets 115 | if $_ =~ /^>/ then 116 | name.push( $_.sub(/>/,"").chop ) 117 | seq.push( tmpseq ) if nseq > 0 118 | nseq += 1 119 | tmpseq = "" 120 | else 121 | tmpseq += $_.strip 122 | end 123 | end 124 | seq.push( tmpseq ) 125 | return nseq 126 | end 127 | 128 | 129 | 130 | begin 131 | infp = File.open( infn, "r" ) 132 | rescue => e 133 | STDERR.puts e 134 | exit 1 135 | end 136 | infp.close 137 | 138 | if directionoptions =~ /--adjustdirection/ then 139 | system( mafftpath + "#{directionoptions} #{infn} > #{temp_of}" ) 140 | else 141 | system( "cp #{infn} #{temp_of}" ) 142 | end 143 | 144 | tname = [] 145 | tseq = [] 146 | infp = File.open( temp_of, "r" ) 147 | tin = readfasta( infp, tname, tseq ) 148 | infp.close 149 | lenhash = {} 150 | 151 | if outnum then 152 | for i in 1..(tin) 153 | tname[i-1] = "_numo_s_0#{i}_numo_e_" + tname[i-1] 154 | end 155 | end 156 | 157 | npick = 0 if npick == 1 158 | npick = tin if npick > tin 159 | 160 | 161 | if scand =~ /%$/ then 162 | ncand = (tin * scand.to_f * 0.01 ).to_i 163 | else 164 | ncand = scand.to_i 165 | end 166 | 167 | if ncand < 0 || ncand > tin then 168 | STDERR.puts "Error. -n #{scand}?" 169 | exit 1 170 | end 171 | 172 | ncand = npick if ncand < npick 173 | ncand = tin if ncand > tin 174 | 175 | STDERR.puts "ncand = #{ncand}, npick = #{npick}" 176 | 177 | 178 | sai = [] 179 | for i in 0..(tin-1) 180 | lenhash[i] = tseq[i].gsub(/-/,"").length 181 | end 182 | 183 | i = 0 184 | sorted = lenhash.sort_by{|key, value| [-value, i+=1]} 185 | #for i in 0..(ncand-1) 186 | # sai[sorted[i][0]] = 1 187 | #end 188 | #for i in ncand..(tin-1) 189 | # sai[sorted[i][0]] = 0 190 | #end 191 | 192 | ncandres = 0 193 | ntsukau = 0 194 | for i in 0..(tin-1) 195 | cand = sorted[i][0] 196 | if tname[cand] =~ /^_focus_/ then 197 | sai[cand] = 0 198 | ntsukau += 1 199 | elsif ncandres < ncand then 200 | unless tname[cand] =~ /^_tsukawanai_/ then 201 | sai[cand] = 1 202 | ncandres += 1 203 | else 204 | sai[cand] = 0 205 | end 206 | else 207 | sai[cand] = 0 208 | end 209 | end 210 | 211 | if ncandres+ntsukau < npick 212 | STDERR.puts "ncandres = #{ncandres}" 213 | STDERR.puts "ncand = #{ncand}" 214 | STDERR.puts "ntsukau = #{ntsukau}" 215 | STDERR.puts "npick = #{npick}" 216 | STDERR.puts "Too many _tsukawanai_ sequences." 217 | exit 1 218 | end 219 | 220 | if ntsukau > npick 221 | STDERR.puts "ntsukau = #{ntsukau}" 222 | STDERR.puts "npick = #{npick}" 223 | STDERR.puts "Too many _focus_ sequences." 224 | exit 1 225 | end 226 | 227 | #p sai 228 | #for i in 0..(tin-1) 229 | # puts sai[i].to_s + " " + tname[i] 230 | #end 231 | 232 | npickrand = npick - ntsukau 233 | 234 | if randompickup 235 | pick = [] 236 | for i in 0..(npickrand-1) 237 | pick[i] = 1 238 | end 239 | for i in npickrand..(ncandres-1) 240 | pick[i] = 0 241 | end 242 | pick2 = pick.sort_by{rand} 243 | pick = pick2 244 | # p pick 245 | # p sai 246 | 247 | ipick = 0 248 | for i in 0..(tin-1) 249 | if sai[i] == 1 then 250 | if pick[ipick] == 0 then 251 | sai[i] = 0 252 | end 253 | ipick += 1 254 | end 255 | end 256 | # p sai 257 | 258 | for i in 0..(tin-1) 259 | if tname[i] =~ /^_focus_/ then 260 | sai[i] = 1 261 | end 262 | end 263 | # p sai 264 | 265 | pfp = File.open( temp_pf, 'w' ) 266 | nfp = File.open( temp_nf, 'w' ) 267 | 268 | i = 0 269 | while i < tin 270 | if sai[i] == 1 then 271 | pfp.puts ">" + i.to_s + " " + ">" + markcore + tname[i] 272 | pfp.puts tseq[i] 273 | else 274 | nfp.puts ">" + i.to_s + " " + ">" + tname[i] 275 | nfp.puts tseq[i] 276 | end 277 | i += 1 278 | end 279 | 280 | nfp.close 281 | pfp.close 282 | 283 | else # yamerukamo 284 | STDERR.puts "Not supported in this version" 285 | exit 1 286 | end 287 | 288 | if npick > 1 then 289 | if npick < tin then 290 | system( mafftpath + " #{coreoptions} #{temp_pf} #{corelastarg} > #{temp_cf}" ) # add de sort 291 | else 292 | system( mafftpath + " #{coreoptions} #{reorderoption} #{temp_pf} #{corelastarg} > #{temp_cf}" ) # ima sort 293 | end 294 | res = ( File::stat(temp_cf).size == 0 ) 295 | else 296 | system( "cat /dev/null > #{temp_cf}" ) 297 | res = false 298 | end 299 | 300 | if res == true then 301 | STDERR.puts "\n\nError in the core alignment stage.\n\n" 302 | exit 1 303 | end 304 | 305 | 306 | if npick < tin 307 | system( mafftpath + " #{addoptions} #{reorderoption} --add #{temp_nf} #{temp_cf} > #{temp_of}" ) 308 | res = ( File::stat(temp_of).size == 0 ) 309 | else 310 | system( "cp #{temp_cf} #{temp_of}" ) 311 | res = false 312 | end 313 | 314 | if res == true then 315 | STDERR.puts "\n\nError in the add stage.\n\n" 316 | exit 1 317 | end 318 | 319 | resname = [] 320 | resseq = [] 321 | resfp = File.open( temp_of, "r" ) 322 | nres = readfasta( resfp, resname, resseq ) 323 | resfp.close 324 | 325 | if reorderoption =~ /--reorder/ then 326 | for i in 0..(nres-1) 327 | puts ">" + resname[i].sub(/^[0-9]* >/,"") 328 | puts resseq[i] 329 | end 330 | else 331 | seqhash = {} 332 | namehash = {} 333 | seqlast = [] 334 | namelast = [] 335 | nlast = 0 336 | for i in 0..(nres-1) 337 | if resname[i] =~ /^[0-9]* >/ 338 | key = resname[i].split(' ')[0] 339 | seqhash[key] = resseq[i] 340 | namehash[key] = resname[i] 341 | else 342 | seqlast.push( resseq[i] ) 343 | namelast.push( resname[i] ) 344 | nlast += 1 345 | end 346 | end 347 | for i in 0..(nlast-1) 348 | puts ">" + namelast[i] 349 | puts seqlast[i] 350 | end 351 | for i in 0..(nres-nlast-1) 352 | key = i.to_s 353 | puts ">" + namehash[key].sub(/^[0-9]* >/,"") 354 | puts seqhash[key] 355 | end 356 | end 357 | 358 | 359 | -------------------------------------------------------------------------------- /alignment/mafft/bin/mafft-xinsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/nwns: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/bin/nwnsi: -------------------------------------------------------------------------------- 1 | mafft -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/addsingle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/addsingle -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/contrafoldwrap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/contrafoldwrap -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/countlen: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/countlen -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/disttbfast: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/disttbfast -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/dndblast: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/dndblast -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/dndfast7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/dndfast7 -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/dndpre: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/dndpre -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/dvtditr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/dvtditr -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/f2cl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/f2cl -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/getlag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/getlag -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/hex2maffttext: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/hex2maffttext -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/mafft-distance: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/mafft-distance -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/mafft-homologs.1: -------------------------------------------------------------------------------- 1 | .\" Title: MAFFT-HOMOLOGS 2 | .\" Author: Kazutaka Katoh 3 | .\" Generator: DocBook XSL Stylesheets v1.72.0 4 | .\" Date: 2007-08-14 5 | .\" Manual: Mafft Manual 6 | .\" Source: mafft-homologs 2.1 7 | .\" 8 | .TH "MAFFT\-HOMOLOGS" "1" "2007\-06\-09" "mafft\-homologs 2.1" "Mafft Manual" 9 | .\" disable hyphenation 10 | .nh 11 | .\" disable justification (adjust text to left margin only) 12 | .ad l 13 | .SH "NAME" 14 | .RS 0 15 | mafft\-homologs \- aligns sequences together with homologues automatically collected from SwissProt via NCBI BLAST 16 | .RE 17 | .SH "SYNOPSIS" 18 | .RS 0 19 | \fBmafft\-homologs\fR [\fBoptions\fR] \fIinput\fR [>\ \fIoutput\fR] 20 | .RE 21 | .SH "DESCRIPTION" 22 | .RS 0 23 | The accuracy of an alignment of a few distantly related sequences is considerably improved when being aligned together with their close homologs. The reason for the improvement is probably the same as that for PSI\-BLAST. That is, the positions of highly conserved residues, those with many gaps and other additional information is brought by close homologs. According to Katoh et al. (2005), the improvement by adding close homologs is 10% or so, which is comparable to the improvement by incorporating structural information of a pair of sequences. Mafft\-homologs in a mafft server works like this: 24 | .sp 25 | .RS 4 26 | \h'-04' 1.\h'+02'Collect a number (50 by default) of close homologs (E=1e\-10 by default) of the input sequences. 27 | .RE 28 | .sp 29 | .RS 4 30 | \h'-04' 2.\h'+02'Align the input sequences and homologs all together using the L\-INS\-i strategy. 31 | .RE 32 | .sp 33 | .RS 4 34 | \h'-04' 3.\h'+02'Remove the homologs. 35 | .RE 36 | .RE 37 | .SH "OPTIONS" 38 | .RS 0 39 | .PP 40 | \fB\-a\fR \fI\fIn\fR\fR 41 | .RS 4 42 | The number of collected sequences (default: 50). 43 | .RE 44 | .PP 45 | \fB\-e\fR \fI\fIn\fR\fR 46 | .RS 4 47 | Threshold value (default: 1e\-10). 48 | .RE 49 | .PP 50 | \fB\-o\fR \fI\fIxxx\fR\fR 51 | .RS 4 52 | Options for mafft (default: " \-\-op 1.53 \-\-ep 0.123 \-\-maxiterate 1000 --localpair --reorder"). 53 | .RE 54 | .PP 55 | \fB\-l\fR 56 | .RS 4 57 | Locally carries out BLAST searches instead of NCBI BLAST (requires locally installed BLAST and a database). 58 | .RE 59 | .PP 60 | \fB\-f\fR 61 | .RS 4 62 | Outputs collected homologues also (default: off). 63 | .RE 64 | .PP 65 | \fB\-w\fR 66 | .RS 4 67 | entire sequences are subjected to BLAST search (default: well\-aligned region only) 68 | .RE 69 | .RE 70 | .SH "REQUIREMENTS" 71 | .RS 0 72 | .PP 73 | MAFFT version > 5.58. 74 | .PP 75 | Either of 76 | .RS 4 77 | .PP 78 | lynx (when remote BLAST server is used) 79 | .PP 80 | BLAST and a protein sequence database (when local BLAST is used) 81 | .RE 82 | .RE 83 | .SH "REFERENCES" 84 | .RS 0 85 | .PP 86 | Katoh, Kuma, Toh and Miyata (Nucleic Acids Res. 33:511\-518, 2005) MAFFT version 5: improvement in accuracy of multiple sequence alignment. 87 | .RE 88 | .SH "SEE ALSO" 89 | .RS 0 90 | .PP 91 | \fBmafft\fR(1) 92 | .RE 93 | .SH "AUTHORS" 94 | .RS 0 95 | .PP 96 | \fBKazutaka Katoh\fR <\&katoh_at_bioreg.kyushu\-u.ac.jp.\&> 97 | .sp -1n 98 | .IP "" 4 99 | Wrote Mafft. 100 | .PP 101 | \fBCharles Plessy\fR <\&charles\-debian\-nospam@plessy.org\&> 102 | .sp -1n 103 | .IP "" 4 104 | Wrote this manpage in DocBook XML for the Debian distribution, using Mafft's homepage as a template. 105 | .RE 106 | .SH "COPYRIGHT" 107 | .RS 0 108 | Copyright \(co 2002\-2007 Kazutaka Katoh (mafft) 109 | .br 110 | Copyright \(co 2007 Charles Plessy (this manpage) 111 | .br 112 | .PP 113 | Mafft and its manpage are offered under the following conditions: 114 | .PP 115 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 116 | .sp 117 | .RS 4 118 | \h'-04' 1.\h'+02'Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 119 | .RE 120 | .sp 121 | .RS 4 122 | \h'-04' 2.\h'+02'Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 123 | .RE 124 | .sp 125 | .RS 4 126 | \h'-04' 3.\h'+02'The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. 127 | .RE 128 | .PP 129 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 130 | .br 131 | .RE 132 | -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/mafft-profile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/mafft-profile -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/mafftash_premafft.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | ##################################################################### 4 | # Author: KM Amada (kmamada@ifrec.osaka-u.ac.jp) 5 | # 6 | # Ver. Date Changelog 7 | ##################################################################### 8 | # 1.0 07.26.13 Initial release 9 | # 2.0 09.03.13 Added extensive warnings and error messages 10 | # 3.0 10.28.13 Fix for retrieving large files. Added STDERR logs 11 | # 3.1 11.08.13 Added LWP failsafe. Made hat3 not a required output 12 | # 3.2 12.08.14 Removed 5-char restriction for own structure files 13 | # 14 | ##################################################################### 15 | 16 | use strict; 17 | use Getopt::Long; 18 | use File::Path qw(make_path remove_tree); 19 | use LWP::Simple; 20 | use LWP::UserAgent; 21 | 22 | # to prevent error 'Header line too long (limit is 8192)' [v3.1] 23 | use LWP::Protocol::http; 24 | push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, MaxLineLength => 0); 25 | 26 | 27 | 28 | my $BASEURL = "http://sysimm.ifrec.osaka-u.ac.jp/MAFFTash/REST/service.cgi/premafft"; 29 | 30 | my ( $WORKDIR, $PDBLIST, $OWNLIST, $HAT3FILE, $INSTRFILE ); 31 | 32 | GetOptions 33 | ( 34 | 'd=s' => \$WORKDIR, 35 | 'p=s' => \$PDBLIST, 36 | 'o=s' => \$OWNLIST, 37 | 'h=s' => \$HAT3FILE, 38 | 'i=s' => \$INSTRFILE, 39 | ); 40 | 41 | print STDERR "[MAFFTash-premafft]\n"; 42 | 43 | # set temp directory 44 | my $TMP = "/tmp/mapremafft$$"; 45 | make_path($TMP) unless -d $TMP; 46 | 47 | 48 | 49 | ###### 50 | # validation 51 | &help("Required parameter : atleast one of either '-p' or '-o'") unless ( defined $PDBLIST || defined $OWNLIST); 52 | &help("Required parameter : '-d'") if defined $OWNLIST && ! defined $WORKDIR; 53 | 54 | $HAT3FILE = "hat3" unless defined $HAT3FILE; 55 | $INSTRFILE = "instr" unless defined $INSTRFILE; 56 | chop $WORKDIR if defined $WORKDIR && $WORKDIR =~ m/\/$/g; 57 | 58 | 59 | ###### 60 | # prepare inputs 61 | print STDERR "Preparing inputs for service request...\n"; 62 | 63 | my @files = (); 64 | push(@files, "strweight" => "0.5"); 65 | push(@files, "premafft" => "1"); 66 | 67 | 68 | # pdb entries 69 | if ( defined $PDBLIST ) 70 | { 71 | print STDERR "PDB List defined!\n"; 72 | &bail("Error: Input file $PDBLIST does not exists!") unless -e $PDBLIST; 73 | my $listfile = "$TMP/pdblist.inp"; 74 | 75 | 76 | open(INPF,"<$PDBLIST") or &bail("Error: Cannot open file $PDBLIST for reading!"); 77 | open(OUTF,">$listfile") or &bail("Error: Cannot open temporary file $listfile for writing!"); 78 | 79 | while() 80 | { 81 | chomp; 82 | if ( /^(\w{5})$/ ) 83 | { 84 | print OUTF ">PDBID\n$1\n"; 85 | } 86 | } 87 | 88 | close OUTF; 89 | close INPF; 90 | 91 | push(@files, "inputfile" => ["$listfile"]); 92 | } 93 | 94 | 95 | 96 | # upload own structures 97 | my %ownids = (); 98 | 99 | if ( defined $OWNLIST ) 100 | { 101 | print STDERR "OWN List defined!\n"; 102 | &bail("Error: Input file $OWNLIST does not exists!") unless -e $OWNLIST; 103 | 104 | 105 | open(OWNINPF,"<$OWNLIST") or &bail("Error: Cannot open file $OWNLIST for reading!"); 106 | 107 | while() 108 | { 109 | chomp; 110 | 111 | if ( /^(\S+)$/ ) 112 | { 113 | my $fileref = "$WORKDIR/$1.pdb"; 114 | 115 | unless (-e $fileref) 116 | { 117 | close OWNINPF; 118 | &bail("Error: File $fileref does not exists!"); 119 | } 120 | 121 | push(@files, "inputownfile[]" => ["$fileref"]); 122 | $ownids{$1} = 1; 123 | } 124 | } 125 | 126 | close OWNINPF; 127 | } 128 | 129 | 130 | 131 | ###### 132 | # start rest service 133 | print STDERR "Sending service request...\n"; 134 | 135 | my $browser = LWP::UserAgent->new; 136 | $browser->timeout(0); 137 | 138 | 139 | # post: running a mafftash job 140 | my $postResponse = $browser->post( $BASEURL, \@files, 'Content_Type' => 'form-data' ); 141 | &bail(sprintf("[%d] %s\n", $postResponse->code, &parseError($postResponse->content))) unless($postResponse->is_success); 142 | 143 | 144 | # get response from post request 145 | my ($status, $mafftashid) = &parseResponse($postResponse->content); 146 | 147 | 148 | 149 | my $MAXTRIES = 3; 150 | my $STIMER = 4; 151 | my $longtimer = 0; 152 | 153 | print STDERR "Request sent! Waiting for response...[$mafftashid]\n"; 154 | 155 | 156 | # wait for results until it becomes available 157 | while(1) 158 | { 159 | $longtimer = $longtimer <= ($STIMER*3) ? $longtimer+$STIMER : $STIMER; 160 | sleep $longtimer; 161 | 162 | 163 | # get: get results for mafftash job 164 | my $getResponse = $browser->get("$BASEURL/$mafftashid"); 165 | 166 | if ( $getResponse->is_success ) 167 | { 168 | 169 | # get response from get request 170 | ($status, $mafftashid) = &parseResponse($getResponse->content); 171 | next unless ( $status eq "done" ); 172 | 173 | 174 | # if job is finished and ready 175 | print STDERR "Results found!\n"; 176 | my $csfile = "$TMP/checksum.tar.gz"; 177 | my $try1 = 1; 178 | 179 | 180 | while(1) 181 | { 182 | print STDERR "Fetching Results... [Trial $try1]\n"; 183 | 184 | if ( is_success(getstore("$BASEURL/getmdlist/$mafftashid", $csfile)) && -e $csfile && -s $csfile ) 185 | { 186 | # get response from get request 187 | my $checklist = &extractchecksum($csfile); 188 | &bail("Error retrieving list of compressed files!") unless ( scalar %$checklist > 0 ); 189 | 190 | 191 | foreach my $id ( keys %$checklist ) 192 | { 193 | my $checkfile = "$TMP/$id"; 194 | my $checkid = $checklist->{$id}; 195 | my $try2 = 1; 196 | 197 | while(1) 198 | { 199 | unlink $checkfile if -e $checkfile; 200 | 201 | if ( is_success(getstore("$BASEURL/get/$mafftashid/$id", $checkfile)) && -e $checkfile && -s $checkfile ) 202 | { 203 | my $hashid = &getchecksum($checkfile); 204 | #print STDERR "[hashid]$hashid [checkid]$checkid\n"; 205 | 206 | if ($hashid ne "" && $hashid ne $checkid ) 207 | { 208 | unlink $checkfile if -e $checkfile; 209 | &bail("Error retrieving compressed file from server! [Checksum Failed]") if $try2 >= $MAXTRIES; 210 | $try2++; 211 | sleep $STIMER; 212 | } 213 | else 214 | { 215 | last; 216 | } 217 | } 218 | else 219 | { 220 | &bail("Error retrieving compressed file from server!") if $try2 >= $MAXTRIES; 221 | $try2++; 222 | sleep $STIMER; 223 | } 224 | } 225 | } 226 | 227 | last; 228 | } 229 | else 230 | { 231 | &bail("Error retrieving list of compressed files from server!") if $try1 >= $MAXTRIES; 232 | $try1++; 233 | sleep $STIMER; 234 | } 235 | } 236 | 237 | last; 238 | 239 | } 240 | else 241 | { 242 | &bail(sprintf("[%d] %s\n", $getResponse->code, &parseError($getResponse->content))); 243 | } 244 | 245 | } 246 | 247 | 248 | # make sure outputs were generated 249 | # decompress 250 | print STDERR "Assembling final results...\n"; 251 | 252 | &backticks("cat $TMP/archive.tar.gz* | tar -zxf - -C $TMP/"); 253 | &backticks("mv -f $TMP/instr $INSTRFILE") if -e "$TMP/instr"; 254 | &backticks("mv -f $TMP/hat3 $HAT3FILE") if -e "$TMP/hat3"; 255 | 256 | # sometimes no hat3 file is generated [v3.1] 257 | #&bail("Error: Output file $HAT3FILE not found!") unless -e $HAT3FILE; 258 | &bail("Error: Output file $INSTRFILE not found!") unless -e $INSTRFILE; 259 | 260 | 261 | # warn if some ownids were ommitted 262 | if ( scalar keys(%ownids) > 0 ) 263 | { 264 | my %instrids = (); 265 | 266 | open(INSTRF,"<$INSTRFILE") or &bail("Error: Cannot open file $INSTRFILE for reading!"); 267 | 268 | while() 269 | { 270 | chomp; 271 | 272 | if ( /^>\d+_(\S+)$/ ) 273 | { 274 | $instrids{$1} = 1; 275 | } 276 | } 277 | 278 | close INSTRF; 279 | 280 | foreach my $id ( keys %ownids ) 281 | { 282 | warn "Warning: Own structure $id was excluded from instr/hat3.\n" unless $instrids{$id}; 283 | } 284 | 285 | } 286 | 287 | 288 | 289 | &cleanup(); 290 | 291 | 292 | 293 | #################### 294 | #################### 295 | 296 | 297 | 298 | sub parseResponse 299 | { 300 | my $response = shift; 301 | 302 | #"status":"wait","mafftashid":"Ma8211432R" 303 | 304 | my $status = ""; 305 | my $mafftashid = ""; 306 | 307 | if ( $response =~ /^([^\s:]+):([^\s:]+)$/ ) 308 | { 309 | $mafftashid = $1; 310 | $status = $2; 311 | } 312 | 313 | return ($status, $mafftashid); 314 | 315 | } 316 | 317 | 318 | sub extractchecksum 319 | { 320 | my $infile = shift; 321 | my %dataset = (); 322 | 323 | open CSUM, "tar -zxf $infile -O|" or return \%dataset; 324 | 325 | while() 326 | { 327 | chomp; 328 | if ( /^(\S+)\s+(\S+)$/ ) 329 | { 330 | $dataset{$2} = $1; 331 | } 332 | 333 | } 334 | 335 | close CSUM; 336 | 337 | return \%dataset; 338 | 339 | } 340 | 341 | 342 | sub parseError 343 | { 344 | my $response = shift; 345 | 346 | #"error":"Invalid number of inputs found." 347 | my $errorstr = ( $response =~ /\"error\"\s*:\s*\"([^\"]+)\"/ ) ? $1 : ""; 348 | return $errorstr; 349 | } 350 | 351 | 352 | sub getchecksum 353 | { 354 | my $infile = shift; 355 | 356 | # md5 binary check 357 | my $MD5BIN = ""; 358 | 359 | if ( -x "/usr/bin/md5sum" ) 360 | { 361 | $MD5BIN = "/usr/bin/md5sum"; 362 | } 363 | elsif ( -x "/sbin/md5" ) 364 | { 365 | $MD5BIN = "/sbin/md5 -q"; 366 | } 367 | 368 | return "" if $MD5BIN eq ""; 369 | 370 | 371 | my $checksum = ""; 372 | open MD5EXE, "$MD5BIN $infile|" or return ""; 373 | 374 | while() 375 | { 376 | if (/^(\S+)\s+(\S+)$/) 377 | { 378 | $checksum = $1; 379 | last; 380 | } 381 | elsif (/^(\S+)$/) 382 | { 383 | $checksum = $1; 384 | last; 385 | } 386 | } 387 | 388 | close MD5EXE; 389 | 390 | return $checksum; 391 | 392 | } 393 | 394 | 395 | sub backticks 396 | { 397 | my $command = shift; 398 | 399 | `$command`; 400 | return ($? == -1) ? 0 : 1; 401 | } 402 | 403 | 404 | sub bail 405 | { 406 | my $str = shift; 407 | print STDERR "$str\n" if defined $str; 408 | 409 | &cleanup(); 410 | exit(1); 411 | } 412 | 413 | 414 | sub cleanup 415 | { 416 | return if ($TMP eq "" || !-d $TMP); 417 | 418 | opendir(MAINDIR, $TMP); 419 | my @files = readdir(MAINDIR); 420 | closedir(MAINDIR); 421 | 422 | foreach my $file (@files) 423 | { 424 | unlink "$TMP/$file" if -e "$TMP/$file"; 425 | } 426 | 427 | remove_tree($TMP); 428 | 429 | } 430 | 431 | 432 | sub help 433 | { 434 | my $str = shift; 435 | 436 | print <<'HELPME'; 437 | 438 | USAGE 439 | ./mafftash_premafft.pl -p [FILE] 440 | ./mafftash_premafft.pl -o [FILE] -d [DIRECTORY] 441 | ./mafftash_premafft.pl -p [FILE] -o [FILE] -d [DIRECTORY] 442 | 443 | 444 | PARAMETERS 445 | -p [FILE] 446 | FILE contains a list of PDBIDs (one entry per line); make sure that the PDBIDs are in the standard 5-character pdbid+chain naming format 447 | 448 | -o [FILE] -d [DIRECTORY] 449 | FILE contains a list of IDs from your own structure/pdb files (one entry per line) 450 | for each ID in the list make sure that a corresponding structure file (same ID with .pdb extension) is stored in DIRECTORY 451 | 452 | -h [HATFILE] 453 | save the output hat3 file in HATFILE; if not set, the output is written to a file named 'hat3' in your current directory 454 | 455 | -i [INSTRFILE] 456 | save the output instr file in INSTRFILE; if not set, the output is written to a file named 'instr' in your current directory 457 | 458 | HELPME 459 | 460 | &bail($str); 461 | } 462 | 463 | 464 | 465 | -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/maffttext2hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/maffttext2hex -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/makedirectionlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/makedirectionlist -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/mccaskillwrap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/mccaskillwrap -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/multi2hat3s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/multi2hat3s -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/nodepair: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/nodepair -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/pairash: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/pairash -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/pairlocalalign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/pairlocalalign -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/regtable2seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/regtable2seq -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/replaceu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/replaceu -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/restoreu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/restoreu -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/score: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/score -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/seq2regtable: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/seq2regtable -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/setcore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/setcore -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/setdirection: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/setdirection -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/sextet5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/sextet5 -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/splittbfast: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/splittbfast -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/tbfast: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/tbfast -------------------------------------------------------------------------------- /alignment/mafft/libexec/mafft/version: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Merck/PepSeA/5a5969d965250b53dc8c4057e461d0516bc1a854/alignment/mafft/libexec/mafft/version -------------------------------------------------------------------------------- /alignment/mafft/share/man/man1/mafft-homologs.1: -------------------------------------------------------------------------------- 1 | .\" Title: MAFFT-HOMOLOGS 2 | .\" Author: Kazutaka Katoh 3 | .\" Generator: DocBook XSL Stylesheets v1.72.0 4 | .\" Date: 2007-08-14 5 | .\" Manual: Mafft Manual 6 | .\" Source: mafft-homologs 2.1 7 | .\" 8 | .TH "MAFFT\-HOMOLOGS" "1" "2007\-06\-09" "mafft\-homologs 2.1" "Mafft Manual" 9 | .\" disable hyphenation 10 | .nh 11 | .\" disable justification (adjust text to left margin only) 12 | .ad l 13 | .SH "NAME" 14 | .RS 0 15 | mafft\-homologs \- aligns sequences together with homologues automatically collected from SwissProt via NCBI BLAST 16 | .RE 17 | .SH "SYNOPSIS" 18 | .RS 0 19 | \fBmafft\-homologs\fR [\fBoptions\fR] \fIinput\fR [>\ \fIoutput\fR] 20 | .RE 21 | .SH "DESCRIPTION" 22 | .RS 0 23 | The accuracy of an alignment of a few distantly related sequences is considerably improved when being aligned together with their close homologs. The reason for the improvement is probably the same as that for PSI\-BLAST. That is, the positions of highly conserved residues, those with many gaps and other additional information is brought by close homologs. According to Katoh et al. (2005), the improvement by adding close homologs is 10% or so, which is comparable to the improvement by incorporating structural information of a pair of sequences. Mafft\-homologs in a mafft server works like this: 24 | .sp 25 | .RS 4 26 | \h'-04' 1.\h'+02'Collect a number (50 by default) of close homologs (E=1e\-10 by default) of the input sequences. 27 | .RE 28 | .sp 29 | .RS 4 30 | \h'-04' 2.\h'+02'Align the input sequences and homologs all together using the L\-INS\-i strategy. 31 | .RE 32 | .sp 33 | .RS 4 34 | \h'-04' 3.\h'+02'Remove the homologs. 35 | .RE 36 | .RE 37 | .SH "OPTIONS" 38 | .RS 0 39 | .PP 40 | \fB\-a\fR \fI\fIn\fR\fR 41 | .RS 4 42 | The number of collected sequences (default: 50). 43 | .RE 44 | .PP 45 | \fB\-e\fR \fI\fIn\fR\fR 46 | .RS 4 47 | Threshold value (default: 1e\-10). 48 | .RE 49 | .PP 50 | \fB\-o\fR \fI\fIxxx\fR\fR 51 | .RS 4 52 | Options for mafft (default: " \-\-op 1.53 \-\-ep 0.123 \-\-maxiterate 1000 --localpair --reorder"). 53 | .RE 54 | .PP 55 | \fB\-l\fR 56 | .RS 4 57 | Locally carries out BLAST searches instead of NCBI BLAST (requires locally installed BLAST and a database). 58 | .RE 59 | .PP 60 | \fB\-f\fR 61 | .RS 4 62 | Outputs collected homologues also (default: off). 63 | .RE 64 | .PP 65 | \fB\-w\fR 66 | .RS 4 67 | entire sequences are subjected to BLAST search (default: well\-aligned region only) 68 | .RE 69 | .RE 70 | .SH "REQUIREMENTS" 71 | .RS 0 72 | .PP 73 | MAFFT version > 5.58. 74 | .PP 75 | Either of 76 | .RS 4 77 | .PP 78 | lynx (when remote BLAST server is used) 79 | .PP 80 | BLAST and a protein sequence database (when local BLAST is used) 81 | .RE 82 | .RE 83 | .SH "REFERENCES" 84 | .RS 0 85 | .PP 86 | Katoh, Kuma, Toh and Miyata (Nucleic Acids Res. 33:511\-518, 2005) MAFFT version 5: improvement in accuracy of multiple sequence alignment. 87 | .RE 88 | .SH "SEE ALSO" 89 | .RS 0 90 | .PP 91 | \fBmafft\fR(1) 92 | .RE 93 | .SH "AUTHORS" 94 | .RS 0 95 | .PP 96 | \fBKazutaka Katoh\fR <\&katoh_at_bioreg.kyushu\-u.ac.jp.\&> 97 | .sp -1n 98 | .IP "" 4 99 | Wrote Mafft. 100 | .PP 101 | \fBCharles Plessy\fR <\&charles\-debian\-nospam@plessy.org\&> 102 | .sp -1n 103 | .IP "" 4 104 | Wrote this manpage in DocBook XML for the Debian distribution, using Mafft's homepage as a template. 105 | .RE 106 | .SH "COPYRIGHT" 107 | .RS 0 108 | Copyright \(co 2002\-2007 Kazutaka Katoh (mafft) 109 | .br 110 | Copyright \(co 2007 Charles Plessy (this manpage) 111 | .br 112 | .PP 113 | Mafft and its manpage are offered under the following conditions: 114 | .PP 115 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 116 | .sp 117 | .RS 4 118 | \h'-04' 1.\h'+02'Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 119 | .RE 120 | .sp 121 | .RS 4 122 | \h'-04' 2.\h'+02'Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 123 | .RE 124 | .sp 125 | .RS 4 126 | \h'-04' 3.\h'+02'The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. 127 | .RE 128 | .PP 129 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 130 | .br 131 | .RE 132 | -------------------------------------------------------------------------------- /alignment/models.py: -------------------------------------------------------------------------------- 1 | """ 2 | API input/output models defined using Pydantic package 3 | """ 4 | 5 | from enum import Enum 6 | from typing import List 7 | from pydantic import BaseModel 8 | 9 | 10 | # Models to be used in the API 11 | # pylint: disable=missing-class-docstring 12 | # Peptide model - '/align' API input 13 | class Peptide(BaseModel): 14 | ID: str 15 | HELM: str 16 | 17 | class Config: 18 | schema_extra = { 19 | "example": { 20 | "ID": "L-000000001", 21 | "HELM": "PEPTIDE1{[ClAc].F.R.Y.L.Y.[Ahp].F.C.G.K.K.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-9:R3$$$V2.0" 22 | } 23 | } 24 | 25 | 26 | # Peptide model - API output base 27 | class AlignedPeptide(BaseModel): 28 | PolymerID: str 29 | AlignedSubpeptide: str 30 | HELM: str 31 | ID: str 32 | AlignedSeq: str 33 | 34 | 35 | # API Status endpoint "/status" response model 36 | class ApiStatus(BaseModel): 37 | Status: str 38 | 39 | class Config: 40 | schema_extra = {"example": {"Status": "OK"}} 41 | 42 | 43 | # MAFFT version endpoint "/version" response model 44 | class MafftVersion(BaseModel): 45 | MAFFT_version: str 46 | 47 | class Config: 48 | schema_extra = {"example": {"MAFFT_version": "v7.471 (2020/Jul/3)"}} 49 | 50 | 51 | # MAFFT available alignment methods enumeration 52 | class MafftMethods(str, Enum): 53 | auto = "mafft --auto" 54 | mafft = "mafft" 55 | linsi = "linsi" 56 | ginsi = "ginsi" 57 | einsi = "einsi" 58 | fftns = "fftns" 59 | fftnsi = "fftnsi" 60 | nwns = "nwns" 61 | nwnsi = "nwnsi" 62 | 63 | 64 | # '/realign' endpoint input model 65 | class RealignInput(BaseModel): 66 | aligned_sequences: List[AlignedPeptide] 67 | new_sequences: List[Peptide] 68 | 69 | 70 | # MAFFT methods for realignment 71 | class RealignMethods(str, Enum): 72 | add = "add" 73 | addfull = "addfull" 74 | addlong = "addlong" 75 | addfragments = "addfragments" 76 | addprofile = "addprofile" 77 | -------------------------------------------------------------------------------- /alignment/scoring/SCORING.md: -------------------------------------------------------------------------------- 1 | # Scoring of multiple sequence alignment 2 | 3 | The alignment scoring is calculated with the help of [**pyMSA**](https://pypi.org/project/pyMSA/) package, which contains a few internal distance matrices (*PAM250*, *Blosum62*). Also **pyMSA** allows to create custom distance matrix with the help of **_FileMatrix_** class, by simply specifying path to the substitution matrix (*ROCS* in our case). 4 | 5 | However, such matrix will not be useful for scoring of the MSA, which include non-natural amino acids (AAs). Algorithm of non-natural AAs encoding is a little bit tricky. It does not take non-natural monomers directly from *ROCS* or *monomers_map.txt* files. Current algorithm randomly assigns non-natural AAs to the unicode characters in range of the first 256 symbols. This results in some inconsistency and the need to create distance matrix from custom substitution matrix. 6 | 7 | ## Explanation of inconsistency 8 | 9 | *ROCS* file contains square matrix of single elements with scores for their alignment. Each symbol, encodes a certain non-natural monomer. These can be decoded with the help of *monomers_map.txt* file. 10 | Below is example of contents of *monomers_map.txt* file: 11 | 12 | symbol Unicode polymertype letter3 name monomertype 13 | ... 14 | Trp1Me 0100 PEPTIDE WA7 (2~{S})-2-amino-3-(1-methylindol-3-yl)propanoic acid Backbone 15 | ClAc 0178 PEPTIDE GX7 2-chloroacetic acid Backbone 16 | ... 17 | 18 | However, this API dynamically allocates non-natural AAs to different unicode symbols. 19 | Below is example of contents of custom substitution matrix for one type of polymer (e.g. *PEPTIDE1*): 20 | 21 | ... 22 | 0x1b 0x0f -1 # 4Pal x ClAc 23 | 0x41 0x0f 5 # A x ClAc 24 | 0x01 0x0f 9 # Ac x ClAc 25 | ... 26 | 27 | And here is example of contents of custom substitution matrix for another type of polymer (e.g. *PEPTIDE2*): 28 | 29 | ... 30 | 0x41 0x01 5 # A x ClAc 31 | 0x03 0x01 0 # Ahp x ClAc 32 | 0x05 0x01 -3 # Bip x ClAc 33 | ... 34 | 35 | Look at *"ClAc"* monomer. It has **_"0178"_** code in *monomers_map.txt*, but **_"0x0f"_** and **_"0x01"_** codes in custom substitution matrix. So, non-natural AAs are encoded with unicode symbols from custom substitution matrix, and trying to score the alignment with the help of *ROCS* substitution matrix will not succeed. 36 | 37 | ## Custom class for the generation of distance matrix 38 | 39 | ScoringUtils.py contains new class **_CustomMatrix_**, which allows creation of distance matrix from the custom substitution matrix. This is also much faster, as *ROCS* matrix can be as big, as *1500x1500* (dimensions increase with the addition of new monomers), while custom substitution matrix has maximum dimensions of *256x256*. -------------------------------------------------------------------------------- /alignment/scoring/ScoringUtils.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import re 3 | from pymsa import MSA, SumOfPairs 4 | from pymsa import SubstitutionMatrix 5 | 6 | 7 | class CustomMatrix(SubstitutionMatrix): 8 | """ 9 | Custom class, which inherits functionality of SubstitutionMatrix class from pyMSA package 10 | Helps to create substitution matrix from file, which is created for MAFFT program 11 | 12 | It is much faster, as substitution matrix file contains only necessary monomers 13 | """ 14 | def __init__(self, path, gap_penalty: int = -10, gap_character: str = "-"): 15 | """ 16 | Default values for gap_penalty and gap_character are the same, 17 | as the corresponding values of substitution matrices in pyMSA package (PAM250, BLOSUM62) 18 | 19 | :param path: path to the custom substitution matrix, which is generated for MAFFT program 20 | :param gap_penalty: gap penalty value 21 | :param gap_character: gap symbol 22 | :return: distance matrix - dictionary, where keys are 2-element tuple of symbols, and values are scores of their alignment 23 | """ 24 | super(CustomMatrix, self).__init__(gap_penalty, gap_character) 25 | self.distance_matrix = self.read_matrix_from_file(path) 26 | 27 | @staticmethod 28 | def read_matrix_from_file(path_to_matrix: str) -> dict: 29 | """ 30 | Parses substitution matrix file, extracts symbols and their alignment score from each line 31 | 32 | :param path_to_matrix: path to the custom substitution matrix 33 | :return: distance matrix 34 | """ 35 | distance_matrix = {} 36 | 37 | with open(path_to_matrix) as csv_file: 38 | reader = csv.reader(csv_file) 39 | for row in reader: 40 | tokens = re.split(r'\s+', row[0]) 41 | 42 | # Decoding of characters uses the same approach, as get_unicode_char() method of AlignUtils 43 | symb1 = chr(int(tokens[0], 16)) 44 | symb2 = chr(int(tokens[1], 16)) 45 | 46 | """ 47 | As substitution matrix is square it contains redundant information, 48 | so the following condition checks, that distance matrix will only contain unique pairs of symbols 49 | """ 50 | if (symb1, symb2) not in distance_matrix and (symb2, symb1) not in distance_matrix: 51 | distance_matrix.update({(symb1, symb2): int(tokens[2])}) 52 | 53 | return distance_matrix 54 | 55 | 56 | class Scoring: 57 | """ 58 | Methods for data manipulation and calculation of scores 59 | """ 60 | 61 | @staticmethod 62 | def mafft_output_to_msa(mafft_output): 63 | """ 64 | Transforms the output of MAFFT program into the MSA object. 65 | It is neccessary as methods of pyMSA package work with these objects as input, rather than raw sequences 66 | 67 | :param mafft_output: output of MAFFT program 68 | :return: MSA object of aligned sequences 69 | """ 70 | mafft_lines = mafft_output.splitlines() 71 | 72 | headers = [line for line in mafft_lines if line.startswith(">")] 73 | sequences = ["".join(sequence.split("\n")[1:]) for sequence in mafft_output.split(">") if sequence] 74 | return MSA(sequences, headers) 75 | 76 | @staticmethod 77 | def sum_of_pairs(msa, path_to_matrix) -> float: 78 | """ 79 | Calculates alignment score using sum of pairs method 80 | 81 | :param msa: MSA object of aligned sequences 82 | :param path_to_matrix: path to the custom substitution matrix 83 | :return: scoring of alignment 84 | """ 85 | matrix = CustomMatrix(path_to_matrix) 86 | score = SumOfPairs(msa, matrix).compute() 87 | return score 88 | -------------------------------------------------------------------------------- /local.env: -------------------------------------------------------------------------------- 1 | MAFFT_DIR = "/usr/local/bin/" 2 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | anyio==3.3.4 2 | asgiref==3.4.1 3 | certifi==2021.10.8 4 | chardet==4.0.0 5 | charset-normalizer==2.0.7 6 | click==8.0.3 7 | enum34==1.1.10 8 | falcon==3.0.1 9 | fastapi==0.70.0 10 | fastapi-utils==0.2.1 11 | greenlet==1.1.2 12 | gunicorn==20.1.0 13 | h11==0.12.0 14 | httptools==0.3.0 15 | idna==3.3 16 | numpy==1.21.3 17 | pandas==1.3.4 18 | pydantic==1.8.2 19 | pyMSA==0.8.1 20 | python-dateutil==2.8.2 21 | python-dotenv==0.19.1 22 | pytz==2021.3 23 | PyYAML==6.0 24 | requests==2.26.0 25 | six==1.16.0 26 | sniffio==1.2.0 27 | SQLAlchemy==1.4.26 28 | starlette==0.16.0 29 | typing-extensions==3.10.0.2 30 | ujson==4.2.0 31 | urllib3==1.26.7 32 | uvicorn==0.15.0 33 | uvloop==0.16.0 34 | watchgod==0.7 35 | websockets==10.0 36 | -------------------------------------------------------------------------------- /tests/.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ignore = E501 3 | exclude = .git,__pycache__,venv/**,.cvenv/** 4 | max-line-length = 140 5 | max-complexity = 10 6 | -------------------------------------------------------------------------------- /tests/unit_tests/environment.yml: -------------------------------------------------------------------------------- 1 | name: peptide-sar-unit-tests 2 | channels: 3 | - https://conda.anaconda.org/conda-forge 4 | - https://conda.anaconda.org/openeye 5 | - nodefaults 6 | dependencies: 7 | - anyio=3.3.4=py38h50d1736_0 8 | - astroid=2.8.3=py38h50d1736_0 9 | - attrs=21.2.0=pyhd8ed1ab_0 10 | - brotlipy=0.7.0=py38h96a0964_1001 11 | - ca-certificates=2021.10.8=h033912b_0 12 | - certifi=2021.10.8=py38h50d1736_0 13 | - cffi=1.14.6=py38h1a44b6c_1 14 | - chardet=4.0.0=py38h50d1736_1 15 | - charset-normalizer=2.0.0=pyhd8ed1ab_0 16 | - colorama=0.4.4=pyh9f0ad1d_0 17 | - cryptography=35.0.0=py38h56c4533_1 18 | - fastapi=0.70.0=pyhd8ed1ab_0 19 | - flake8=4.0.1=pyhd8ed1ab_0 20 | - greenlet=1.1.2=py38ha048514_0 21 | - idna=3.1=pyhd3deb0d_0 22 | - importlib-metadata=4.8.1=py38h50d1736_0 23 | - iniconfig=1.1.1=pyh9f0ad1d_0 24 | - isort=5.9.3=pyhd8ed1ab_0 25 | - lazy-object-proxy=1.6.0=py38h96a0964_0 26 | - libblas=3.9.0=12_osx64_openblas 27 | - libcblas=3.9.0=12_osx64_openblas 28 | - libcxx=12.0.1=habf9029_0 29 | - libffi=3.4.2=he49afe7_4 30 | - libgfortran=5.0.0=9_3_0_h6c81a4c_23 31 | - libgfortran5=9.3.0=h6c81a4c_23 32 | - liblapack=3.9.0=12_osx64_openblas 33 | - libopenblas=0.3.18=openmp_h3351f45_0 34 | - libzlib=1.2.11=h9173be1_1013 35 | - llvm-openmp=12.0.1=hda6cdc1_1 36 | - mccabe=0.6.1=py_1 37 | - more-itertools=8.10.0=pyhd8ed1ab_0 38 | - ncurses=6.2=h2e338ed_4 39 | - numpy=1.21.3=py38h49b9922_0 40 | - openeye-toolkits=2020.2.0=py38_0 41 | - openssl=1.1.1l=h0d85af4_0 42 | - packaging=21.0=pyhd8ed1ab_0 43 | - pandas=1.3.4=py38ha53d530_0 44 | - pip=21.3.1=pyhd8ed1ab_0 45 | - platformdirs=2.3.0=pyhd8ed1ab_0 46 | - pluggy=1.0.0=py38h50d1736_1 47 | - psutil=5.8.0=py38h96a0964_1 48 | - py=1.10.0=pyhd3deb0d_0 49 | - pycodestyle=2.8.0=pyhd8ed1ab_0 50 | - pycparser=2.20=pyh9f0ad1d_2 51 | - pydantic=1.8.2=py38h96a0964_0 52 | - pyflakes=2.4.0=pyhd8ed1ab_0 53 | - pylint=2.11.1=pyhd8ed1ab_0 54 | - pyopenssl=21.0.0=pyhd8ed1ab_0 55 | - pyparsing=2.4.7=pyh9f0ad1d_0 56 | - pysocks=1.7.1=py38h50d1736_3 57 | - pytest=6.2.5=py38h50d1736_0 58 | - python=3.8.12=h17280f6_2_cpython 59 | - python-dateutil=2.8.2=pyhd8ed1ab_0 60 | - python_abi=3.8=2_cp38 61 | - pytz=2021.3=pyhd8ed1ab_0 62 | - readline=8.1=h05e3726_0 63 | - requests=2.26.0=pyhd8ed1ab_0 64 | - setuptools=58.2.0=py38h50d1736_0 65 | - six=1.16.0=pyh6c4a22f_0 66 | - sniffio=1.2.0=py38h50d1736_1 67 | - sqlalchemy=1.4.26=py38h96a0964_0 68 | - sqlite=3.36.0=h23a322b_2 69 | - starlette=0.16.0=pyhd8ed1ab_0 70 | - tk=8.6.11=h5dbffcc_1 71 | - toml=0.10.2=pyhd8ed1ab_0 72 | - typing-extensions=3.10.0.2=hd8ed1ab_0 73 | - typing_extensions=3.10.0.2=pyha770c72_0 74 | - urllib3=1.26.7=pyhd8ed1ab_0 75 | - wheel=0.37.0=pyhd8ed1ab_1 76 | - wrapt=1.12.1=py38h96a0964_3 77 | - xz=5.2.5=haf1e3a3_1 78 | - zipp=3.6.0=pyhd8ed1ab_0 79 | - zlib=1.2.11=h9173be1_1013 80 | - pip: 81 | - fastapi-utils==0.2.1 82 | - psrecord==1.2 83 | - pymsa==0.8.1 84 | -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/align_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.C.P.L.Y.I.S.[NMeY].D.P.V.C.R.R.R.R.[NH2]}$PEPTIDE1,PEPTIDE1,7:R3-17:R3$$$V2.0 2 | PEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,CHEM1,2:R3-1:R1|PEPTIDE1,CHEM1,12:R3-1:R2$$$V2.0 3 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.[dE].P.L.Y.I.S.Y.D.P.V.[Dab].R.R.R.R.[NH2]}$PEPTIDE1,PEPTIDE1,7:R3-17:R3$$$V2.0 4 | PEPTIDE1{[Ape].R.R.R.C.P.L.Y.I.S.Y.D.P.V.C.R.R.R.[Ape].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,CHEM1,1:R3-1:R1|PEPTIDE1,CHEM1,19:R3-1:R2|PEPTIDE1,PEPTIDE1,5:R3-15:R3$$$V2.0 5 | PEPTIDE1{[Ac].R.Q.I.K.I.W.F.Q.N.R.R.M.K.W.K.K.G.[LysN3].[AEEA].[dC].P.L.Y.I.S.Y.D.P.V.C.R.[NH2]}$PEPTIDE1,PEPTIDE1,21:R3-31:R3$$$V2.0 6 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.[dC].[Prot3OH].L.Y.I.S.Y.D.P.V.C.R.R.R.R.[NH2]}|CHEM1{[CH2]}$PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,17:R3-1:R2$$$V2.0 7 | PEPTIDE1{[Ac].[LysN3].R.R.[dC].P.L.Y.I.S.Y.D.P.V.[Pen].R.R.[NH2]}|CHEM1{[CH2]}$PEPTIDE1,CHEM1,5:R3-1:R1|PEPTIDE1,CHEM1,15:R3-1:R2$$$V2.0 8 | PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 9 | PEPTIDE1{A.C.A.K.C.A.[AEEA]}|PEPTIDE2{A.C.A.K.C.A}|CHEM1{[C16]}|CHEM2{[CH2]}|CHEM3{[CH2]}$PEPTIDE1,PEPTIDE2,7:R2-4:R3|PEPTIDE1,CHEM1,4:R3-1:R2|PEPTIDE2,CHEM1,4:R3-1:R1|PEPTIDE1,CHEM2,2:R3-1:R1|PEPTIDE1,CHEM2,5:R3-1:R2|PEPTIDE2,CHEM3,2:R3-1:R1|PEPTIDE2,CHEM3,5:R3-1:R2$$$V2.0 10 | PEPTIDE1{[Ac].K.[dR].[dR].[dR].[dR].[dC].[dProt3Ph].L.Y.I.[aMeS].Y.D.P.V.C.[dR].[dR].[dR].[dR].[NH2]}|PEPTIDE2{[TCO].[PEG6NH2acid]}|CHEM1{[CH2]}$PEPTIDE1,PEPTIDE2,2:R3-2:R2|PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,17:R3-1:R2$$$V2.0 11 | PEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}|PEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$PEPTIDE1,PEPTIDE2,12:R3-4:R2|PEPTIDE1,PEPTIDE1,16:R3-20:R3$$$V2.0 12 | PEPTIDE1{[Ac].[dC].[Prot3Ph].L.F.I.[dApe].Y.D.P.V.C.[Hag].[NH2]}|CHEM1{[Butylene]}|CHEM2{[CH2]}$PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,13:R3-1:R2|PEPTIDE1,CHEM2,2:R3-1:R1|PEPTIDE1,CHEM2,12:R3-1:R2$$$V2.0 13 | PEPTIDE1{[2moPyr].F.R.[4Pal].L.Y.[Nva].[NMeF]}$PEPTIDE1,PEPTIDE1,1:R1-8:R2$$$V2.0 14 | PEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[hE].[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-8:R3$$$V2.0 15 | PEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[Apm].[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-8:R3$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/align_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "> PEPTIDE1\n[Ac]--------------[LysN3]RRRRCPLYIS[NMeY]DPVCRRRR[NH2]\n> PEPTIDE1\n[Ac]-------------------[dApe]PLYISYDPV[Ape]----[NH2]\n> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dE]PLYISYDPV[Dab]RRRR[NH2]\n> PEPTIDE1\n[Ape]----------------RRRCPLYISYDPVCRRR[Ape][NH2]\n> PEPTIDE1\n[Ac]RQIKIWFQNRRMKWKKG[LysN3][AEEA][dC]PLYISYDPVC---R[NH2]\n> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dC][Prot3OH]LYISYDPVCRRRR[NH2]\n> PEPTIDE1\n[Ac]----------------[LysN3]RR[dC]PLYISYDPV[Pen]--RR[NH2]\n> PEPTIDE1\n[ClAc]-------------FSV[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CGG----K[NH2]\n> PEPTIDE1\n--------------------ACAKCA[AEEA]---------\n> PEPTIDE1\n[Ac]--------------K[dR][dR][dR][dR][dC][dProt3Ph]LYI[aMeS]YDPVC[dR][dR][dR][dR][NH2]\n> PEPTIDE1\nH--[dS]QGTFTSEYSKYLDERAAKDFVQWLLN----K[NH2]\n> PEPTIDE1\n[Ac]-------------------[dC][Prot3Ph]LFI[dApe]YDPVC---[Hag][NH2]\n> PEPTIDE1\n[2moPyr]------------------FR[4Pal]LY[Nva][NMeF]----------\n> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[hE][NH2]\n> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[Apm][NH2]\n", "CHEM1": "> CHEM1\n[cRCM]\n> CHEM1\n[cRCM]\n> CHEM1\n[CH2]\n> CHEM1\n[CH2]\n> CHEM1\n[PEG2diacid]\n> CHEM1\n[C16]\n> CHEM1\n[CH2]\n> CHEM1\n[Butylene]\n", "PEPTIDE2": "> PEPTIDE2\n----[ClAc]FSV[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CGGK[NH2]\n> PEPTIDE2\n----ACAKCA-------------\n> PEPTIDE2\n---------------------[TCO][PEG6NH2acid]\n> PEPTIDE2\n[C18diacid][gE][AEEA][AEEA]-------------------\n", "CHEM2": "> CHEM2\n[CH2]\n> CHEM2\n[CH2]\n", "CHEM3": "> CHEM3\n[CH2]\n"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/for_scoring.txt: -------------------------------------------------------------------------------- 1 | > PEPTIDE1 2 | --------------RRRRCPLYISDPVCRRRR 3 | > PEPTIDE1 4 | -------------------PLYISYDPV---- 5 | > PEPTIDE1 6 | --------------RRRRPLYISYDPVRRRR 7 | > PEPTIDE1 8 | ----------------RRRCPLYISYDPVCRRR 9 | > PEPTIDE1 10 | RQIKIWFQNRRMKWKKG PLYISYDPVC---R 11 | > PEPTIDE1 12 | --------------RRRR LYISYDPVCRRRR 13 | > PEPTIDE1 14 | ----------------RR PLYISYDPV--RR 15 | > PEPTIDE1 16 | -------------FSVRRVASCGG----K 17 | > PEPTIDE1 18 | --------------------ACAKCA --------- 19 | > PEPTIDE1 20 | --------------K LYIYDPVC 21 | > PEPTIDE1 22 | H--QGTFTSEYSKYLDERAAKDFVQWLLN----K 23 | > PEPTIDE1 24 | ------------------- LFIYDPVC--- 25 | > PEPTIDE1 26 | ------------------FRLY---------- 27 | > PEPTIDE1 28 | -------------------PKLY-------- 29 | > PEPTIDE1 30 | -------------------PKLY--------! 31 | -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/realign_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "> PEPTIDE1\n[Ac]--------------[LysN3]RRRRCPLYIS[NMeY]DPVCRRRR[NH2]\n> PEPTIDE1\n[Ac]-------------------[dApe]PLYISYDPV[Ape]----[NH2]\n> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dE]PLYISYDPV[Dab]RRRR[NH2]\n> PEPTIDE1\n[Ape]----------------RRRCPLYISYDPVCRRR[Ape][NH2]\n> PEPTIDE1\n[Ac]RQIKIWFQNRRMKWKKG[LysN3][AEEA][dC]PLYISYDPVC---R[NH2]\n> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dC][Prot3OH]LYISYDPVCRRRR[NH2]\n> PEPTIDE1\n[Ac]----------------[LysN3]RR[dC]PLYISYDPV[Pen]--RR[NH2]\n> PEPTIDE1\n[ClAc]-------------FSV[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CGG----K[NH2]\n> PEPTIDE1\n--------------------ACAKCA[AEEA]---------\n> PEPTIDE1\n[Ac]--------------K[dR][dR][dR][dR][dC][dProt3Ph]LYI[aMeS]YDPVC[dR][dR][dR][dR][NH2]\n> PEPTIDE1\nH--[dS]QGTFTSEYSKYLDERAAKDFVQWLLN----K[NH2]\n> PEPTIDE1\n[Ac]-------------------[dC][Prot3Ph]LFI[dApe]YDPVC---[Hag][NH2]\n> PEPTIDE1\n[2moPyr]------------------FR[4Pal]LY[Nva][NMeF]----------\n> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[hE][NH2]\n> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[Apm][NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n> PEPTIDE1\n[ClAc]----------------FYSW[Sar]NYWSYY[Sar]WC----[NH2]\n", "PEPTIDE2": "> PEPTIDE2\n----[ClAc]F-SV[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CG--GK[NH2]\n> PEPTIDE2\n----AC-AKCA---------------\n> PEPTIDE2\n------------------------[TCO][PEG6NH2acid]\n> PEPTIDE2\n[C18diacid][gE][AEEA][AEEA]----------------------\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYA[Sar]W-CG[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYYAW-CG[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]A-CG[NH2]\n> PEPTIDE2\n----[ClAc]WNYYW[Sar]YSF---S--[Sar]WYCG[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar][dW]-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C--\n> PEPTIDE2\n----[ClAc]WNYYW[Sar]YSF---S--[Sar]WYCG[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-[hC]-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-[Pen]-[NH2]\n> PEPTIDE2\n----[ClAc]F-Y[dS]W[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---EYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NEW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[BrPr]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]E-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YEW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YS[dW][Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]N[dY]W---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc][dF]-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]N[dY]W---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NY[dW]---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---[dS]YY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SY[dY][Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-Y[dS]W[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar][dN]YW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---S[dY]Y[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YEW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-[dC]-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar][dW]-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSWENYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYE[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYYEW-C-[NH2]\n> PEPTIDE2\n----[ClAc]E-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSE[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSWENYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NY[dW]---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---S[dY]Y[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---[dS]YY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]--YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]--C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]EYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NEW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYYEW-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-[dC]-[NH2]\n> PEPTIDE2\n----[ClAc]F-YS[1Nal][Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-ESW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSE[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYE---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---EYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n> PEPTIDE2\n----[ClAc]F-YSW[Sar]NYW---SYY[Sar]W-C-[NH2]\n"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/example_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}$$$$\nPEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/example_PEPTIDE2_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE2": "PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$\nPEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/example_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}$$$$\nPEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}$$$$", "PEPTIDE2": "PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$\nPEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/example_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$ 2 | PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$ -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment1_CHEM1_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM1": "CHEM1{[Biotin]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment1_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].A.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.A.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.A.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.A.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.A.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.A.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.A.N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].A.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.A.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.A.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.R.R.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[PEGAcOHNH2].K.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.E.E.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Cysteamine]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.K.K.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeW].S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeS].Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[NMeY].Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeW].C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[NMeC].G.[NH2]}$$$$\nPEPTIDE1{[ClAc].[NMeF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[NMeY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[NMeW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NMeN].Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeY].W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[1Nal].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[1Nal].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.P.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.P.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.R.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.R.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeA].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeA].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.P.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.P.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.R.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NMeA].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.P.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.P.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].R.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.R.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[Sar].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[Sar].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[hF].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.D.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.R.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.R.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.R.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.R.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].K.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Bhv].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Bhv].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.K.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.K.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[hF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NPhEtG].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NPhEtG].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NEtAla].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NEtAla].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[hF].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.D.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.R.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].R.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].E.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.K.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Sar].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Sar].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.K.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.K.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].P.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.K.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Sar].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Sar].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[Sar].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.K.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].K.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[NMeA].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeA].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeA].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].P.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].R.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.R.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NMeA].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeA].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Dap].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Phe4COOH].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[4Pal].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[4Pal].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Phe4COOH].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[hF].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Phe4COOH].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[4Pal].S.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment1_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].A.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.A.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.A.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.A.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.A.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.A.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.A.N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].A.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.A.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.A.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.R.R.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[PEGAcOHNH2].K.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.E.E.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Cysteamine]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.K.K.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeW].S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeS].Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[NMeY].Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeW].C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[NMeC].G.[NH2]}$$$$\nPEPTIDE1{[ClAc].[NMeF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[NMeY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[NMeW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NMeN].Y.W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeY].W.S.Y.Y.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[1Nal].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[1Nal].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.P.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.P.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.R.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.R.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeA].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeA].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.P.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.P.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.R.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NMeA].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.P.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.P.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].R.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.R.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[Sar].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[Sar].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[hF].[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.D.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.R.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.R.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.P.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.R.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.R.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[dP].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].K.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Bhv].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Bhv].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.K.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.K.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[hF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NPhEtG].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NPhEtG].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NEtAla].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NEtAla].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[hF].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.D.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.R.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].R.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].E.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.K.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Sar].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Sar].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.K.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.K.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].P.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.K.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Sar].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Sar].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[Sar].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.K.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].K.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[NMeA].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeA].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeA].C.[NH2]}$$$$\nPEPTIDE1{[ClAc].P.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].R.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.R.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NMeA].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeA].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Dap].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Phe4COOH].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[4Pal].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[4Pal].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Phe4COOH].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[hF].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Phe4COOH].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[4Pal].S.Y.Y.[Sar].W.C.[NH2]}$$$$", "CHEM1": "CHEM1{[Biotin]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment2_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment2_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment2_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment3_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment3_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment3_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 2 | PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment_without_nh2_CHEM1_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM1": "CHEM1{[Biotin]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment_without_nh2_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].A.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.A.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.A.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.A.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.A.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.A.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.A.N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].A.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.A.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.A.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.R.R.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[PEGAcOHNH2].K.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.E.E.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Cysteamine]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.K.K.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeW].S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeS].Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[NMeY].Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeW].C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[NMeC].G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[NMeF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[NMeY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[NMeW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NMeN].Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeY].W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[1Nal].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[1Nal].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.P.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.P.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.R.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.R.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeA].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeA].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.P.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.P.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.R.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NMeA].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.P.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.P.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].R.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.R.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[Sar].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[Sar].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[hF].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.D.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.R.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.R.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.R.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.R.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].K.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Bhv].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Bhv].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.K.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.K.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[hF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NPhEtG].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NPhEtG].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NEtAla].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NEtAla].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[hF].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.D.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.R.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].R.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].E.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.K.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Sar].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Sar].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.K.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.K.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].P.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.K.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Sar].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Sar].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[Sar].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.K.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].K.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[NMeA].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeA].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeA].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].P.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].R.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.R.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NMeA].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeA].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Dap].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Phe4COOH].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[4Pal].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[4Pal].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Phe4COOH].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[hF].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Phe4COOH].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[4Pal].S.Y.Y.[Sar].W.C.[AAAA]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/for_alignment_without_nh2_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE1{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].A.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.A.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.A.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.A.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.A.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.A.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.A.N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].A.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.A.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.A.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.R.R.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[PEGAcOHNH2].K.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.E.E.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Cysteamine]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.K.K.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeW].S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeS].Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[NMeY].Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeW].C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[NMeC].G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[NMeF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[NMeY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[NMeW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NMeN].Y.W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeY].W.S.Y.Y.[Sar].W.C.G.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[1Nal].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[1Nal].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.P.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.P.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.R.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.R.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[NMeA].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[NMeA].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.P.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.P.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.R.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NMeA].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.P.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.P.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].R.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.R.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[Sar].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[Sar].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[hF].[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.D.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.R.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.R.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[dP].N.Y.W.S.Y.Y.P.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.R.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.R.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[dP].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].K.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Bhv].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Bhv].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.K.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.K.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[hF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NPhEtG].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[NPhEtG].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NEtAla].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[NEtAla].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[hF].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.D.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.P.N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.R.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].R.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].E.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.K.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[Sar].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Sar].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.K.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.K.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].P.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.E.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.K.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Sar].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Sar].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[Sar].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.K.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].K.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[NMeA].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.[NMeA].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[NMeA].C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].P.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].R.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.R.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[NMeA].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[NMeA].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[dY].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.[Dap].Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[Phe4COOH].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[hF].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[4Pal].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.[hF].S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.[4Pal].W.S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[Phe4COOH].Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[hF].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[Phe4COOH].S.Y.Y.[Sar].W.C.[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.[4Pal].S.Y.Y.[Sar].W.C.[AAAA]}$$$$", "CHEM1": "CHEM1{[Biotin]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/helmtest_CHEM1_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM1": "CHEM1{[Biotin]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/input_data_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[daMeN].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].[BBBB].W.C.[daMeN]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/input_data_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[daMeN].[AAAA]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].[BBBB].W.C.[daMeN]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/input_data_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[daMeN].[AAAA]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 2 | PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].[BBBB].W.C.[daMeN]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_chain_peps_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_chain_peps_PEPTIDE2_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE2": "PEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]}$$$$\nPEPTIDE2{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE2{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_chain_peps_PEPTIDE3_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE3": "PEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]}$$$$\nPEPTIDE3{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C}$$$$\nPEPTIDE3{[ClAc].W.N.Y.Y.W.[Sar].Y.S.F.S.[Sar].W.Y.C.G.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[hC].[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[Pen].[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[BrPr].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.[dW].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].[dF].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.[dY].W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.[dY].[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.[dS].W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].[dN].Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.E.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].[dW].C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.E.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].E.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.E.N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.[dW].S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.[dY].Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.[dS].Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].E.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.E.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.E.W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.[dC].[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.[1Nal].[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.E.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.E.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.E.S.Y.Y.[Sar].W.C.[NH2]}$$$$\nPEPTIDE3{[ClAc].F.Y.S.W.[Sar].N.Y.W.E.Y.Y.[Sar].W.C.[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_CHEM1_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM1": "CHEM1{[cRCM]}$$$$\nCHEM1{[cRCM]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[PEG2diacid]}$$$$\nCHEM1{[C16]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[Butylene]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_CHEM2_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM2": "CHEM2{[CH2]}$$$$\nCHEM2{[CH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_CHEM3_only_output.json: -------------------------------------------------------------------------------- 1 | {"CHEM3": "CHEM3{[CH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[Ac].[LysN3].R.R.R.R.C.P.L.Y.I.S.[NMeY].D.P.V.C.R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.R.R.[dE].P.L.Y.I.S.Y.D.P.V.[Dab].R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ape].R.R.R.C.P.L.Y.I.S.Y.D.P.V.C.R.R.R.[Ape].[NH2]}$$$$\nPEPTIDE1{[Ac].R.Q.I.K.I.W.F.Q.N.R.R.M.K.W.K.K.G.[LysN3].[AEEA].[dC].P.L.Y.I.S.Y.D.P.V.C.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.R.R.[dC].[Prot3OH].L.Y.I.S.Y.D.P.V.C.R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.[dC].P.L.Y.I.S.Y.D.P.V.[Pen].R.R.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}$$$$\nPEPTIDE1{A.C.A.K.C.A.[AEEA]}$$$$\nPEPTIDE1{[Ac].K.[dR].[dR].[dR].[dR].[dC].[dProt3Ph].L.Y.I.[aMeS].Y.D.P.V.C.[dR].[dR].[dR].[dR].[NH2]}$$$$\nPEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}$$$$\nPEPTIDE1{[Ac].[dC].[Prot3Ph].L.F.I.[dApe].Y.D.P.V.C.[Hag].[NH2]}$$$$\nPEPTIDE1{[2moPyr].F.R.[4Pal].L.Y.[Nva].[NMeF]}$$$$\nPEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[hE].[NH2]}$$$$\nPEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[Apm].[NH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_PEPTIDE2_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE2": "PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}$$$$\nPEPTIDE2{A.C.A.K.C.A}$$$$\nPEPTIDE2{[TCO].[PEG6NH2acid]}$$$$\nPEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[Ac].[LysN3].R.R.R.R.C.P.L.Y.I.S.[NMeY].D.P.V.C.R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.R.R.[dE].P.L.Y.I.S.Y.D.P.V.[Dab].R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ape].R.R.R.C.P.L.Y.I.S.Y.D.P.V.C.R.R.R.[Ape].[NH2]}$$$$\nPEPTIDE1{[Ac].R.Q.I.K.I.W.F.Q.N.R.R.M.K.W.K.K.G.[LysN3].[AEEA].[dC].P.L.Y.I.S.Y.D.P.V.C.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.R.R.[dC].[Prot3OH].L.Y.I.S.Y.D.P.V.C.R.R.R.R.[NH2]}$$$$\nPEPTIDE1{[Ac].[LysN3].R.R.[dC].P.L.Y.I.S.Y.D.P.V.[Pen].R.R.[NH2]}$$$$\nPEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}$$$$\nPEPTIDE1{A.C.A.K.C.A.[AEEA]}$$$$\nPEPTIDE1{[Ac].K.[dR].[dR].[dR].[dR].[dC].[dProt3Ph].L.Y.I.[aMeS].Y.D.P.V.C.[dR].[dR].[dR].[dR].[NH2]}$$$$\nPEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}$$$$\nPEPTIDE1{[Ac].[dC].[Prot3Ph].L.F.I.[dApe].Y.D.P.V.C.[Hag].[NH2]}$$$$\nPEPTIDE1{[2moPyr].F.R.[4Pal].L.Y.[Nva].[NMeF]}$$$$\nPEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[hE].[NH2]}$$$$\nPEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[Apm].[NH2]}$$$$", "CHEM1": "CHEM1{[cRCM]}$$$$\nCHEM1{[cRCM]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[PEG2diacid]}$$$$\nCHEM1{[C16]}$$$$\nCHEM1{[CH2]}$$$$\nCHEM1{[Butylene]}$$$$", "PEPTIDE2": "PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}$$$$\nPEPTIDE2{A.C.A.K.C.A}$$$$\nPEPTIDE2{[TCO].[PEG6NH2acid]}$$$$\nPEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$$$$", "CHEM2": "CHEM2{[CH2]}$$$$\nCHEM2{[CH2]}$$$$", "CHEM3": "CHEM3{[CH2]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/multi_pep_chem_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.C.P.L.Y.I.S.[NMeY].D.P.V.C.R.R.R.R.[NH2]}$PEPTIDE1,PEPTIDE1,7:R3-17:R3$$$V2.0 2 | PEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,CHEM1,2:R3-1:R1|PEPTIDE1,CHEM1,12:R3-1:R2$$$V2.0 3 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.[dE].P.L.Y.I.S.Y.D.P.V.[Dab].R.R.R.R.[NH2]}$PEPTIDE1,PEPTIDE1,7:R3-17:R3$$$V2.0 4 | PEPTIDE1{[Ape].R.R.R.C.P.L.Y.I.S.Y.D.P.V.C.R.R.R.[Ape].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,CHEM1,1:R3-1:R1|PEPTIDE1,CHEM1,19:R3-1:R2|PEPTIDE1,PEPTIDE1,5:R3-15:R3$$$V2.0 5 | PEPTIDE1{[Ac].R.Q.I.K.I.W.F.Q.N.R.R.M.K.W.K.K.G.[LysN3].[AEEA].[dC].P.L.Y.I.S.Y.D.P.V.C.R.[NH2]}$PEPTIDE1,PEPTIDE1,21:R3-31:R3$$$V2.0 6 | PEPTIDE1{[Ac].[LysN3].R.R.R.R.[dC].[Prot3OH].L.Y.I.S.Y.D.P.V.C.R.R.R.R.[NH2]}|CHEM1{[CH2]}$PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,17:R3-1:R2$$$V2.0 7 | PEPTIDE1{[Ac].[LysN3].R.R.[dC].P.L.Y.I.S.Y.D.P.V.[Pen].R.R.[NH2]}|CHEM1{[CH2]}$PEPTIDE1,CHEM1,5:R3-1:R1|PEPTIDE1,CHEM1,15:R3-1:R2$$$V2.0 8 | PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0 9 | PEPTIDE1{A.C.A.K.C.A.[AEEA]}|PEPTIDE2{A.C.A.K.C.A}|CHEM1{[C16]}|CHEM2{[CH2]}|CHEM3{[CH2]}$PEPTIDE1,PEPTIDE2,7:R2-4:R3|PEPTIDE1,CHEM1,4:R3-1:R2|PEPTIDE2,CHEM1,4:R3-1:R1|PEPTIDE1,CHEM2,2:R3-1:R1|PEPTIDE1,CHEM2,5:R3-1:R2|PEPTIDE2,CHEM3,2:R3-1:R1|PEPTIDE2,CHEM3,5:R3-1:R2$$$V2.0 10 | PEPTIDE1{[Ac].K.[dR].[dR].[dR].[dR].[dC].[dProt3Ph].L.Y.I.[aMeS].Y.D.P.V.C.[dR].[dR].[dR].[dR].[NH2]}|PEPTIDE2{[TCO].[PEG6NH2acid]}|CHEM1{[CH2]}$PEPTIDE1,PEPTIDE2,2:R3-2:R2|PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,17:R3-1:R2$$$V2.0 11 | PEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}|PEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$PEPTIDE1,PEPTIDE2,12:R3-4:R2|PEPTIDE1,PEPTIDE1,16:R3-20:R3$$$V2.0 12 | PEPTIDE1{[Ac].[dC].[Prot3Ph].L.F.I.[dApe].Y.D.P.V.C.[Hag].[NH2]}|CHEM1{[Butylene]}|CHEM2{[CH2]}$PEPTIDE1,CHEM1,7:R3-1:R1|PEPTIDE1,CHEM1,13:R3-1:R2|PEPTIDE1,CHEM2,2:R3-1:R1|PEPTIDE1,CHEM2,12:R3-1:R2$$$V2.0 13 | PEPTIDE1{[2moPyr].F.R.[4Pal].L.Y.[Nva].[NMeF]}$PEPTIDE1,PEPTIDE1,1:R1-8:R2$$$V2.0 14 | PEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[hE].[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-8:R3$$$V2.0 15 | PEPTIDE1{[dF].P.K.L.Y.[Nle].[NMeF].[Apm].[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-8:R3$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/test_data_PEPTIDE1_only_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.R.Y.L.Y.[Ahp].F.C.G.K.K.[NH2]}$$$$\nPEPTIDE1{[c3amCb1c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$$$$\nPEPTIDE1{[2amTz5c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/test_data_all_peptides_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "PEPTIDE1{[ClAc].F.R.Y.L.Y.[Ahp].F.C.G.K.K.[NH2]}$$$$\nPEPTIDE1{[c3amCb1c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$$$$\nPEPTIDE1{[2amTz5c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$$$$"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignSubPeptides/test_split_sub_peptides/test_data_input.txt: -------------------------------------------------------------------------------- 1 | PEPTIDE1{[ClAc].F.R.Y.L.Y.[Ahp].F.C.G.K.K.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-9:R3$$$V2.0 2 | PEPTIDE1{[c3amCb1c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$PEPTIDE1,PEPTIDE1,1:R1-8:R2$$$V2.0 3 | PEPTIDE1{[2amTz5c].[d1Nal].R.K.[Nle].Y.[Nle].[NMeF]}$PEPTIDE1,PEPTIDE1,1:R1-8:R2$$$V2.0 -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignUtils/CHEM1_TEST_mafft.txt: -------------------------------------------------------------------------------- 1 | > CHEM1 2 |  3 | > CHEM1 4 |  5 | > CHEM1 6 |  7 | > CHEM1 8 |  9 | > CHEM1 10 |  11 | > CHEM1 12 |  13 | > CHEM1 14 |  15 | > CHEM1 16 |  17 | -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignUtils/PEPTIDE1_TEST_mafft.txt: -------------------------------------------------------------------------------- 1 | > PEPTIDE1 2 | RRRRCPLYISDPVCRRRR 3 | > PEPTIDE1 4 | PLYISYDPV 5 | > PEPTIDE1 6 | RRRRPLYISYDPVRRRR 7 | > PEPTIDE1 8 | RRRCPLYISYDPVCRRR 9 | > PEPTIDE1 10 | RQIKIWFQNRRMKWKKG PLYISYDPVCR 11 | > PEPTIDE1 12 | RRRR LYISYDPVCRRRR 13 | > PEPTIDE1 14 | RR PLYISYDPVRR 15 | > PEPTIDE1 16 | FSVRRVASCGGK 17 | > PEPTIDE1 18 | ACAKCA 19 | > PEPTIDE1 20 | K LYIYDPVC 21 | > PEPTIDE1 22 | HQGTFTSEYSKYLDERAAKDFVQWLLNK 23 | > PEPTIDE1 24 |  LFIYDPVC 25 | > PEPTIDE1 26 | FRLY 27 | > PEPTIDE1 28 | PKLY 29 | > PEPTIDE1 30 | PKLY! 31 | -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignUtils/PEPTIDE1_mafft_aligned.txt: -------------------------------------------------------------------------------- 1 | > PEPTIDE1 2 | --------------RRRRCPLYISDPVCRRRR 3 | > PEPTIDE1 4 | -------------------PLYISYDPV---- 5 | > PEPTIDE1 6 | --------------RRRRPLYISYDPVRRRR 7 | > PEPTIDE1 8 | ----------------RRRCPLYISYDPVCRRR 9 | > PEPTIDE1 10 | RQIKIWFQNRRMKWKKG PLYISYDPVC---R 11 | > PEPTIDE1 12 | --------------RRRR LYISYDPVCRRRR 13 | > PEPTIDE1 14 | ----------------RR PLYISYDPV--RR 15 | > PEPTIDE1 16 | ------FSV-------RRVASCGG----K 17 | > PEPTIDE1 18 | --------------------ACAKCA --------- 19 | > PEPTIDE1 20 | --------------K LYIYDPVC 21 | > PEPTIDE1 22 | H--QGTFTSEYSKYLDERAAKDFVQWLLN----K 23 | > PEPTIDE1 24 | ------------------- LFIYDPVC--- 25 | > PEPTIDE1 26 | ------F------------RLY---------- 27 | > PEPTIDE1 28 | -------------------PKLY-------- 29 | > PEPTIDE1 30 | -------------------PKLY--------! 31 | -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignUtils/decode.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE" : {"input": ["> PEPTIDE1\n\u0001--------------\u0002RRRRCPLYIS\u0003DPVCRRRR\u0004\n", "> PEPTIDE1\n\u0001-------------------\u0005PLYISYDPV\u0006----\u0004\n", "> PEPTIDE1\n\u0001--------------\u0002RRRR\u0007PLYISYDPV\u0008RRRR\u0004\n", "> PEPTIDE1\n\u0006----------------RRRCPLYISYDPVCRRR\u0006\u0004\n", "> PEPTIDE1\n\u0001RQIKIWFQNRRMKWKKG\u0002\t\u000bPLYISYDPVC---R\u0004\n", "> PEPTIDE1\n\u0001--------------\u0002RRRR\u000b\u000cLYISYDPVCRRRR\u0004\n", "> PEPTIDE1\n\u0001----------------\u0002RR\u000bPLYISYDPV\u000e--RR\u0004\n", "> PEPTIDE1\n\u000f------FSV-------\u0010\u0011RR\u0012VA\u0011S\u0013CGG----K\u0004\n", "> PEPTIDE1\n--------------------ACAKCA\t---------\n", "> PEPTIDE1\n\u0001--------------K\u0014\u0014\u0014\u0014\u000b\u0015LYI\u0016YDPVC\u0014\u0014\u0014\u0014\u0004\n", "> PEPTIDE1\nH--\u0017QGTFTSEYSKYLDERAAKDFVQWLLN----K\u0004\n", "> PEPTIDE1\n\u0001-------------------\u000b\u0018LFI\u0005YDPVC---\u0019\u0004\n", "> PEPTIDE1\n\u001a------F------------R\u001bLY\u001c\u0012----------\n", "> PEPTIDE1\n\u001d-------------------PKLY\u001e\u0012--------\u001f\u0004\n", "> PEPTIDE1\n\u001d-------------------PKLY\u001e\u0012--------!\u0004\n"], 2 | "expected_output": ["> PEPTIDE1\n[Ac]--------------[LysN3]RRRRCPLYIS[NMeY]DPVCRRRR[NH2]\n", "> PEPTIDE1\n[Ac]-------------------[dApe]PLYISYDPV[Ape]----[NH2]\n", "> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dE]PLYISYDPV[Dab]RRRR[NH2]\n", "> PEPTIDE1\n[Ape]----------------RRRCPLYISYDPVCRRR[Ape][NH2]\n", "> PEPTIDE1\n[Ac]RQIKIWFQNRRMKWKKG[LysN3][AEEA][dC]PLYISYDPVC---R[NH2]\n", "> PEPTIDE1\n[Ac]--------------[LysN3]RRRR[dC][Prot3OH]LYISYDPVCRRRR[NH2]\n", "> PEPTIDE1\n[Ac]----------------[LysN3]RR[dC]PLYISYDPV[Pen]--RR[NH2]\n", "> PEPTIDE1\n[ClAc]------FSV-------[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CGG----K[NH2]\n", "> PEPTIDE1\n--------------------ACAKCA[AEEA]---------\n", "> PEPTIDE1\n[Ac]--------------K[dR][dR][dR][dR][dC][dProt3Ph]LYI[aMeS]YDPVC[dR][dR][dR][dR][NH2]\n", "> PEPTIDE1\nH--[dS]QGTFTSEYSKYLDERAAKDFVQWLLN----K[NH2]\n", "> PEPTIDE1\n[Ac]-------------------[dC][Prot3Ph]LFI[dApe]YDPVC---[Hag][NH2]\n", "> PEPTIDE1\n[2moPyr]------F------------R[4Pal]LY[Nva][NMeF]----------\n", "> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[hE][NH2]\n", "> PEPTIDE1\n[dF]-------------------PKLY[Nle][NMeF]--------[Apm][NH2]\n"]}, 3 | "CHEM2" : {"input": ["> CHEM1\n\u0001\n", "> CHEM1\n\u0001\n", "> CHEM1\n\u0002\n", "> CHEM1\n\u0002\n", "> CHEM1\n\u0003\n", "> CHEM1\n\u0004\n", "> CHEM1\n\u0002\n", "> CHEM1\n\u0005\n"], 4 | "expected_output": ["> CHEM1\n[cRCM]\n", "> CHEM1\n[cRCM]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[PEG2diacid]\n", "> CHEM1\n[C16]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[Butylene]\n"]}} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_AlignUtils/input.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1" : ["> PEPTIDE1\n[Ac][LysN3]RRRRCPLYIS[NMeY]DPVCRRRR[NH2]\n", "> PEPTIDE1\n[Ac][dApe]PLYISYDPV[Ape][NH2]\n", "> PEPTIDE1\n[Ac][LysN3]RRRR[dE]PLYISYDPV[Dab]RRRR[NH2]\n", "> PEPTIDE1\n[Ape]RRRCPLYISYDPVCRRR[Ape][NH2]\n", "> PEPTIDE1\n[Ac]RQIKIWFQNRRMKWKKG[LysN3][AEEA][dC]PLYISYDPVCR[NH2]\n", "> PEPTIDE1\n[Ac][LysN3]RRRR[dC][Prot3OH]LYISYDPVCRRRR[NH2]\n", "> PEPTIDE1\n[Ac][LysN3]RR[dC]PLYISYDPV[Pen]RR[NH2]\n", "> PEPTIDE1\n[ClAc]FSV[Sar][Ahp]RR[NMeF]VA[Ahp]S[Bip]CGGK[NH2]\n", "> PEPTIDE1\nACAKCA[AEEA]\n", "> PEPTIDE1\n[Ac]K[dR][dR][dR][dR][dC][dProt3Ph]LYI[aMeS]YDPVC[dR][dR][dR][dR][NH2]\n", "> PEPTIDE1\nH[dS]QGTFTSEYSKYLDERAAKDFVQWLLNK[NH2]\n", "> PEPTIDE1\n[Ac][dC][Prot3Ph]LFI[dApe]YDPVC[Hag][NH2]\n", "> PEPTIDE1\n[2moPyr]FR[4Pal]LY[Nva][NMeF]\n", "> PEPTIDE1\n[dF]PKLY[Nle][NMeF][hE][NH2]\n", "> PEPTIDE1\n[dF]PKLY[Nle][NMeF][Apm][NH2]\n"], 2 | "CHEM1" : ["> CHEM1\n[cRCM]\n", "> CHEM1\n[cRCM]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[PEG2diacid]\n", "> CHEM1\n[C16]\n", "> CHEM1\n[CH2]\n", "> CHEM1\n[Butylene]\n"]} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_ApiUtils/aligned.json: -------------------------------------------------------------------------------- 1 | [{"PolymerID": "PEPTIDE2", "AlignedSubpeptide": "[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]", "HELM": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}|PEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-16:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3$$$V2.0", "ID": "L-000000000", "AlignedSeq": "[ClAc]-FYSW[Sar]NYWSYY[Sar]WC-[NH2]", "PEPTIDE2_0": "ClAc", "PEPTIDE2_1": "-", "PEPTIDE2_2": "F", "PEPTIDE2_3": "Y", "PEPTIDE2_4": "S", "PEPTIDE2_5": "W", "PEPTIDE2_6": "Sar", "PEPTIDE2_7": "N", "PEPTIDE2_8": "Y", "PEPTIDE2_9": "W", "PEPTIDE2_10": "S", "PEPTIDE2_11": "Y", "PEPTIDE2_12": "Y", "PEPTIDE2_13": "Sar", "PEPTIDE2_14": "W", "PEPTIDE2_15": "C", "PEPTIDE2_16": "-", "PEPTIDE2_17": "NH2"}, {"PolymerID": "PEPTIDE2", "AlignedSubpeptide": "[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]", "HELM": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}|PEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.A.[Sar].W.C.G.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-15:R3$$$V2.0", "ID": "L-000000001", "AlignedSeq": "[ClAc]-FYSW[Sar]NYWSYA[Sar]WCG[NH2]", "PEPTIDE2_0": "ClAc", "PEPTIDE2_1": "-", "PEPTIDE2_2": "F", "PEPTIDE2_3": "Y", "PEPTIDE2_4": "S", "PEPTIDE2_5": "W", "PEPTIDE2_6": "Sar", "PEPTIDE2_7": "N", "PEPTIDE2_8": "Y", "PEPTIDE2_9": "W", "PEPTIDE2_10": "S", "PEPTIDE2_11": "Y", "PEPTIDE2_12": "A", "PEPTIDE2_13": "Sar", "PEPTIDE2_14": "W", "PEPTIDE2_15": "C", "PEPTIDE2_16": "G", "PEPTIDE2_17": "NH2"}, {"PolymerID": "PEPTIDE2", "AlignedSubpeptide": "[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]", "HELM": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}|PEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.A.W.C.G.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-17:R1$$$V2.0", "ID": "L-000000002", "AlignedSeq": "[ClAc]-FYSW[Sar]NYWSYYAWCG[NH2]", "PEPTIDE2_0": "ClAc", "PEPTIDE2_1": "-", "PEPTIDE2_2": "F", "PEPTIDE2_3": "Y", "PEPTIDE2_4": "S", "PEPTIDE2_5": "W", "PEPTIDE2_6": "Sar", "PEPTIDE2_7": "N", "PEPTIDE2_8": "Y", "PEPTIDE2_9": "W", "PEPTIDE2_10": "S", "PEPTIDE2_11": "Y", "PEPTIDE2_12": "Y", "PEPTIDE2_13": "A", "PEPTIDE2_14": "W", "PEPTIDE2_15": "C", "PEPTIDE2_16": "G", "PEPTIDE2_17": "NH2"}, {"PolymerID": "PEPTIDE2", "AlignedSubpeptide": "[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]", "HELM": "PEPTIDE1{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].W.C.[NH2]}|PEPTIDE2{[ClAc].F.Y.S.W.[Sar].N.Y.W.S.Y.Y.[Sar].A.C.G.[NH2]}$PEPTIDE1,PEPTIDE1,1:R1-16:R1|PEPTIDE1,PEPTIDE1,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE2,PEPTIDE2,1:R1-17:R1$$$V2.0", "ID": "L-000000003", "AlignedSeq": "[ClAc]-FYSW[Sar]NYWSYY[Sar]ACG[NH2]", "PEPTIDE2_0": "ClAc", "PEPTIDE2_1": "-", "PEPTIDE2_2": "F", "PEPTIDE2_3": "Y", "PEPTIDE2_4": "S", "PEPTIDE2_5": "W", "PEPTIDE2_6": "Sar", "PEPTIDE2_7": "N", "PEPTIDE2_8": "Y", "PEPTIDE2_9": "W", "PEPTIDE2_10": "S", "PEPTIDE2_11": "Y", "PEPTIDE2_12": "Y", "PEPTIDE2_13": "Sar", "PEPTIDE2_14": "A", "PEPTIDE2_15": "C", "PEPTIDE2_16": "G", "PEPTIDE2_17": "NH2"}] -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_ApiUtils/example.json: -------------------------------------------------------------------------------- 1 | [{"ID": "L-000000000", "HELM": "PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$"}, {"ID": "L-000000001", "HELM": "PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$"}] -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_ApiUtils/raw_output.json: -------------------------------------------------------------------------------- 1 | {"PEPTIDE1": "> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n> PEPTIDE1\n[ClAc]FYSW[Sar]NYWSYY[Sar]WC[NH2]\n", "PEPTIDE2": "> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYA[Sar]WCG[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYYAWCG[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]ACG[NH2]\n> PEPTIDE2\n[ClAc]WNYYW[Sar]YSFS[Sar]WYCG-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar][dW]C-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC--\n> PEPTIDE2\n[ClAc]WNYYW[Sar]YSFS[Sar]WYCG-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[hC]-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[Pen]-[NH2]\n> PEPTIDE2\n[ClAc]F-Y[dS]W[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWEYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NEWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[BrPr]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]E-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YEW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YS[dW][Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]N[dY]WSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc][dF]-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]N[dY]WSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NY[dW]SYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYW[dS]YY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSY[dY][Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-Y[dS]W[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar][dN]YWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWS[dY]Y[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YEW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[dC]-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar][dW]C-[NH2]\n> PEPTIDE2\n[ClAc]F-YSWENYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYE[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYYEWC-[NH2]\n> PEPTIDE2\n[ClAc]E-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSE[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSWENYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NY[dW]SYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWS[dY]Y[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYW[dS]YY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]--YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]-C-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]EYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NEWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYYEWC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[dC]-[NH2]\n> PEPTIDE2\n[ClAc]F-YS[1Nal][Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-ESW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSE[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYESYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWEYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n", "PEPTIDE3": "> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYA[Sar]WCG[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYYAWCG[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]ACG[NH2]\n> PEPTIDE3\n[ClAc]WNYYW[Sar]YSFS[Sar]WYCG-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar][dW]C-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC--\n> PEPTIDE3\n[ClAc]WNYYW[Sar]YSFS[Sar]WYCG-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[hC]-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[Pen]-[NH2]\n> PEPTIDE3\n[ClAc]F-Y[dS]W[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWEYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NEWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[BrPr]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]E-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YEW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YS[dW][Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]N[dY]WSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc][dF]-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]N[dY]WSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NY[dW]SYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYW[dS]YY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSY[dY][Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-Y[dS]W[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar][dN]YWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWS[dY]Y[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YEW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[dC]-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar][dW]C-[NH2]\n> PEPTIDE3\n[ClAc]F-YSWENYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYE[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYYEWC-[NH2]\n> PEPTIDE3\n[ClAc]E-YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSE[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSWENYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NY[dW]SYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWS[dY]Y[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYW[dS]YY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]--YSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]-C-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]EYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NEWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYYEWC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWSYY[Sar]W[dC]-[NH2]\n> PEPTIDE3\n[ClAc]F-YS[1Nal][Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-ESW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSE[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYESYY[Sar]WC-[NH2]\n> PEPTIDE3\n[ClAc]F-YSW[Sar]NYWEYY[Sar]WC-[NH2]\n"} -------------------------------------------------------------------------------- /tests/unit_tests/resources/test_ScoringUtils/aligned_seqs.txt: -------------------------------------------------------------------------------- 1 | > PEPTIDE1 2 | --------------RRRRCPLYISDPVCRRRR 3 | > PEPTIDE1 4 | -------------------PLYISYDPV---- 5 | > PEPTIDE1 6 | --------------RRRRPLYISYDPVRRRR 7 | > PEPTIDE1 8 | ----------------RRRCPLYISYDPVCRRR 9 | > PEPTIDE1 10 | RQIKIWFQNRRMKWKKG PLYISYDPVC---R 11 | > PEPTIDE1 12 | --------------RRRR LYISYDPVCRRRR 13 | > PEPTIDE1 14 | ----------------RR PLYISYDPV--RR 15 | > PEPTIDE1 16 | -------------FSVRRVASCGG----K 17 | > PEPTIDE1 18 | --------------------ACAKCA --------- 19 | > PEPTIDE1 20 | --------------K LYIYDPVC 21 | > PEPTIDE1 22 | H--QGTFTSEYSKYLDERAAKDFVQWLLN----K 23 | > PEPTIDE1 24 | ------------------- LFIYDPVC--- 25 | > PEPTIDE1 26 | ------------------FRLY---------- 27 | > PEPTIDE1 28 | -------------------PKLY-------- 29 | > PEPTIDE1 30 | -------------------PKLY--------! 31 | -------------------------------------------------------------------------------- /tests/unit_tests/test_ApiUtils.py: -------------------------------------------------------------------------------- 1 | import json 2 | import pytest 3 | 4 | from alignment.ApiUtils import extract_helm_from_json, extract_subpeptide, extract_monomer, \ 5 | extract_aligned_sequences, json_output, escape_double_quotes_in_input 6 | 7 | 8 | # Pytest fixtures 9 | @pytest.fixture 10 | def helm_seq(): 11 | """Returns HELM string""" 12 | return "PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0" 13 | 14 | 15 | @pytest.fixture 16 | def path_to_data(): 17 | # Returns path to data 18 | 19 | path = "tests/unit_tests/resources/test_ApiUtils/" 20 | return path 21 | 22 | 23 | """ 24 | Below are tests for function extract_helm_from_json() 25 | """ 26 | 27 | 28 | def test_extract_helm_from_json(path_to_data): 29 | """Test extraction of HELM strings from JSON input""" 30 | 31 | path = path_to_data + 'example.json' 32 | with open(path) as file: 33 | input_json = json.load(file) 34 | output = extract_helm_from_json(input_json) 35 | expected_output = "PEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.a" \ 36 | "MeL}$$$$\nPEPTIDE1{F.C.R.C.A.C.C.D.M.K.L}|PEPTIDE2{F.C.R.C.A.C.C.D.M.K.aMeL}$$$$" 37 | 38 | assert output == expected_output 39 | 40 | 41 | @pytest.mark.xfail(raises=KeyError) 42 | def test_extract_helm_from_json_fail(): 43 | """Test that KeyError is raised""" 44 | 45 | input_helm = [{"ID": "L-000000000"}, 46 | {"ID": "L-000000001"}] 47 | 48 | # Call function on input with no HELM entries 49 | extract_helm_from_json(input_helm) 50 | 51 | 52 | """ 53 | Below are tests for function extract_subpeptide() 54 | """ 55 | 56 | 57 | def test_extract_subpeptide(helm_seq): 58 | """Test the extraction of subpeptide from HELM string""" 59 | 60 | expected_output = "[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]" 61 | output = extract_subpeptide("PEPTIDE1", helm_seq) 62 | 63 | assert output == expected_output 64 | 65 | 66 | def test_extract_subpeptide_missing(helm_seq): 67 | """Test that function returns None, whet peptide is not in the HEL sequence""" 68 | 69 | output = extract_subpeptide("PEPTIDE3", helm_seq) 70 | 71 | assert output is None 72 | 73 | 74 | """ 75 | Below are tests for function extract_monomer() 76 | """ 77 | 78 | 79 | def test_extract_monomer(): 80 | """Test the correct work of generator function extract_monomer()""" 81 | 82 | aligned_seq = "[Ac]--------------[LysN3]RRRRCPLYIS[NMeY]DPVCRRRR[NH2]" 83 | monos = ['Ac', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'LysN3', 'R', 'R', 'R', 'R', 'C', 'P', 'L', 'Y', 'I', 'S', 'NMeY', 'D', 'P', 'V', 'C', 'R', 'R', 'R', 'R', 'NH2'] 84 | 85 | for extracted, mono in zip(extract_monomer(aligned_seq), monos): 86 | assert extracted == mono 87 | 88 | 89 | def test_extract_monomer_corrupted_seq(): 90 | """Test the function on corrupted sequence raises assertion error""" 91 | 92 | # In the following sequence, nnAA LysN3 is missing opening bracket. Should it lead to error? 93 | aligned_seq = "[Ac]----[LysN3RRCPLYISNMeYDPRNH2" 94 | 95 | with pytest.raises(Exception) as excinfo: 96 | [el for el in extract_monomer(aligned_seq)] 97 | 98 | expected_message = f"Non-valid notation of non-natural amino acids in the following sequence {aligned_seq}" 99 | assert str(excinfo.value) == expected_message 100 | 101 | 102 | """ 103 | Below are tests for function extract_aligned_sequences() 104 | """ 105 | 106 | 107 | def test_extract_aligned_sequences(path_to_data): 108 | 109 | path = path_to_data + "aligned.json" 110 | with open(path) as file: 111 | input_json = json.load(file) 112 | expected_output = "> PEPTIDE2\n[ClAc]-FYSW[Sar]NYWSYY[Sar]WC-[NH2]\n> PEPTIDE2\n[ClAc]-FYSW[Sar]NYWSYA[Sar]WCG[NH2]\n> PEPTIDE2\n[ClAc]-FYSW[Sar]NYWSYYAWCG[NH2]\n> PEPTIDE2\n[ClAc]-FYSW[Sar]NYWSYY[Sar]ACG[NH2]" 113 | output = extract_aligned_sequences(input_json) 114 | 115 | assert output == expected_output 116 | 117 | 118 | """ 119 | Below are tests for json_output() method 120 | """ 121 | 122 | 123 | def test_json_output(path_to_data): 124 | """Test the correct creation of JSON output""" 125 | 126 | aligned_path = path_to_data + "raw_output.json" 127 | input_path = path_to_data + "raw_input.json" 128 | expected_path = path_to_data + "json_output.json" 129 | 130 | with open(aligned_path) as aligned, open(input_path) as input_json, open(expected_path) as out: 131 | aligned_data = json.load(aligned) 132 | input_data = json.load(input_json) 133 | expected_output = json.load(out) 134 | 135 | output = json_output(aligned_data, input_data) 136 | 137 | assert output == expected_output 138 | 139 | 140 | """ 141 | Below are test for escape_double_quotes_in_input() method 142 | """ 143 | 144 | 145 | def test_escape_double_quotes_in_input(): 146 | """Test the correct addition of escape characters to the HELM string""" 147 | 148 | input_data = [{'ID': 'L-006579559-000J001', 149 | 'HELM': 'PEPTIDE1{[ClAc].[dF].[dV].[dApe].[dW].[dY].[dD].[dNMeF].G.[dL].[dApe].[dL].[dC].[NH2]}|CHEM1{[tRCM]}$PEPTIDE1,CHEM1,4:R3-1:R1|PEPTIDE1,CHEM1,11:R3-1:R2|PEPTIDE1,PEPTIDE1,1:R1-13:R3$${"chiral":"ena"}$V2.0' 150 | }, 151 | {'ID': 'L-006579556-000H001', 152 | 'HELM': 'PEPTIDE1{[ClAc].[dF].[dV].[dY].[rbaFW].[dY].[dD].[dNMeF].G.[dApe].[dD].[dL].[dC].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,PEPTIDE1,1:R1-13:R3|PEPTIDE1,CHEM1,5:R3-1:R1|PEPTIDE1,CHEM1,10:R3-1:R2$${"chiral":"mix"}$V2.0' 153 | }] 154 | 155 | expected_output = [{'ID': 'L-006579559-000J001', 156 | 'HELM': 'PEPTIDE1{[ClAc].[dF].[dV].[dApe].[dW].[dY].[dD].[dNMeF].G.[dL].[dApe].[dL].[dC].[NH2]}|CHEM1{[tRCM]}$PEPTIDE1,CHEM1,4:R3-1:R1|PEPTIDE1,CHEM1,11:R3-1:R2|PEPTIDE1,PEPTIDE1,1:R1-13:R3$${\\\"chiral\\\":\\\"ena\\\"}$V2.0' 157 | }, 158 | {'ID': 'L-006579556-000H001', 159 | 'HELM': 'PEPTIDE1{[ClAc].[dF].[dV].[dY].[rbaFW].[dY].[dD].[dNMeF].G.[dApe].[dD].[dL].[dC].[NH2]}|CHEM1{[cRCM]}$PEPTIDE1,PEPTIDE1,1:R1-13:R3|PEPTIDE1,CHEM1,5:R3-1:R1|PEPTIDE1,CHEM1,10:R3-1:R2$${\\\"chiral\\\":\\\"mix\\\"}$V2.0' 160 | }] 161 | 162 | result = escape_double_quotes_in_input(input_data) 163 | 164 | for output, expected in zip(result, expected_output): 165 | 166 | assert output["HELM"] == expected["HELM"] 167 | -------------------------------------------------------------------------------- /tests/unit_tests/test_PyHELM_simple.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from alignment.PyHELM_simple import HelmObj, NotationError, Polymer, Connection 4 | 5 | 6 | # Pytest fixtures 7 | @pytest.fixture 8 | def helm_obj(): 9 | # Return empty HELM object 10 | return HelmObj() 11 | 12 | 13 | @pytest.fixture 14 | def helm_string(): 15 | helm_sequence = "PEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0" 16 | 17 | return helm_sequence 18 | 19 | 20 | """ 21 | Test the correct raise of NotationError 22 | """ 23 | 24 | 25 | def test_notation_error(): 26 | with pytest.raises(Exception) as exception: 27 | raise NotationError() 28 | 29 | assert exception.typename == "NotationError" 30 | 31 | 32 | """ 33 | Test correct initiation of the Polymer class 34 | """ 35 | 36 | 37 | def test_polymer_init(): 38 | 39 | polymer = Polymer("PEPTIDE", "[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]", "PEPTIDE1") 40 | 41 | assert polymer.type == "PEPTIDE" 42 | assert polymer.data == "[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]" 43 | assert polymer.name == "PEPTIDE1" 44 | 45 | 46 | def test_polymer_init_incorrectly(): 47 | """ Test the initiation with no arguments""" 48 | 49 | with pytest.raises(Exception) as exception: 50 | Polymer() 51 | 52 | assert exception.typename == "TypeError" 53 | 54 | 55 | """ 56 | Test correct initiation of the Connection class 57 | """ 58 | 59 | 60 | def test_connection_init(): 61 | polymers = ("PEPETIDE1", "CHEM1") 62 | start = (18, "R3") 63 | finish = (1, "R1") 64 | 65 | connection = Connection(polymers, start, finish) 66 | 67 | assert connection.polymers == polymers 68 | assert connection.start == start 69 | assert connection.stop == finish 70 | 71 | 72 | def test_connection_init_incorrectly(): 73 | """ Test the initiation with no arguments""" 74 | 75 | with pytest.raises(Exception) as exception: 76 | Connection() 77 | 78 | assert exception.typename == "TypeError" 79 | 80 | 81 | """ 82 | Below are unit tests of the methods of HelmObj class 83 | """ 84 | 85 | 86 | def test_helmobj_init(): 87 | """Test the correct initiation""" 88 | 89 | helm = HelmObj() 90 | 91 | assert helm.polymers == [] 92 | assert helm.connections == [] 93 | assert helm.attributes == [] 94 | assert helm.data == "" 95 | 96 | 97 | """ 98 | Below are tests for validate_helm() function 99 | """ 100 | 101 | 102 | def test_validate_helm(helm_obj, helm_string): 103 | """Test validation of the correct HELM string""" 104 | 105 | result = helm_obj.validate_helm(helm_string) 106 | assert result is True 107 | 108 | 109 | def test_validate_helm_wrong_number_of_sections(helm_obj): 110 | """Test the validation of incorrect HELM string - incorrect number of sections (parts of HELM, separated by $ symbol)""" 111 | 112 | helm_string = 'PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$' 113 | result = helm_obj.validate_helm(helm_string) 114 | 115 | assert result is False 116 | 117 | 118 | # Fix function! 119 | def test_validate_helm_wrong_connections(helm_obj): 120 | 121 | helm_string = 'PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE3,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$$V2.0' 122 | validation = helm_obj.validate_helm(helm_string) 123 | assert validation is False 124 | 125 | 126 | """ 127 | Below are tests for parse_helm() function 128 | """ 129 | 130 | 131 | def test_parse_helm(helm_obj, helm_string): 132 | 133 | # Parse the string 134 | helm_obj.parse_helm(helm_string) 135 | 136 | # Manually define the polymers, which are present in the input HELM string 137 | polymer1 = Polymer("PEPTIDE", "[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]", "PEPTIDE1") 138 | polymer2 = Polymer("PEPTIDE", "[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]", "PEPTIDE2") 139 | polymer3 = Polymer("CHEM", "[PEG2diacid]", "CHEM1") 140 | 141 | # List of polymers 142 | polymers = [polymer1, polymer2, polymer3] 143 | 144 | # Manually define the connections between polymers, which are present in the input HELM string 145 | connection1 = Connection([polymer1, polymer3], (18, "R3"), (1, "R2")) 146 | connection2 = Connection([polymer2, polymer3], (18, "R3"), (1, "R1")) 147 | connection3 = Connection([polymer2, polymer2], (1, "R1"), (15, "R3")) 148 | connection4 = Connection([polymer1, polymer1], (1, "R1"), (15, "R3")) 149 | 150 | # List of connections 151 | connections = [connection1, connection2, connection3, connection4] 152 | 153 | # Iterate through parsed and manually defined polymers and compare them 154 | for poly_parsed, poly_expected in zip(helm_obj.polymers, polymers): 155 | # Compare the name, type and data of polymers 156 | 157 | assert poly_parsed.type == poly_expected.type 158 | assert poly_parsed.name == poly_expected.name 159 | assert poly_parsed.data == poly_expected.data 160 | 161 | # Iterate through the parsed and manually defined connections and compare them 162 | for i, conn in enumerate(zip(helm_obj.connections, connections)): 163 | 164 | con_parsed, con_expected = conn 165 | 166 | # Iterate through the polymers of parsed connections, and manually defined connections (which are accessed by index) 167 | for poly_parsed, poly_expected in zip(con_parsed.polymers, connections[i].polymers): 168 | # Compare the name, type and data of polymers 169 | 170 | assert poly_parsed.name == poly_expected.name 171 | assert poly_parsed.type == poly_expected.type 172 | assert poly_parsed.data == poly_expected.data 173 | 174 | # Compare start and stop variables of the connection 175 | assert con_parsed.start == con_expected.start 176 | assert con_parsed.stop == con_expected.stop 177 | 178 | 179 | def test_parse_helm_invalid_helm(helm_obj): 180 | """Test that exception is raised, given the corrupted HELM string""" 181 | 182 | # Corrupted HELM string 183 | helm_string = 'PEPTIDE1{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}|CHEM1{[PEG2diacid]}$PEPTIDE1,CHEM1,18:R3-1:R2|PEPTIDE2,CHEM1,18:R3-1:R1|PEPTIDE2,PEPTIDE2,1:R1-15:R3|PEPTIDE1,PEPTIDE1,1:R1-15:R3$$' 184 | 185 | with pytest.raises(Exception) as exception: 186 | helm_obj.parse_helm(helm_string) 187 | 188 | assert str(exception.value) == "Invalid HELM notation" 189 | 190 | 191 | """ 192 | Below are tests for get_polymer_names_from_helm() method 193 | """ 194 | 195 | 196 | def test_get_polymer_names_from_helm(helm_obj, helm_string): 197 | # Test extraction of names of peptides presented in HELM sequence 198 | 199 | result = helm_obj.get_polymer_names_from_helm(helm_string) 200 | expected = ["PEPTIDE1", "PEPTIDE2", "CHEM1"] 201 | assert result == expected 202 | 203 | 204 | """ 205 | Below are tests for get_polymers_from_helm() method 206 | """ 207 | 208 | 209 | def test_get_polymers_from_helm(helm_obj, helm_string): 210 | # Test extraction of distinct polymers from HELM string 211 | 212 | polymer1 = "PEPTIDE1{[Ac].[dApe].P.L.Y.I.S.Y.D.P.V.[Ape].[NH2]}" 213 | polymer2 = "PEPTIDE2{[ClAc].F.S.V.[Sar].[Ahp].R.R.[NMeF].V.A.[Ahp].S.[Bip].C.G.G.K.[NH2]}" 214 | polymer3 = "CHEM1{[PEG2diacid]}" 215 | 216 | expected_polymers = [polymer1, polymer2, polymer3] 217 | 218 | polymers = helm_obj.get_polymers_from_helm(helm_string) 219 | 220 | assert polymers == expected_polymers 221 | 222 | 223 | """ 224 | Below are tests for get_polymers_from_helm() method 225 | """ 226 | 227 | 228 | def test_get_monomers_from_polymer(helm_obj, helm_string): 229 | # Test the extraction of monomers for each distinct peptide, presented in HELM sequence 230 | 231 | data = {"PEPTIDE1": ["[Ac]", "[dApe]", "P", "L", "Y", "I", "S", "Y", "D", "P", "V", "[Ape]", "[NH2]"], 232 | "PEPTIDE2": ["[ClAc]", "F", "S", "V", "[Sar]", "[Ahp]", "R", "R", "[NMeF]", "V", "A", "[Ahp]", "S", "[Bip]", "C", "G", "G", "K", "[NH2]"], 233 | "CHEM1": ["[PEG2diacid]"]} 234 | 235 | for key in data: 236 | monos = helm_obj.get_monomers_from_polymer(helm_string, key) 237 | assert monos == data[key] 238 | 239 | 240 | """ 241 | Below are tests for get_distinct_monomers_from_polymer() method 242 | """ 243 | 244 | 245 | def test_get_distinct_monomers_from_polymer(helm_obj, helm_string): 246 | monos = helm_obj.get_distinct_monomers_from_polymer(helm_string, "PEPTIDE1") 247 | expected_monos = {'V', '[NH2]', '[dApe]', 'L', 'Y', 'D', '[Ape]', 'S', '[Ac]', 'I', 'P'} 248 | 249 | assert monos == expected_monos 250 | -------------------------------------------------------------------------------- /tests/unit_tests/test_ScoringUtils.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from pymsa import MSA, SumOfPairs 4 | from alignment.scoring.ScoringUtils import CustomMatrix, Scoring 5 | 6 | 7 | @pytest.fixture 8 | def path_to_resources(): 9 | # Return path to the test data 10 | 11 | path = "tests/unit_tests/resources/test_ScoringUtils/" 12 | return path 13 | 14 | 15 | @pytest.fixture 16 | def path_to_matrix(path_to_resources): 17 | # Return path to the substitution matrix 18 | 19 | path = path_to_resources + "PEPTIDE1_FOR_SCORING_matrix.txt" 20 | return path 21 | 22 | 23 | @pytest.fixture 24 | def custom_matrix(path_to_matrix): 25 | # Return custom matrix 26 | 27 | matrix = CustomMatrix(path_to_matrix) 28 | return matrix 29 | 30 | 31 | @pytest.fixture 32 | def expected_matrix(path_to_resources): 33 | # Return expected distance matrix 34 | 35 | path = path_to_resources + "expected_matrix.txt" 36 | with open(path, encoding="utf-8") as file: 37 | file = file.readlines() 38 | matrix = dict() 39 | for line in file: 40 | k1, k2, value = line.split("\t") 41 | matrix[(chr(int(k1)), chr(int(k2)))] = float(value) 42 | return matrix 43 | 44 | 45 | @pytest.fixture 46 | def mafft_output(path_to_resources): 47 | # return aligned sequences 48 | 49 | path = path_to_resources + "aligned_seqs.txt" 50 | 51 | with open(path) as file: 52 | aligned_seqs = "".join(file.readlines()) 53 | return aligned_seqs 54 | 55 | 56 | """ 57 | Below are tests for CustomMatrix class 58 | """ 59 | 60 | 61 | def test_CustomMatrix_init(custom_matrix, expected_matrix): 62 | 63 | assert len(custom_matrix.distance_matrix) == len(expected_matrix) 64 | 65 | for key in custom_matrix.distance_matrix: 66 | assert custom_matrix.distance_matrix[key] == expected_matrix[key] 67 | 68 | 69 | """ 70 | Below are tests for read_matrix_from_file() method 71 | """ 72 | 73 | 74 | def test_read_matrix_from_file(path_to_matrix, expected_matrix): 75 | 76 | matrix = CustomMatrix.read_matrix_from_file(path_to_matrix) 77 | assert matrix == expected_matrix 78 | 79 | 80 | """ 81 | Below are tests for Scoring class 82 | """ 83 | 84 | 85 | def test_mafft_output_to_msa(mafft_output): 86 | """Test the correct transformation of the MAFFT output into MSA object""" 87 | 88 | msa = Scoring.mafft_output_to_msa(mafft_output) 89 | 90 | assert msa.is_valid 91 | 92 | aligned_seqs = mafft_output.strip().split("\n") 93 | ids = [i for i in aligned_seqs[::2]] 94 | seqs = [i for i in aligned_seqs[1::2]] 95 | 96 | expected_msa = MSA(seqs, ids) 97 | 98 | for id_out, id_exp, seq_out, seq_exp in zip(msa.ids, expected_msa.ids, msa.sequences, expected_msa.sequences): 99 | 100 | assert id_out == id_exp 101 | assert seq_out == seq_exp 102 | 103 | 104 | """ 105 | Below are tests for sum_of_pairs() method 106 | """ 107 | 108 | 109 | def test_sum_of_pairs(path_to_matrix, mafft_output): 110 | """Test the correct scoring of alignment""" 111 | 112 | msa = Scoring.mafft_output_to_msa(mafft_output) 113 | score = Scoring.sum_of_pairs(msa, path_to_matrix) 114 | 115 | matrix = CustomMatrix(path_to_matrix) 116 | expected_score = SumOfPairs(msa, matrix).compute() 117 | 118 | assert score == expected_score 119 | -------------------------------------------------------------------------------- /tests/unit_tests/test_models.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from alignment.models import Peptide, AlignedPeptide, ApiStatus, \ 4 | MafftVersion, MafftMethods, RealignInput, RealignMethods 5 | 6 | 7 | @pytest.fixture 8 | def peptide_to_align(): 9 | peptide = {"ID": "L-000000010", 10 | "HELM": "PEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}|PEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$PEPTIDE1,PEPTIDE2,12:R3-4:R2|PEPTIDE1,PEPTIDE1,16:R3-20:R3$$$V2.0" 11 | } 12 | 13 | return peptide 14 | 15 | 16 | @pytest.fixture 17 | def aligned_peptide(): 18 | peptide = {"PolymerID": "PEPTIDE1", 19 | "AlignedSubpeptide": "H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]", 20 | "HELM": "PEPTIDE1{H.[dS].Q.G.T.F.T.S.E.Y.S.K.Y.L.D.E.R.A.A.K.D.F.V.Q.W.L.L.N.K.[NH2]}|PEPTIDE2{[C18diacid].[gE].[AEEA].[AEEA]}$PEPTIDE1,PEPTIDE2,12:R3-4:R2|PEPTIDE1,PEPTIDE1,16:R3-20:R3$$$V2.0", 21 | "ID": "L-000000010", 22 | "AlignedSeq": "H--[dS]QGTFTSEYSKYLDERAAKDFVQWLLN----K[NH2]" 23 | } 24 | 25 | return peptide 26 | 27 | 28 | """ 29 | Below are test for Peptide() model 30 | """ 31 | 32 | 33 | def test_Peptide(peptide_to_align): 34 | """Test right initiation of Peptide() model""" 35 | 36 | peptide = Peptide( 37 | ID=peptide_to_align['ID'], 38 | HELM=peptide_to_align['HELM'] 39 | ) 40 | 41 | assert peptide.ID == peptide_to_align['ID'] 42 | assert peptide.HELM == peptide_to_align['HELM'] 43 | 44 | 45 | def test_Peptide_validation_error(): 46 | """Test raising of validation error on wrong initiation""" 47 | 48 | with pytest.raises(Exception) as exception: 49 | Peptide() 50 | 51 | assert exception.typename == "ValidationError" 52 | 53 | 54 | """ 55 | Below are test for AlignedPeptide() model 56 | """ 57 | 58 | 59 | def test_AlignedPeptide(aligned_peptide): 60 | """Test right initiation of AlignedPeptide() model""" 61 | 62 | output = AlignedPeptide( 63 | PolymerID=aligned_peptide["PolymerID"], 64 | AlignedSubpeptide=aligned_peptide['AlignedSubpeptide'], 65 | HELM=aligned_peptide['HELM'], 66 | ID=aligned_peptide['ID'], 67 | AlignedSeq=aligned_peptide['AlignedSubpeptide'] 68 | ) 69 | 70 | assert output.PolymerID == aligned_peptide["PolymerID"] 71 | assert output.AlignedSubpeptide == aligned_peptide['AlignedSubpeptide'] 72 | assert output.HELM == aligned_peptide['HELM'] 73 | assert output.ID == aligned_peptide['ID'] 74 | assert output.AlignedSeq == aligned_peptide['AlignedSubpeptide'] 75 | 76 | 77 | def test_AlignedPeptide_validation_error(): 78 | """Test raising of validation error on wrong initiation""" 79 | 80 | with pytest.raises(Exception) as exception: 81 | AlignedPeptide() 82 | 83 | assert exception.typename == "ValidationError" 84 | 85 | 86 | """ 87 | Below are test for ApiStatus() model 88 | """ 89 | 90 | 91 | def test_ApiStatus(): 92 | 93 | value = "Ok" 94 | status = ApiStatus(Status=value) 95 | 96 | assert status.Status == value 97 | 98 | 99 | def test_ApiStatus_validation_error(): 100 | """Test raising of validation error on wrong initiation""" 101 | 102 | with pytest.raises(Exception) as exception: 103 | ApiStatus() 104 | 105 | assert exception.typename == "ValidationError" 106 | 107 | 108 | """ 109 | Below are test for MafftVersion() model 110 | """ 111 | 112 | 113 | def test_MafftVersion(): 114 | 115 | value = "v7.471 (2020/Jul/3)" 116 | version = MafftVersion(MAFFT_version=value) 117 | 118 | assert version.MAFFT_version == value 119 | 120 | 121 | def test_MafftVersion_validation_error(): 122 | """Test raising of validation error on wrong initiation""" 123 | 124 | with pytest.raises(Exception) as exception: 125 | MafftVersion() 126 | 127 | assert exception.typename == "ValidationError" 128 | 129 | 130 | """ 131 | Below are test for MafftMethods() model 132 | """ 133 | 134 | 135 | def test_MafftMethods(): 136 | methods = ["mafft --auto", "mafft", "linsi", "ginsi", 137 | "einsi", "fftns", "fftnsi", "nwns", "nwnsi"] 138 | 139 | for method in methods: 140 | mafft_method = MafftMethods(method) 141 | 142 | assert mafft_method == method 143 | 144 | 145 | def test_MafftMethods_type_error(): 146 | """Test raising of type error on wrong initiation""" 147 | 148 | with pytest.raises(Exception) as exception: 149 | MafftMethods() 150 | 151 | assert exception.typename == "TypeError" 152 | 153 | 154 | """ 155 | Below are test for RealignInput() model 156 | """ 157 | 158 | 159 | def test_RealignInput(peptide_to_align, aligned_peptide): 160 | 161 | realign_input = RealignInput(aligned_sequences=[aligned_peptide], new_sequences=[peptide_to_align]) 162 | 163 | assert realign_input.aligned_sequences == [aligned_peptide] 164 | assert realign_input.new_sequences == [peptide_to_align] 165 | 166 | 167 | def test_RealignInput_validation_error(): 168 | """Test raising of validation error on wrong initiation""" 169 | 170 | with pytest.raises(Exception) as exception: 171 | RealignInput() 172 | 173 | assert exception.typename == "ValidationError" 174 | 175 | 176 | """ 177 | Below are test for RealignMethods() model 178 | """ 179 | 180 | 181 | def test_RealignMethods(): 182 | 183 | methods = ["add", "addfull", "addlong", "addfragments", "addprofile"] 184 | 185 | for method in methods: 186 | realign_method = RealignMethods(method) 187 | assert realign_method == method 188 | 189 | 190 | def test_RealignMethods_type_error(): 191 | """Test raising of type error on wrong initiation""" 192 | 193 | with pytest.raises(Exception) as exception: 194 | RealignMethods() 195 | 196 | assert exception.typename == "TypeError" 197 | --------------------------------------------------------------------------------