Skip to content

Commit 24d5d37

Browse files
committed
gui
1 parent 120bea9 commit 24d5d37

8 files changed

+223
-227
lines changed

CLFILE

+6
Large diffs are not rendered by default.

CommandLineFiles/CalculateGeneralizedDStatistic.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ def outgroup_removal(newick, outgroup):
215215

216216
return new_newick
217217

218+
218219
def outgroup_removal_treap(newick, outgroup):
219220
"""
220221
Move the location of the outgroup in a newick string to be at the end of the string
@@ -231,7 +232,6 @@ def outgroup_removal_treap(newick, outgroup):
231232
return new_newick
232233

233234

234-
235235
def calculate_pgtst(species_tree, gene_tree):
236236
"""
237237
Calculate p(gt|st) or p(gt|sn)
@@ -834,6 +834,7 @@ def generate_statistic_string(patterns_of_interest):
834834

835835
##### Function for calculating statistic
836836

837+
837838
def calculate_significance(left, right):
838839
"""
839840
Determines statistical significance based on a chi-squared goodness of fit test
@@ -860,6 +861,7 @@ def calculate_significance(left, right):
860861
else:
861862
return True
862863

864+
863865
def calculate_L(alignment, taxa_order, patterns_of_interest):
864866
"""
865867
Calculates the L statistic for the given alignment
@@ -1097,6 +1099,7 @@ def calculate_windows_to_L(alignment, taxa_order, patterns_of_interest, window_s
10971099

10981100
return windows_to_l
10991101

1102+
11001103
##### Functions for total ordering
11011104

11021105

@@ -1482,6 +1485,8 @@ def calculate_generalized(alignment, species_tree, reticulations, window_size, w
14821485
return l_stat, significant, windows_to_l
14831486

14841487

1488+
# print calculate_generalized('/Users/Peter/PycharmProjects/ALPHA/CLFILE', '(((P1,P2),(P3,P4)),O);', [('P1', 'P3')], 50000, 50000, True)
1489+
14851490
# species_tree, r = '(((P1:0.01,P2:0.01):0.01,(P3:0.01,P4:0.01):0.01):0.01,O:0.01);', [('P3', 'P1')]
14861491
# # species_tree = '(((P1,P2),(P3,P4)),O);'
14871492
# # alignment = "C:\\Users\\travi\\Documents\\PhyloVis\\exampleFiles\\ExampleDFOIL.phylip"

clphylipseq.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
6 535
2+
C ACC--AAGCAA--ACCCACGTCA-------ACGCATCATTATCTGGNNNNTATGTGTCGCACTTGCNAAAAAAA--GAAAACAAAAAAAAA-------------------------ACA--AA---------------------------------------------------------GACTGCAAGTCACCAGGTCTTGCATCTTACG---GCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGGCCAAC-GGGAAGATTGTAGCCCAGTAATGCCAGTATCTGTCGTGGGAGGGAACGGTGAAGCCTAACAAGGGCACTAATCCTCCCTATCTTCTGTTATCG--GCTTCCAG--------------------------------------TTCAAACTCTCTTGCTTCTGTTTTATTGAAGCCCATCACCCAAATAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGA------A--TGTGTGTGTGTGCAGGTATAT
3+
G ACC--AAGCAA--ACCCACGTCA-------ACGCATCATTATCTGGNNNNTATGTGTCGCACTTGCAAAAAAAA--GAAAACAAAAAAAAA-------------------------ACA--AA---------------------------------------------------------GACTGCAAGTCACCAGGTCTTGCATCTTACG---GCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGGCCAAC-GGGAAGATTGTAGCCCAGTAATGCCAGTATCTGTCGTGGGAGGGAACGGTGAAGCCTAACAAGGGCACTAATCCTCCCTATCTTCTGTTATCG--GCTTCCAG--------------------------------------TTCAAACTCTCTTGCTTCTGTTTTATTGAAGCCCATCACCCAAATAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGA------A--TGTGTGTGTGTGCAGGTATAT
4+
R ACC--AAGCAA--ACCCACGTCA-------GCGCATCATTATCTGGTA----TGTGTCGCACTTGCAAAAAAAAAGGAAAACAAATAGAAA-------------------------CCA--AA---------------------------------------------------------GACTGCAAGTCACCAGGTCCTGCATCTTACC---GCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGACCAAAGGGGAAGATTGTGGCCCAGTAATGCCAGTATCTATCGTGGGAGGGAACGGTGAAGCCTAACAAGGGCACTAATCCTTCCTATCTTCCGTTATCG--GCTACCAG--------------------------------------TTCAAACTCTTTCGCTTCTGTTTTATTGGCGCCCATCACCCAAGTAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGAATGTGTA--TGTGTGTGTGTGCAGGTATAT
5+
A ACC--AAGCAA--ACCCACGTCA-------ACGCATCATTATCTGGTACATATGTGTCGCACTTGC-------------------------AAAAAAAAAAGAAAACAAATAAAAACCA--AA---------------------------------------------------------GACTGCAAGTCACCAGGTCTTGCATCTTACG---GCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGGCCAAC-GGGAAGATTGTAGCCCAGTAATGCCAGTATCTGTCGTGGGAGGGAACGGTGAAGCCTAACAAGGGCACTAATCCTCCCTATCTTCTGTTATCG--GCTTCCAG--------------------------------------TTCAAACTCTCTCGCTTCTGTTTTATTGAAGCCCATCACCCAAATAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGA------A----TGTGTGTGTGCAGGTATAT
6+
Q ACC--AAGCAA--ACCCACGTCA-------ACGCATCATTATCTGGTACATATGTGTCGCACTTGCAAAAAAAA--GAAAACAAATAGAAA-------------------------CCA--AA---------------------------------------------------------GACTGCAAGTCACCAGGTCTTGCATCTTAAG---GCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGGCCAAC-GGGAAGATTGTAGCCCAGTGATGCCAGTATCTGTTGTGGGAGGGAACGGTGAAGCCTAACAAGGGCACTAATCCTCCCTATCTTCCGTTATCG--GCTACCAG--------------------------------------TTCAAACTCTTTCGCTTCTGTTTTATGGAAGCCCATCAACCAAATAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGA------ATGTGTGTGTGTGGGCAGGTATAT
7+
L ACC--AAGCAA--ACCCACGTCA-------GCGCATCATTATCTGGTA----TGTGTCGCACTNNNAAAAAAAAAAGAAAACAAATAGAAA-------------------------CCA--AA---------------------------------------------------------GACTGCAAGTCACCAGATCTTGCATCTTACGGCGGCTCAGTAGTGGAC------------AAAAAATGAATGAAATGATGGCCAAC-GGGAAGATTGTAGCCCAGTAATGCCAGTATCTATGGTGGGAGGGAACGGTGAGGCCTAACAAGGGCACTAATCCTCCCTATCTTCCGTTATCTCCGCTACCAG--------------------------------------TTCAAACTCTTTCGCTTCTGTTTTATTGAAGCCCATCACCCAAATAGAAGTCGATTGCGCATATCACACATTATGACGATTGTTAATAGTGTCTGGA------A----TGTGTGTGTGCAGGTATAT

main.py

+92-8
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ def __init__(self, parent=None):
3838
os.mkdir('plots')
3939

4040
# remove all files in plots folder
41-
# for fileName in os.listdir('plots'):
42-
# os.remove('plots/' + fileName)
41+
for fileName in os.listdir('plots'):
42+
os.remove('plots/' + fileName)
4343

4444
# initialize gui_layout
4545
self.setupUi(self)
@@ -184,7 +184,7 @@ def __init__(self, parent=None):
184184
self.connect(self.fileConverter, QtCore.SIGNAL('FILE_CONVERTER_COMPLETE'), self.message)
185185
self.connect(self.fileConverter, QtCore.SIGNAL('FILE_CONVERTER_ERR'), self.message)
186186

187-
# **************************** MS PAGE ****************************#
187+
# **************************** MS PAGE **************************** #
188188

189189
self.msCompareBtn.clicked.connect(self.runMSCompare)
190190
self.msFileBtn.clicked.connect(lambda: self.getFileName(self.msFileEntry))
@@ -199,16 +199,17 @@ def __init__(self, parent=None):
199199

200200
self.msRaxmlDirectoryBtn.clicked.connect(lambda: self.openDirectory(self.msRaxmlDirectoryEntry))
201201

202+
# dynamically add more file entries
202203
self.msUploadAnother.clicked.connect(lambda: self.addFileEntry('msAdditionalFileHorizontalLayout', 'msAdditionalFileEntry', 'msAdditionalFileBtn', 'msRemoveFileBtn'))
203204

204-
# **************************** D STATISTIC PAGE ****************************#
205+
# **************************** D STATISTIC PAGE **************************** #
205206

206207
# set background image
207208
self.imagePixmap = QtGui.QPixmap('imgs/tree.png')
208209
self.imageLabel.setScaledContents(True)
209210
self.imageLabel.setPixmap(self.imagePixmap)
210211

211-
# run
212+
# select alignment for d statistic
212213
self.dAlignmentBtn.clicked.connect(lambda: self.getFileName(self.dAlignmentEntry))
213214

214215
# when file entry text is changed
@@ -222,12 +223,33 @@ def __init__(self, parent=None):
222223
self.dRunBtn.clicked.connect(self.runDStatistic)
223224
self.connect(self.statisticsCalculations, QtCore.SIGNAL('INVALID_ALIGNMENT_FILE'), partial(self.message, type='Err'))
224225

225-
# **************************** WELCOME PAGE ****************************#
226+
# **************************** L STATISTIC PAGE **************************** #
227+
228+
# select alignment and species tree for L statistic
229+
self.lAlignmentBtn.clicked.connect(lambda: self.getFileName(self.lAlignmentEntry))
230+
self.lSpeciesTreeBtn.clicked.connect(lambda: self.getFileName(self.lSpeciesTreeEntry))
231+
232+
# when an alignment is selected update the combo boxes
233+
self.connect(self.lAlignmentEntry, QtCore.SIGNAL('FILE_SELECTED'), lambda: self.updateTaxonComboBoxes(self.raxmlTaxonComboBoxes, self.lAlignmentEntry))
234+
235+
# when an species tree is selected update the graph
236+
self.connect(self.lSpeciesTreeEntry, QtCore.SIGNAL('FILE_SELECTED'), self.updateLTree)
237+
238+
# set background image
239+
# self.imagePixmap = QtGui.QPixmap('imgs/tree.png')
240+
# self.imageLabel.setScaledContents(True)
241+
# self.imageLabel.setPixmap(self.imagePixmap)
242+
243+
# dynamically add more file entries
244+
self.lStatisticAddReticulationBtn.clicked.connect(
245+
lambda: self.addReticulationComboBox('lAdditionalReticulationHorizontalLayout', 'lAdditionalSourceComboBox', 'lAdditionalTargetComboBox', 'lRemoveComboBoxBtn'))
246+
247+
# **************************** WELCOME PAGE **************************** #
226248

227249
def initializeMode(self):
228250
self.ensureSingleModeSelected(self.comboboxModes_to_actionModes[self.modeComboBox.currentText()], self.comboboxModes_to_windowNames[self.modeComboBox.currentText()])
229251

230-
# **************************** D STATISTIC PAGE ****************************#
252+
# **************************** D STATISTIC PAGE **************************** #
231253

232254
def runDStatistic(self):
233255
try:
@@ -251,7 +273,11 @@ def displayDStatistic(self, dVal, dWindows):
251273
self.dStatisticLabel.setEnabled(True)
252274
self.dStatisticValueLabel.setEnabled(True)
253275

254-
# **************************** L STATISTIC PAGE ****************************#
276+
# **************************** L STATISTIC PAGE **************************** #
277+
278+
additionalReticulationCounter = 0
279+
additionalReticulationSourceNames = []
280+
additionalReticulationTargetNames = []
255281

256282
def displayLStatistic(self, lVal, lWindows):
257283
self.lVal = lVal
@@ -262,6 +288,64 @@ def displayLStatistic(self, lVal, lWindows):
262288
self.lStatisticLabel.setEnabled(True)
263289
self.lStatisticValueLabel.setEnabled(True)
264290

291+
def addReticulationComboBox(self, horizontalLayoutName, cBox1Name, cBox2Name, btnName):
292+
self.additionalReticulationCounter += 1
293+
self.additionalReticulationSourceNames.append(cBox1Name + str(self.additionalReticulationCounter))
294+
self.additionalReticulationTargetNames.append(cBox2Name + str(self.additionalReticulationCounter))
295+
296+
# create horizontal layout
297+
HL = QtGui.QHBoxLayout()
298+
HL.setObjectName(horizontalLayoutName + str(self.additionalReticulationCounter))
299+
300+
# create btn to remove and add to horizontal layout
301+
btn = QtGui.QToolButton(self.reticulationGroupBox)
302+
btn.setObjectName(btnName + str(self.additionalReticulationCounter))
303+
btn.setText('-')
304+
btn.setFixedHeight(21)
305+
btn.setFixedWidth(23)
306+
HL.addWidget(btn)
307+
308+
# create combo box and add to horizontal layout
309+
sourceComboBox = QtGui.QComboBox(self.reticulationGroupBox)
310+
sourceComboBox.setObjectName(cBox1Name + str(self.additionalReticulationCounter))
311+
HL.addWidget(sourceComboBox)
312+
313+
# create label "=>" and add to horizontal layout
314+
arrowLabel = QtGui.QLabel(self.reticulationGroupBox)
315+
arrowLabel.setObjectName("arrow" + str(self.additionalReticulationCounter))
316+
arrowLabel.setText("=>")
317+
HL.addWidget(arrowLabel)
318+
319+
# create combo box and add to horizontal layout
320+
targetComboBox = QtGui.QComboBox(self.reticulationGroupBox)
321+
targetComboBox.setObjectName(cBox2Name + str(self.additionalReticulationCounter))
322+
HL.addWidget(targetComboBox)
323+
324+
# create horizontal spacer and add to horizontal layout
325+
hSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
326+
HL.addItem(hSpacer)
327+
328+
self.resize(self.width(), self.height() + 30)
329+
self.reticulationComboBoxParentVL.addLayout(HL)
330+
331+
btn.clicked.connect(lambda: self.removeReticulationComboBox(HL, sourceComboBox, arrowLabel, targetComboBox, btn, hSpacer))
332+
333+
def removeReticulationComboBox(self, HL, cBox1, arrow, cBox2, btn, hSpacer):
334+
HL.deleteLater()
335+
cBox1.deleteLater()
336+
arrow.deleteLater()
337+
cBox2.deleteLater()
338+
btn.deleteLater()
339+
self.additionalReticulationSourceNames.remove(cBox1.objectName())
340+
self.additionalReticulationTargetNames.remove(cBox2.objectName())
341+
self.resize(self.width(), self.height() - 30)
342+
343+
def updateLTree(self):
344+
# set background image
345+
self.lImagePixmap = QtGui.QPixmap('imgs/LStatisticTree.png')
346+
self.lImageLabel.setScaledContents(True)
347+
self.lImageLabel.setPixmap(self.lImagePixmap)
348+
265349
# **************************** MS PAGE ****************************#
266350

267351
additionalFileCounter = 0

module/RAxMLOperations.py

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def raxml_species_tree(self, phylip, rooted=False, outgroup=None, customRax=Fals
129129
self.emit(QtCore.SIGNAL('SPECIES_TREE_PER'), 100)
130130
self.emit(QtCore.SIGNAL('SPECIES_TREE_COMPLETE'), 'Species Tree Generated', "'Show Details...' to view the species tree newick.", self.speciesTree)
131131
self.emit(QtCore.SIGNAL('SPECIES_TREE_COMPLETE_RETURN_ST'), self.speciesTree)
132+
print self.speciesTree
132133

133134
def rooter(self, newick_file, outgroup):
134135
"""

0 commit comments

Comments
 (0)