Protein folding in HP model on hexagonal lattices with diagonals
- Dipan Lal Shaw^{1, 2, 3},
- ASM Shohidull Islam^{1, 2},
- M Sohel Rahman^{1, 2}Email author and
- Masud Hasan^{2, 4}
https://doi.org/10.1186/1471-2105-15-S2-S7
© Shaw et al.; licensee BioMed Central Ltd. 2014
Published: 24 January 2014
Abstract
Three dimensional structure prediction of a protein from its amino acid sequence, known as protein folding, is one of the most studied computational problem in bioinformatics and computational biology. Since, this is a hard problem, a number of simplified models have been proposed in literature to capture the essential properties of this problem. In this paper we introduce the hexagonal lattices with diagonals to handle the protein folding problem considering the well researched HP model. We give two approximation algorithms for protein folding on this lattice. Our first algorithm is a $\frac{5}{3}$-approximation algorithm, which is based on the strategy of partitioning the entire protein sequence into two pieces. Our next algorithm is also based on partitioning approaches and improves upon the first algorithm.
Keywords
Introduction
Protein folding is one of the most studied computational problems in bioinformatics. Many approximation solutions for this problem are given in the literature by using simplified, abstract models. There exist a variety of models attempting to simplify the problem by abstracting only the "essential physical properties" of real proteins. A lattice model for folding amino acids is represented by connected beads in two dimensional lattices or three dimensional cubic lattices and considers a simplified energy function. We can categorize the lattice models into two different classes: Simplified Lattice Models (e.g. [1]) and Realistic Lattice Models [2]. One of the widely used simplified lattice model is the HP model which was first introduced by Dill [1]. In HP model, there are only two types of beads: H represents a hydrophobic or non-polar bead and P represents a polar or hydrophilic one. The main force in the folding process is the hydrophobic-hydrophobic force, i.e., H-H contacts. For optimal embedding, our main goal is to maximize the H-H contacts.
The protein folding problem in HP model is NP-hard [3]. So a number of approximation algorithms have been developed for the HP model on different lattice structures. Hart and Istrail gave the first 4-approximation algorithm for the problem on the 2D square lattice [4]. Later on, Newman [5] improved the approximation ratio to 3 considering the conformation as a folded loop. A $\frac{8}{3}$-approximation algorithm for the problem on the 3D square lattice was given by Hart and Istrail [4]. In [6], the authors introduced square lattice with diagonals and presented algorithms that give an approximation ratio of $\frac{26}{15}$ for the two-dimensional and $\frac{8}{5}$ for the three-dimensional lattice. Later, Newman and Ruhl improved this based on different geometric ideas; they achieved an improved approximation ratio of 0.37501 [7]. To remove the parity problem of the square and cubic lattices Agarwala et al. first proposed the triangular lattice [8]. There, they gave a $\frac{11}{6}$ approximation algorithm. For a more generalized version, namely, the 3D FCC lattice, Agarwala et al. [8] gave an approximation algorithm having an approximation ratio of $\frac{5}{3}$. To alleviate the problem of sharp turns, Jiang and Zhu introduced the hexagonal lattice model and gave an approximation algorithm having approximation ratio of 6 [9]. A linear time approximation algorithm for protein folding in the HP side chain model on extended cubic lattice having an approximation ratio of 0.84 was presented by Heun [10].
A number of heuristic and meta-heuristic techniques have also been applied to tackle the protein folding problem in the literature. A genetic algorithm for the protein folding problem in HP model in 2D square lattice was proposed in [11]. In [12, 13], a hybrid genetic algorithm was presented for HP model in 2D triangular lattice and 3D FCC lattice. The authors in [14] first proposed the pull move set for rectangular lattices, which is used in the HP model under a variety of local search methods. They also showed the completeness and reversibility of the pull move set for rectangular grid lattices. In [15], the authors extended the idea of the pull move set in the local search approach for finding an optimal embedding in 2D triangular grid and the FCC lattice in 3D.
The rest of the paper is organized as follows. In Section 'Preliminaries', we introduce the hexagonal lattice with diagonals and define some related notions. Section 'Our Approaches' describes our algorithms and relevant results. We briefly conclude in Section 'Conclusion.
Preliminaries
In this section, we present the required notions and notations to describe the hexagonal lattice model with diagonals.
Definition The two-dimensional hexagonal lattice with diagonals is an infinite graph G = (V, E) in Euclidian Space with vertex set V = ℝ^{2} and edge set E = {(x, x')|x, x' ∈ ℝ^{2}, |x - x' | ≤ 2}, where |.| denotes the Euclidean norm. An edge e ≡ (x, x') ∈ E is a non diagonal edge iff |x - x' | = 1; otherwise it is a diagonal edge.
We use the well known notion of neighbourhood or adjacency of graph theory: two vertices are adjacent/neighbour to each other if they are connected through an edge. In this connection, the difference between the usual hexagonal model and our propose model lies in the fact that a vertex in the former has three neighbours, whereas in the latter it has additional 9 neighbours, i.e., a total of twelve neighbours (see Figure 1).
Although the lattice is defined as an infinite graph, we will be concerned with only a finite sub-graph of it for each conformation of a protein. The input to the protein folding problem is a finite string p over the alphabet {P, H} where p = {P}*b_{1}{P}^{+}b_{2}{P}^{+}...{P}^{+}b_{ k }{P}*. Here b_{ i } ∈ {H}^{+} for 1 ≤ i ≤ k and let $n={\sum}_{i=1}^{k}\left|{b}_{i}\right|$. Here, H denotes non-polar and P denotes polar amino acids respectively. Often, in what follows, the input string in our problem will be refer to as an HP string. An H-run in an HP string denotes the consecutive H's and a P-run denotes consecutive P's. So, the total number of H-runs is k and total number of H is n. An H-run of even (odd) length is said to be an even H-run (odd H-run). We will now define the valid embeddings and conformation of a protein into this lattice. An embedding is a self-avoiding walk inside the grid.
Now, we define the neighbourhood of an edge in the lattice.
Definition Let e = (x, y) be any edge in G. We define the neighbourhood N(e) of e as the intersection of the neighbour of its endpoints x and y.
Our approaches
In this section, we present two approximation algorithms for protein folding in a hexagonal lattice with diagonal. We start with deducing two upper bounds on the number of possible contacts for any H in the HP string.
An upper bound
We will deduce a bound based on a simple counting argument: we will count the number of neighbours of a vertex in the lattice. We start with the following useful lemmas.
Lemma 0.1 Let p be an HP string and G = (V, E) is a hexagonal lattice with diagonals. If p has a conformation in G, then any H in p can have at most ten contact edges.
Proof: Every vertex in the lattice G has exactly twelve neighbours comprising 3 non-diagonal neighbours and 9 diagonal neighbours (see Figure 1). In this conformation, every H-vertex has exactly two binding edges. Hence 10 edges remain, which could potentially be contact edges. And hence the result follows. □
Lemma 0.2 Let p be an input string for the problem and ϕ be a conformation of p. Let e = (x, y) be a loss edge with respect to ϕ. Then there are at most four alternating edges in N (e).
Proof: If e is a non-diagonal edge, then the neighbourhood of e contains eight vertices (see Figure 5). If e is a diagonal edge, then the neighbourhood of e contains only four vertices (see Figure 6). Now, each of x and y can be incident to at most two binding edges. So, there are at most four binding edges in N (e). It follows immediately that there can be at most four alternating edges adjacent to e. □
Now we are ready to present the upper bound.
Lemma 0.3 For a given HP string p, the the total number of contacts in a conformation ϕ is at most $\mathsf{\text{1}}0n-\frac{\mathsf{\text{1}}}{2}k$, where k is the total number of H-runs and n is the total number of H.
Proof : From Lemma 0.1, we know that the number of contacts is at most 10n. In a confirmation one loss edge incident to H means that it would lose one contact edge. In what follows we will show that there will be at least $\frac{\mathsf{\text{1}}}{2}k$ loss edges in ϕ. Since every H-run is preceded and followed by a total of two alternating edges, it is sufficient to prove that, for each alternating edge in ϕ for p, we have $\frac{\mathsf{\text{1}}}{4}$ loss edge on average. From Lemma 0.2 we know that, for every loss edge there will be at most four alternating edges in its neighbourhood. Alternatively, we can say that, for every four alternating edges there will be at least one loss edge, assuming that the alternating edges are in the neighbourhood of that loss edge. Clearly, if the alternating edges are not within the neighbourhood then the number of loss edges will increase. So, for every alternating edge there will be at least $\frac{\mathsf{\text{1}}}{4}$ loss edge. There are a total of 2k alternating edges. So, the total number of loss edges will be, $\frac{\mathsf{\text{1}}}{4}\times \mathsf{\text{2}}\times k=\frac{\mathsf{\text{1}}}{2}k$. Hence, the result follows. □
Algorithms and lower bounds
Algorithm ChainArrangement
- 1.
Set $f=\u230a\frac{n}{2}\u230b$.
- 2.Suppose F denotes the position in p after the f-th H. Denote by pref F(p) the prefix of p up to position F and by suff F(p) the suffix, that starts right after it. Now,
Approximation ratio for Algorithm ChainArrangement
Now we focus on deducing an approximation ratio for Algorithm ChainArrangement. Suppose that ${m}_{1}=\u230a\frac{n}{2}\u230b$. So, according to Algorithm ChainArrangement, the left (right) chain will contain m_{1} (m_{1} or m_{1} + 1) H's. We need to consider two cases, namely, where m_{1} = 2x + 1 and m_{1} = 2x, with an integer x > 0. In what follows, we will use vw-left chain (vw-right chain) to denote a particular region of the left (right) chain. So, vw could be one of the 4 options, namely, lR (left region), rR (right region), uR (up region) and dR (down region). We also use ϕ_{ CA } to refer to the conformation given by Algorithm ChainArrangement.
case 1: m_{1} = 2x + 1
Number of vertices in each region in left chain ϕ_{ CA }
Region | m_{1} = 2x+ 1 | m_{1} = 2x |
---|---|---|
lR-left chain | x - 2 | x - 2 |
rR-left chain | x - 1 | x - 2 |
uR-left chain | 2 | 2 |
dR-left chain | 2 | 2 |
Since the right chain is symmetric to the left one, both chains will have the same number of vertices if n = 2m_{1}, i.e., all the vertices of the right chain will also have at least $\phantom{\rule{0.5em}{0ex}}\mathcal{C}$ contacts. So the total number of contacts will be at least $\mathsf{\text{2}}\mathcal{C}$ or 6n - 16.
If n = 2m_{1} + 1 then let n_{1} = n - 1. This n_{1} vertices will have at least 6n_{1} - 16 contacts. The remaining vertex will have at least 2 contacts. So the total number of contacts will be at least 6(n - 1) - 16 + 2 or 6n - 20.
case 2: m_{1} = 2x
The analysis of this case will be easy to understand with the help of Figure 9. Let n is even. In ϕ_{ CA }, every vertex in the lR-left chain has at least 5 contacts. There are a total of x - 2 such vertices (see Figure 9). Every vertex in the rR-left chain has at least 7 contacts. There are a total of x - 2 such vertices. The two vertices in the uR-left chain each has at least 4 contacts. One vertex in the dR-left chain has at least 5 contacts while the other has at least 2 contacts.
Since the right chain is symmetric to the left one, both chains will have the same number of vertices if n = 2m_{1}. So all the vertices of the right chain will also have at least $\phantom{\rule{0.5em}{0ex}}\mathcal{C}$ contacts. So the total number of contacts will be at least $\mathsf{\text{2}}\mathcal{C}$ or 6n - 18.
If n = 2m_{1} + 1 and m_{1} = 2x then let n_{1} = n - 1. This n_{1} vertices will have at least 6n_{1} - 18 contacts. The remaining vertex will have at least 2 contacts. So the total number of contacts will be at least 6(n - 1) - 18 + 2 or 6n - 22.
So, if the total number of H-runs is greater than 9, then Algorithm ChainArrangement will achieve an approximation ratio of $\frac{10}{6}$ or $\frac{5}{3}$.
Note that, the value of k is dependent on n and the HP string. We now deduce the expected value of k for a given HP string. This problem can be mapped into the problem of Integer Partitioning as defined below. Notably, similar mapping has recently been utilized in [16] for deriving an expected approximation ratio of another algorithm.
Problem 0.4 Given an integer Y , the problem of Integer Partitioning aims to provide all possible ways of writing Y , as a sum of positive integers.
where γ is the famous Euler's constant.
So the expected value of k is less than or equal to $\sqrt{n}\times \mathsf{\text{log}}\phantom{\rule{0.3em}{0ex}}n$ which implies that $\sqrt{n}\times \text{log}n\ge \frac{220}{3}$ or n ≥ 16. The above findings are summarized in the form of the following theorems.
Theorem 0.5 For any given HP string, Algorithm ChainArrangement gives a $\frac{5}{3}$approximation ratio for k > 10, where k is the total number of H-runs. □
Theorem 0.6 For any given HP string, Algorithm ChainArrangement is expected to achieve an approximation ratio of $\frac{5}{3}$for n ≥ 16, where n is the total number of H. □
An improved algorithm
Algorithm ImprovedChainArrangement
- 1.
Set $f=\u230a\frac{n+{k}_{1}}{4}\u230b$, where k_{1} denotes total number of odd H-runs.
- 2.Suppose F denotes the position in p after the f-th H. Denote by pref F(p) the prefix of p up to position F and by suff F(p) the suffix, that starts right after it. Now, place the H-runs of pref F(p) in the outer-left chain and the inner-left chain as follows.
- (a)
First put an H of an H-run in the outer-left chain; then put the next two H's of it in the inner-left chain.
- (b)
Arrange the rest of the H's alternatively, between the outer-left chain and the inner-left chain.
- (c)
If the current H-run ends at the outer-left chain, the P-run following it is placed in the side-arms of the outer-left chain; otherwise, the H-run ends at the inner-left chain (i.e., odd H-runs), and hence the first P of the P-run following it is placed at the outer-left chain. Finally the rest of the P's of the P-run are arranged in the side-arms of the outer-left chain (see Figure 10).
- (a)
And place the H-runs of suff F(p) in the outer-right chain and the inner-right chain as follows.
- (a)
First put an H of an H-run in the outer-right chain; then put the next two H's of it in the inner-right chain.
- (b)
Arrange the rest of the H's alternatively, between the outer-right chain and the inner-right chain.
- (c)
If the current H-run ends at the outer-right chain, the P-run following it is placed in the side-arms of the outer-right chain; otherwise the H-run ends at the inner-right chain (i.e. odd H-runs), and hence the first P of the P-run following it is placed at outer-right chain. Finally the rest of the P's of the P-run are arranged in the side-arms of outer-right chain (see Figure 10).
Approximation ratio for Algorithm ImprovedChainArrangement
In this section, we deduce the approximation ratio for Algorithm ImprovedChainArrangement. We present our analysis in two separate cases. In Case 1, we only have even H-runs in HP strings. In Case 2 we may also have odd H-runs in HP strings. In what follows, we will use vw-outer-left chain (vw-outer-right chain) to denote a particular region of the outer-left (outer-right) chain. So, vw could be one of the 4 options, namely, lR (left region), rR (right region), uR (up region) and dR (down region). We also use vw-inner-left chain (vw-inner-right chain) to denote a particular region of the inner-left (inner-right) chain. So, vw could be one of the 3 options, namely, mR (middle region), uR (up region) and dR (down region). Furthermore we use ϕ_{ ICA } to refer to the conformation given by Algorithm ImprovedChainArrangement.
HP string contains only even H-runs
Number of vertices in each region in inner-left chain and outer-left chain ϕ_{ ICA }
Region | Outer-left chain | Inner-left chain |
---|---|---|
Left region | x - 1 | N/A |
Right region | x - 2 | N/A |
Middle region | N/A | 2x - 3 |
Up region | 2 | 2 |
Down region | 2 | 2 |
Since the inner-left chain and the inner-right chain are symmetric to each other, all the vertices of the inner-right chain will also have at least ${\mathcal{C}}_{1}$ contacts. So the total number of contacts in the inner-left chain and the inner-right chain will be at least $\mathsf{\text{2}}{\mathcal{C}}_{1}$ or 20m_{2} - 36.
Now, let us consider the outer-left chain and outer-right chain. Every vertex in the lR-outer-left chain has at least 5 contacts (see Figure 11 and Table 2). There are a total of x - 1 such vertices. Every vertex in the rR-outer-left chain has at least 7 contacts. There are a total of x - 2 such vertices. One vertex in the uR-outer-left chain and one vertex in the dR-outer-left chain has at least 4 contacts each. Each of the other vertices in the uR-outer-left chain and dR-outer-left chain has at least 5 contacts.
Since the outer-left chain and the outer-right chain are symmetric to each other, all the vertices of the outer-right chain will also have at least ${\mathcal{C}}_{2}$ contacts. So total number of contacts in the outer-left chain and the outer-right chain will be at least $\mathsf{\text{2}}{\mathcal{C}}_{2}$ or 12m_{2} - 14. So, the number of total contacts will be at least 20m_{2} - 36 + 12m_{2} - 14 = 32m_{2} - 50 = 8n - 50.
Note that, the value of k is dependent on n and the HP string. We now deduce the expected value of k for a given HP string such that each H-run is even and has length greater than two. Again, this problem can be mapped into the problem of Integer Partitioning, and hence, as before, the expected value of k is less than or equal to $\sqrt{n}\times \mathsf{\text{log}}\phantom{\rule{0.3em}{0ex}}n$ which implies $\sqrt{n}\times \mathsf{\text{log}}\phantom{\rule{0.3em}{0ex}}n\ge \frac{125}{6}\phantom{\rule{2.77695pt}{0ex}}\mathsf{\text{or}}\phantom{\rule{2.77695pt}{0ex}}n\ge 22$. The above results can be summarized in the form of following theorems.
Theorem 0.7 For any given HP string such that each H-run is even and has length greater than two, Algorithm ImprovedChainArrangement achieves an approximation ratio of $\frac{5}{4}$for k > 20 where k is the total number of H-runs. □
Theorem 0.8 For any given HP string such that each H-run is even and has length greater than two, it is expected that Algorithm ImprovedChainArrangement would achieve an approximation ratio of $\frac{5}{4}$for n ≥ 22 where n is the total number of H's. □
HP string contains both odd H-runs and even H-runs
Assuming that an H-run can be odd or even with equal probability, we get k = 2k_{1}. Then we can simplify as follows: ${A}_{3}=\frac{10n-\frac{1}{2}k}{\left(8n-50+2k-2k\right)}=\frac{10n-\frac{1}{2}k}{\left(8n-50\right)}.$
Note that, the value of k is dependent on n. To get an idea on the expected behaviour of our algorithm, we now deduce the expected value of k for a given HP string such that H-runs can be even or odd and has length greater than two. Again, this problem can be mapped into the problem of Integer Partitioning, So the expected value of k is less than or equal to $\sqrt{n}\times \mathsf{\text{log}}\phantom{\rule{0.3em}{0ex}}n$ which implies $\sqrt{n}\times \mathsf{\text{log}}\phantom{\rule{0.3em}{0ex}}n\ge 125\phantom{\rule{2.77695pt}{0ex}}\mathsf{\text{or}}\phantom{\rule{2.77695pt}{0ex}}n\ge 260$. The results discussed above can be summarised in the form of following theorem.
Theorem 0.9 For any given HP string such that H-runs can be even or odd and has length greater than two, it is expected that Algorithm ImproveChainArrangement gives a $\frac{5}{4}$approximation ratio for n ≥ 260.
H-runs of length 1 and 2
Conclusion
In this paper, we have introduced hexagonal lattice with diagonals for the protein folding problem in the HP model. We have presented two novel approximation algorithms for protein folding in this lattice. Our first algorithm is a $\frac{5}{3}$-approximation algorithm for k > 10 where k is the number of H-runs in the HP string. Our second algorithm gives a better approximation ratio of $\frac{5}{4}$ for k > 22. The latter result is applicable to HP strings where the H-runs are of even length greater than two. The expected approximation ratio of this algorithm would be $\frac{5}{4}$ for n > 260 when both odd and even length H-runs having length greater than two are allowed (n is the number of total H's in the HP string). Notably the best approximation ratio for hexagonal lattice is 6, which is due to [9], and the approximation ratio for square lattice with diagonal is $\frac{25}{16}$[6]. Clearly the approximation ratio of our algorithm is better than the above result.
Declarations
Acknowledgements
The authors would like to thank Md. Mahbubul Hasan and Shuvasish Karmaker for fruitful discussion. The authors gratefully acknowledge the fruitful comments and suggestions of the anonymous reviewers which aided in improving the presentation of the paper. This research work was partially supported by a CodeCrafters-Investortools Research Grant for CSE BUET.
Declaration
The publication costs for this article were partially funded by a small grant from BRAC University, Bangladesh and a CodeCrafters-Investortools Research Grant. A significant part of the costs have been borne by the authors.
This article has been published as part of BMC Bioinformatics Volume 15 Supplement 2, 2014: Selected articles from the Twelfth Asia Pacific Bioinformatics Conference (APBC 2014): Bioinformatics. The full contents of the supplement are available online at http://www.biomedcentral.com/bmcbioinformatics/supplements/15/S2.
Authors’ Affiliations
References
- DilL KA: Theory for the folding and stability of globular proteins. 1985, 24: 1501-1509.Google Scholar
- Duan Y, Kollman PA: Computational protein folding: From lattice to all atom. IBM research journal. 1998Google Scholar
- Crescenzi P, Goldman D, Papadimitriou C, Piccolboni A, Yannakakis M: On the complexity of protein folding. Journal of Computational Biology. 1998, 5 (3):Google Scholar
- Hart W, Istrail S: Fast protein folding in the hydrophobic-hydrophilic model within three-eighths of optimal. Journal of Computational Biology. 1996, 3 (1): 53-96. 10.1089/cmb.1996.3.53.View ArticlePubMedGoogle Scholar
- Newman A: A new algorithm for protein folding in the hp model. Symposium on Discrete Algorithms(SODA). 2002, 876-884.Google Scholar
- Bockenhauer HJ, Bongartz D: Protein folding in the hp model on grid lattices with diagonals. Discrete Applied Mathematics. 2007, 155: 230-256. 10.1016/j.dam.2006.04.031.View ArticleGoogle Scholar
- Newman Alantha, Ruhl Matthias: Combinatorial problems on strings with applications to protein folding. LATIN of Lecture Notes in Computer Science. 2004, Springer, 2976: 369-378. 10.1007/978-3-540-24698-5_41.Google Scholar
- Agarwala R, Batzogloa S, Dancik V, Decatur S, Hannenhalli S, Farach M, Muthukrishnan S, Skiena S: Local rules for protein folding on a triangular lattice and generalized hydrophobicity in the hp model. Journal of Computational Biology. 1997, 4 (3): 276-296.View ArticleGoogle Scholar
- Jiang Minghui, Zhu Binhai: Protein folding on the hexagonal lattice in the hp model. J Bioinformatics and Computational Biology. 2005, 3 (1): 19-34. 10.1142/S0219720005000850.View ArticlePubMedGoogle Scholar
- Heun Volker: Approximate protein folding in the hp side chain model on extended cubic lattices. ESA. 1999, 212-223.Google Scholar
- Unger Ron, Moult John: Genetic algorithms for protein folding simulations. Journal of Molecular Biology. 1993, 231: 75-81. 10.1006/jmbi.1993.1258.View ArticlePubMedGoogle Scholar
- Hoque Tamjidul, Chetty Madhu, Dooley Laurence: A hybrid genetic algorithm for 2d fcc hydrophobic-hydrophilic lattice model to predict protein folding. Australian Conference on Artificial Intelligence. 2006, 867-876.Google Scholar
- Hoque Tamjidul, Chetty Madhu, Sattar Abdul: Protein folding prediction in 3d fcc hp lattice model using genetic algorithm. IEEE Congress on Evolutionary Computation. 2007, 4138-4145.Google Scholar
- Lesh N, Mitzenmacher M, Whitesides S: A complete and effective move set for simplified protein folding. 7th Annual International Conference on Research in Computational Molecular Biology (RECOMB) 2003. 2003, ACM Press, 188-195.Google Scholar
- Böckenhauer Hans-Joachim, Dayem Ullah Abu Zafer, Kapsokalivas Leonidas, Steinhöfel Kathleen: A local move set for protein folding in triangular lattice models. WABI. 2008, 369-381.Google Scholar
- Sohidull Islam ASM, Sohel Rahman M: On the protein folding problem in 2d-triangular lattices. Algorithms for Molecular Biology. 2013, 8 (30):Google Scholar
- Kessler I, Livingston M: The expected number of parts in a partition of n. Monatshefte für Mathematik. 1976, 81 (3): 203-212. 10.1007/BF01303193.View ArticleGoogle Scholar
Copyright
This article is published under license to BioMed Central Ltd. This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. The Creative Commons Public Domain Dedication waiver (http://creativecommons.org/publicdomain/zero/1.0/) applies to the data made available in this article, unless otherwise stated.