CMiniLexicon::FindMajorSignatures(): use log file routines
[linguistica.git] / Biphone.cpp
blob34dc108da187a530803eedfc93d4109290d516d9
1 // Implementation of CBiphone, CBiphoneListViewItem methods
2 // Copyright © 2009 The University of Chicago
3 #include "Biphone.h"
4 #include "CompareFunc.h"
5 #include <cmath>
6 #include "implicit_cast.h"
8 CBiphoneListViewItem::CBiphoneListViewItem(Q3ListView* parent,
9 QString bigram_text, CBiphone* bigram)
10 : Q3ListViewItem(parent, bigram_text), m_MyBiphone(bigram) { }
12 CBiphoneListViewItem::CBiphoneListViewItem(Q3ListViewItem* parent,
13 QString bigram_text, CBiphone* bigram)
14 : Q3ListViewItem(parent, bigram_text), m_MyBiphone(bigram) { }
16 QString CBiphoneListViewItem::text( int column ) const
19 switch( column )
21 case 1: //counts
22 return QString("%1").arg( m_MyBiphone->GetCorpusCount() );
23 case 2:
24 return QString("%1").arg( m_MyBiphone->m_Freq);
25 case 3:
26 return QString("%1").arg( -1 * m_MyBiphone->m_LogCondProb);
27 case 4:
28 return QString("%1").arg( m_MyBiphone->m_LogCondProb);
29 case 5:
30 return QString("%1").arg( m_MyBiphone->m_MI);
31 case 6:
32 return QString("%1").arg( m_MyBiphone->m_WMI);
33 case 7:
34 return QString("%1").arg( m_MyBiphone->m_CondProb );
35 case 8:
36 return QString("%1").arg( m_MyBiphone->m_NormalizedMI );
37 default:
38 return Q3ListViewItem::text( column );
42 int CBiphoneListViewItem::compare(Q3ListViewItem* item, int col, bool asc) const
44 const CBiphoneListViewItem& other =
45 *static_cast<CBiphoneListViewItem*>(item);
46 const CBiphone& this_biphone = *GetBiphone();
47 const CBiphone& other_biphone = *other.GetBiphone();
49 switch (col) {
50 case 1:
51 return MakeComparable(other_biphone.GetCorpusCount(),
52 this_biphone.GetCorpusCount());
53 case 2:
54 return MakeComparable(this_biphone.m_Freq, other_biphone.m_Freq);
55 case 3:
56 case 4:
57 return MakeComparable(this_biphone.m_LogCondProb,
58 other_biphone.m_LogCondProb);
59 case 5:
60 return MakeComparable(this_biphone.m_MI,
61 other_biphone.m_MI);
62 case 6:
63 return MakeComparable(this_biphone.m_WMI,
64 other_biphone.m_WMI);
65 case 8:
66 return MakeComparable(this_biphone.m_NormalizedMI,
67 other_biphone.m_NormalizedMI);
68 default:
69 return Q3ListViewItem::compare(item, col, asc);
73 enum eBiphoneSortStyle CBiphone::m_SortStyle;
75 //////////////////////////////////////////////////////////////////////
76 // Construction/Destruction
77 //////////////////////////////////////////////////////////////////////
79 namespace {
80 using linguistica::implicit_cast;
83 CBiphone::CBiphone()
84 : CLParse(implicit_cast<CMiniLexicon*, CMiniLexicon*>(0)),
85 m_Key(),
86 m_Freq(0.0),
87 m_LogFreq(0.0),
88 m_MI(0.0),
89 m_WMI(0.0),
90 m_LogCondProb(0.0),
91 m_CondProb(0.0),
92 m_NormalizedMI(0.0),
93 m_MyFirst(), m_MySecond() { }
95 CBiphone::CBiphone(QString String)
96 : CLParse(implicit_cast<CMiniLexicon*, CMiniLexicon*>(0)),
97 m_Key(String),
98 m_Freq(0.0),
99 m_LogFreq(0.0),
100 m_MI(0.0),
101 m_WMI(0.0),
102 m_LogCondProb(0.0),
103 m_CondProb(0.0),
104 m_NormalizedMI(0.0),
105 m_MyFirst(), m_MySecond() { }
107 CBiphone::~CBiphone() { }
109 CBiphone::CBiphone(const CBiphone& x)
110 : CLParse(implicit_cast<CMiniLexicon*, CMiniLexicon*>(0)),
111 m_Key(x.m_Key),
112 m_Freq(x.m_Freq),
113 m_LogFreq(x.m_LogFreq),
114 m_MI(x.m_MI),
115 m_WMI(x.m_WMI),
116 m_LogCondProb(x.m_LogCondProb),
117 m_CondProb(x.m_CondProb),
118 m_NormalizedMI(x.m_NormalizedMI),
119 m_MyFirst(x.m_MyFirst), m_MySecond(x.m_MySecond) { }
121 CBiphone& CBiphone::operator=(const CBiphone& x)
123 CLParse::operator=(x);
124 m_Key = x.m_Key;
125 m_Freq = x.m_Freq;
126 m_LogFreq = x.m_LogFreq;
127 m_MI = x.m_MI;
128 m_WMI = x.m_WMI;
129 m_LogCondProb = x.m_LogCondProb;
130 m_CondProb = x.m_CondProb;
131 m_NormalizedMI = x.m_NormalizedMI;
132 m_MyFirst = x.m_MyFirst;
133 m_MySecond = x.m_MySecond;
134 return *this;
137 void CBiphone::SetMI (double mi ) { m_MI = mi ; }
139 bool CBiphone::operator==(const CBiphone& rhs)
141 switch (m_SortStyle)
143 case WMI:{
144 if (m_WMI == rhs.m_WMI)
145 return TRUE;
146 break;
149 case MI:{
150 if (m_MI == rhs.m_MI)
151 return TRUE;
152 break;
156 default:{
157 return FALSE;
161 return FALSE;
163 bool CBiphone::operator<(const CBiphone& rhs)
165 switch (m_SortStyle)
167 case WMI:{
168 if (m_WMI < rhs.m_WMI)
169 return TRUE;
170 break;
173 case MI:{
174 if (m_MI < rhs.m_MI)
175 return TRUE;
176 break;
180 default:{
181 return FALSE;
185 return FALSE;
188 void CBiphone::BiphoneListDisplay(Q3ListView* List)
189 { static_cast<void>(new CBiphoneListViewItem(List, m_Key, this)); }