## Appendix  
```
1:procedureStructureAlignment(\(\delta_{1 min},\delta_{1 max},\delta_{1 incr},\delta_{quot},\
u,A,B\))
2:\(m\leftarrow|A|,n\leftarrow|B|\)
3:\(\delta_{1}\leftarrow\delta_{1 min}\)
4:\(H_{mn}\gets m\cdot|B|+n+1\)\(\triangleright\) Hash key matrix encodes all vertex pairs. 5:\(sizeMCS\gets 0\)
6:\(stars\)\(\triangleright\) Declaration of hash table for stars. 7:repeat
8:\(\delta_{2}\leftarrow\delta_{1}\cdot\delta_{quot}\)
9:DetermineMCS(\(\delta_{1},\delta_{2}\))
10:\(\delta_{1}\leftarrow\delta_{1}+\delta_{1 incr}\)
11:until\(\delta_{1}>\delta_{1 max}\lor sizeMCS==m\)\(\triangleright\) See Step 3 in text. 12:endprocedure
13:procedureDetermineMCS(\(\delta_{1},\delta_{2}\))\(\triangleright\) Determines Maximum Common Subgraphs. 14:DetermineStars(\(\delta_{1}\))\(\triangleright\) See Algorithm 2. 15:for\(i\gets 1,|enlargedStars|\)do\(\triangleright\) Corresponding to Step 2 in text. 16:\(star\gets enlargedStars_{i}\)
17:DetermineClique(\(star,\delta_{2}\))\(\triangleright\) See Algorithm 3. 18:endfor
19:\(sizeMCS\leftarrow\)CombineCliques(\(cliques\))
20:endprocedure
```  
**Algorithm 1** The central part of the EpitopeMatch algorithm. Several parameters are supplied by the user, including the minimum, maximum, and increment values of the distance tolerance \(\delta_{1}\) (\(\delta_{1 min},\delta_{1 max},\delta_{1 incr}\)), the quotient \(\delta_{quot}=\delta_{2}/\delta_{1}\), the minimum degree \(\
u\) of vertices in stars and cliques, and the structure \(A\) of the query epitope (\(m\) atoms) and \(B\) of the target protein (\(n\) atoms). ```
1:procedureStructureAlignment(\(\delta_{1 min},\delta_{1 max},\delta_{1 incr},\delta_{quot},\
u,A,B\))
2:\(m\leftarrow|A|,n\leftarrow|B|\)
3:\(\delta_{1}\leftarrow\delta_{1 min}\)
4:\(H_{mn}\gets m\cdot|B|+n+1\)\(\triangleright\) Hash key matrix encodes all vertex pairs. 5:\(sizeMCS\gets 0\)
6:\(stars\)\(\triangleright\) Declaration of hash table for stars. 7:repeat
8:\(\delta_{2}\leftarrow\delta_{1}\cdot\delta_{quot}\)
9:DetermineMCS(\(\delta_{1},\delta_{2}\))
10:\(\delta_{1}\leftarrow\delta_{1}+\delta_{1 incr}\)
11:until\(\delta_{1}>\delta_{1 max}\lor sizeMCS==m\)\(\triangleright\) See Step 3 in text. 12:endprocedure
```  
**Algorithm 2** The central part of the EpitopeMatch algorithm. Several parameters are supplied by the user, including the minimum, maximum, and increment values of the distance tolerance \(\delta_{1}\) (\(\delta_{1 min},\delta_{1 max},\delta_{1 incr}\)), the quotient \(\delta_{quot}=\delta_{2}/\delta_{1}\), the minimum degree \(\
u\) of vertices in stars and cliques, and the structure \(A\) of the query epitope (\(m\) atoms) and \(B\) of the target protein (\(n\) atoms). **Algorithm 2** Pseudocode of Step 1 of EpitopeMatch algorithm covering the determination of stars, i.e. the seed matches. If several condition are fulfilled, including Inequality 2 in line 9, the star graph around atoms \(i\) of \(A\) and \(k\) of \(B\) is extended by an edge to atoms \(j\) of \(A\) and \(l\) of \(B\), and vice versa. Line 10 indicates that the star around \(i\) and \(k\) is addressed by hash key \(H_{ik}\). The corresponding hash table entry in \(stars\) is then also updated. ```
1:procedureDetermineStars(\(\delta_{1}\))
2:\(stars_{old}\gets stars\)
3:for\(i\gets 1,m\)do\(\triangleright\) Dimension \(m\) of square matrix \(D_{A}\). 4:for\(j\gets i+1,m\)do\(\triangleright\) Dimension \(n\) of square matrix \(D_{B}\). 5:for\(l\gets k+1,n\)do
6:if\(s_{i}==t_{k}\wedge s_{j}==t_{l}\)then\(\triangleright\) Atom property comparison. 7:if\(D_{B,kl}\leq D_{A,max}\)then\(\triangleright\) Check distance range. 8:if\(|D_{A,ij}-D_{B,kl}|\leq\delta_{1}\)then\(\triangleright\) Inequality 2.