annotate src/breadcrumbs/src/Ordination.py @ 0:0de566f21448 draft default tip

v2
author sagun98
date Thu, 03 Jun 2021 18:13:32 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
sagun98
parents:
diff changeset
1 """
sagun98
parents:
diff changeset
2 Author: Timothy Tickle
sagun98
parents:
diff changeset
3 Description: Base class for ordination plots.
sagun98
parents:
diff changeset
4 """
sagun98
parents:
diff changeset
5
sagun98
parents:
diff changeset
6 #####################################################################################
sagun98
parents:
diff changeset
7 #Copyright (C) <2012>
sagun98
parents:
diff changeset
8 #
sagun98
parents:
diff changeset
9 #Permission is hereby granted, free of charge, to any person obtaining a copy of
sagun98
parents:
diff changeset
10 #this software and associated documentation files (the "Software"), to deal in the
sagun98
parents:
diff changeset
11 #Software without restriction, including without limitation the rights to use, copy,
sagun98
parents:
diff changeset
12 #modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
sagun98
parents:
diff changeset
13 #and to permit persons to whom the Software is furnished to do so, subject to
sagun98
parents:
diff changeset
14 #the following conditions:
sagun98
parents:
diff changeset
15 #
sagun98
parents:
diff changeset
16 #The above copyright notice and this permission notice shall be included in all copies
sagun98
parents:
diff changeset
17 #or substantial portions of the Software.
sagun98
parents:
diff changeset
18 #
sagun98
parents:
diff changeset
19 #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
sagun98
parents:
diff changeset
20 #INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
sagun98
parents:
diff changeset
21 #PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
sagun98
parents:
diff changeset
22 #HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
sagun98
parents:
diff changeset
23 #OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
sagun98
parents:
diff changeset
24 #SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
sagun98
parents:
diff changeset
25 #####################################################################################
sagun98
parents:
diff changeset
26
sagun98
parents:
diff changeset
27 __author__ = "Timothy Tickle"
sagun98
parents:
diff changeset
28 __copyright__ = "Copyright 2013"
sagun98
parents:
diff changeset
29 __credits__ = ["Timothy Tickle"]
sagun98
parents:
diff changeset
30 __license__ = "MIT"
sagun98
parents:
diff changeset
31 __maintainer__ = "Timothy Tickle"
sagun98
parents:
diff changeset
32 __email__ = "ttickle@sph.harvard.edu"
sagun98
parents:
diff changeset
33 __status__ = "Development"
sagun98
parents:
diff changeset
34
sagun98
parents:
diff changeset
35 #External libraries
sagun98
parents:
diff changeset
36 import AbundanceTable
sagun98
parents:
diff changeset
37 from ConstantsFiguresBreadCrumbs import ConstantsFiguresBreadCrumbs
sagun98
parents:
diff changeset
38 import matplotlib.cm as cm
sagun98
parents:
diff changeset
39 from matplotlib import pyplot as plt
sagun98
parents:
diff changeset
40 from UtilityMath import UtilityMath
sagun98
parents:
diff changeset
41 from ValidateData import ValidateData
sagun98
parents:
diff changeset
42
sagun98
parents:
diff changeset
43 class Ordination:
sagun98
parents:
diff changeset
44 """
sagun98
parents:
diff changeset
45 Base class for ordination methods and plots.
sagun98
parents:
diff changeset
46 """
sagun98
parents:
diff changeset
47
sagun98
parents:
diff changeset
48 def __init__(self):
sagun98
parents:
diff changeset
49 # Rows = Samples
sagun98
parents:
diff changeset
50 self.dataMatrix = None
sagun98
parents:
diff changeset
51 self.isRawData = None
sagun98
parents:
diff changeset
52 self.lsIDs = []
sagun98
parents:
diff changeset
53 self.dataProcessed = None
sagun98
parents:
diff changeset
54
sagun98
parents:
diff changeset
55 #Happy path tested
sagun98
parents:
diff changeset
56 def loadData(self, xData, fIsRawData):
sagun98
parents:
diff changeset
57 """
sagun98
parents:
diff changeset
58 Loads data into the object (given a matrix or an abundance table)
sagun98
parents:
diff changeset
59 Data can be the Abundance Table to be converted to a distance matrix or a distance matrix
sagun98
parents:
diff changeset
60 If it is the AbundanceTable, indicate that it is rawData (tempIsRawData=True)
sagun98
parents:
diff changeset
61 If it is the distance matrix already generated indicate (tempIsRawData=False)
sagun98
parents:
diff changeset
62 and no conversion will occur in subsequent methods.
sagun98
parents:
diff changeset
63
sagun98
parents:
diff changeset
64 :params xData: AbundanceTable or Distance matrix . Taxa (columns) by samples (rows)(lists)
sagun98
parents:
diff changeset
65 :type: AbundanceTable or DistanceMatrix
sagun98
parents:
diff changeset
66 :param fIsRawData: Indicates if the xData is an AbudanceTable (True) or distance matrix (False; numpy array)
sagun98
parents:
diff changeset
67 :type: boolean
sagun98
parents:
diff changeset
68 :return boolean: indicator of success (True=Was able to load data)
sagun98
parents:
diff changeset
69 """
sagun98
parents:
diff changeset
70
sagun98
parents:
diff changeset
71 if fIsRawData:
sagun98
parents:
diff changeset
72 #Read in the file data to a numpy array.
sagun98
parents:
diff changeset
73 #Samples (column) by Taxa (rows)(lists) without the column
sagun98
parents:
diff changeset
74 data = xData.funcToArray()
sagun98
parents:
diff changeset
75 if data==None:
sagun98
parents:
diff changeset
76 print("Ordination:loadData::Error when converting AbundanceTable to Array, did not perform ordination.")
sagun98
parents:
diff changeset
77 return False
sagun98
parents:
diff changeset
78
sagun98
parents:
diff changeset
79 #Transpose data to be Taxa (columns) by samples (rows)(lists)
sagun98
parents:
diff changeset
80 data = UtilityMath.funcTransposeDataMatrix(data,fRemoveAdornments=False)
sagun98
parents:
diff changeset
81 if(ValidateData.funcIsFalse(data)):
sagun98
parents:
diff changeset
82 print("Ordination:loadData::Error when transposing data file, did not perform ordination.")
sagun98
parents:
diff changeset
83 return False
sagun98
parents:
diff changeset
84 else:
sagun98
parents:
diff changeset
85 self.dataMatrix=data
sagun98
parents:
diff changeset
86 self.isRawData=fIsRawData
sagun98
parents:
diff changeset
87 self.lsIDs=xData.funcGetMetadata(xData.funcGetIDMetadataName())
sagun98
parents:
diff changeset
88
sagun98
parents:
diff changeset
89 #Otherwise load the data directly as passed.
sagun98
parents:
diff changeset
90 else:
sagun98
parents:
diff changeset
91 self.dataMatrix=xData
sagun98
parents:
diff changeset
92 self.isRawData=fIsRawData
sagun98
parents:
diff changeset
93 return True
sagun98
parents:
diff changeset
94