Mercurial > repos > clustalomega > clustalomega
comparison clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.h @ 0:ff1768533a07
Migrated tool version 0.2 from old tool shed archive to new tool shed repository
author | clustalomega |
---|---|
date | Tue, 07 Jun 2011 17:04:25 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:ff1768533a07 |
---|---|
1 /********************************************************************* | |
2 * Clustal Omega - Multiple sequence alignment | |
3 * | |
4 * Copyright (C) 2010 University College Dublin | |
5 * | |
6 * Clustal-Omega is free software; you can redistribute it and/or | |
7 * modify it under the terms of the GNU General Public License as | |
8 * published by the Free Software Foundation; either version 2 of the | |
9 * License, or (at your option) any later version. | |
10 * | |
11 * This file is part of Clustal-Omega. | |
12 * | |
13 ********************************************************************/ | |
14 | |
15 /* | |
16 * RCS $Id: symmatrix.h 216 2011-03-19 10:11:53Z andreas $ | |
17 */ | |
18 | |
19 /** | |
20 * Functions for symmetric (square) matrices including diagonal. | |
21 * | |
22 * Supports the notion of non-square sub-matrices of a symmetric | |
23 * matrix, i.e. where |rows|<|cols| and the corresponding full matrix | |
24 * would be |cols|x|cols| | |
25 * | |
26 * Instead of making this one big chunk of memory we keep pointers to | |
27 * pointers, so that we can easily realloc (the project where this file | |
28 * originated from needed this for growing a "seed" matrix). | |
29 * | |
30 * FIXME Allocating one big chunk of memory is probably | |
31 * much faster and also easier to maintain. | |
32 * | |
33 * | |
34 */ | |
35 | |
36 #ifndef CLUSTALO_SYMMATRIX_H | |
37 #define CLUSTALO_SYMMATRIX_H | |
38 | |
39 | |
40 /** | |
41 * @brief symmetric matrix structure | |
42 */ | |
43 typedef struct { | |
44 int nrows; /**< number of rows */ | |
45 int ncols; /**< number of columns */ | |
46 /** | |
47 * stored data | |
48 * | |
49 * @note indices range: [i][j-i] i<=j. use getvalue() and | |
50 * setvalue() instead of accessing directly | |
51 * | |
52 * @see SymMatrixGetValue(), SymMatrixSetValue() | |
53 */ | |
54 double **data; | |
55 } symmatrix_t; | |
56 | |
57 | |
58 | |
59 extern int | |
60 NewSymMatrix(symmatrix_t **symmat, const int nrows, const int ncols); | |
61 | |
62 extern void | |
63 SymMatrixSetValue(symmatrix_t *symmat, const int i, const int j, const double value); | |
64 | |
65 extern double | |
66 SymMatrixGetValue(symmatrix_t *symmat, const int i, const int j); | |
67 | |
68 extern void | |
69 SymMatrixGetValueP(double **value, symmatrix_t *symmat, const int i, const int j); | |
70 | |
71 extern void | |
72 FreeSymMatrix(symmatrix_t **symmat); | |
73 | |
74 extern void | |
75 SymMatrixPrint(symmatrix_t *symmat, char **labels, const char *path); | |
76 | |
77 extern int | |
78 SymMatrixRead(char *pcFileIn, symmatrix_t **prSymMat_p); | |
79 | |
80 #endif |