nysol-take 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. checksums.yaml +7 -0
  2. data/bin/mbiclique.rb +317 -0
  3. data/bin/mbipolish.rb +362 -0
  4. data/bin/mccomp.rb +235 -0
  5. data/bin/mclique.rb +295 -0
  6. data/bin/mclique2g.rb +105 -0
  7. data/bin/mcliqueInfo.rb +203 -0
  8. data/bin/mfriends.rb +202 -0
  9. data/bin/mgdiff.rb +252 -0
  10. data/bin/mhifriend.rb +456 -0
  11. data/bin/mhipolish.rb +465 -0
  12. data/bin/mitemset.rb +168 -0
  13. data/bin/mpal.rb +410 -0
  14. data/bin/mpolishing.rb +399 -0
  15. data/bin/msequence.rb +165 -0
  16. data/bin/mtra2g.rb +476 -0
  17. data/bin/mtra2gc.rb +360 -0
  18. data/ext/grhfilrun/extconf.rb +12 -0
  19. data/ext/grhfilrun/grhfilrun.c +85 -0
  20. data/ext/grhfilrun/src/_sspc.c +358 -0
  21. data/ext/grhfilrun/src/aheap.c +545 -0
  22. data/ext/grhfilrun/src/aheap.h +251 -0
  23. data/ext/grhfilrun/src/base.c +92 -0
  24. data/ext/grhfilrun/src/base.h +59 -0
  25. data/ext/grhfilrun/src/fstar.c +497 -0
  26. data/ext/grhfilrun/src/fstar.h +80 -0
  27. data/ext/grhfilrun/src/grhfil.c +214 -0
  28. data/ext/grhfilrun/src/itemset.c +713 -0
  29. data/ext/grhfilrun/src/itemset.h +170 -0
  30. data/ext/grhfilrun/src/problem.c +415 -0
  31. data/ext/grhfilrun/src/problem.h +179 -0
  32. data/ext/grhfilrun/src/queue.c +533 -0
  33. data/ext/grhfilrun/src/queue.h +182 -0
  34. data/ext/grhfilrun/src/sample.c +19 -0
  35. data/ext/grhfilrun/src/sspc.c +597 -0
  36. data/ext/grhfilrun/src/sspc2.c +491 -0
  37. data/ext/grhfilrun/src/stdlib2.c +1482 -0
  38. data/ext/grhfilrun/src/stdlib2.h +892 -0
  39. data/ext/grhfilrun/src/trsact.c +817 -0
  40. data/ext/grhfilrun/src/trsact.h +160 -0
  41. data/ext/grhfilrun/src/vec.c +745 -0
  42. data/ext/grhfilrun/src/vec.h +172 -0
  43. data/ext/lcmrun/extconf.rb +20 -0
  44. data/ext/lcmrun/lcmrun.cpp +99 -0
  45. data/ext/lcmrun/src/aheap.c +216 -0
  46. data/ext/lcmrun/src/aheap.h +111 -0
  47. data/ext/lcmrun/src/base.c +92 -0
  48. data/ext/lcmrun/src/base.h +59 -0
  49. data/ext/lcmrun/src/itemset.c +496 -0
  50. data/ext/lcmrun/src/itemset.h +157 -0
  51. data/ext/lcmrun/src/lcm.c +427 -0
  52. data/ext/lcmrun/src/problem.c +349 -0
  53. data/ext/lcmrun/src/problem.h +177 -0
  54. data/ext/lcmrun/src/queue.c +528 -0
  55. data/ext/lcmrun/src/queue.h +176 -0
  56. data/ext/lcmrun/src/sgraph.c +359 -0
  57. data/ext/lcmrun/src/sgraph.h +173 -0
  58. data/ext/lcmrun/src/stdlib2.c +1282 -0
  59. data/ext/lcmrun/src/stdlib2.h +823 -0
  60. data/ext/lcmrun/src/trsact.c +747 -0
  61. data/ext/lcmrun/src/trsact.h +159 -0
  62. data/ext/lcmrun/src/vec.c +731 -0
  63. data/ext/lcmrun/src/vec.h +171 -0
  64. data/ext/lcmseq0run/extconf.rb +20 -0
  65. data/ext/lcmseq0run/lcmseq0run.cpp +59 -0
  66. data/ext/lcmseq0run/src/aheap.c +216 -0
  67. data/ext/lcmseq0run/src/aheap.h +111 -0
  68. data/ext/lcmseq0run/src/base.c +92 -0
  69. data/ext/lcmseq0run/src/base.h +59 -0
  70. data/ext/lcmseq0run/src/itemset.c +518 -0
  71. data/ext/lcmseq0run/src/itemset.h +157 -0
  72. data/ext/lcmseq0run/src/itemset_zero.c +522 -0
  73. data/ext/lcmseq0run/src/lcm_seq.c +446 -0
  74. data/ext/lcmseq0run/src/lcm_seq_zero.c +446 -0
  75. data/ext/lcmseq0run/src/problem.c +439 -0
  76. data/ext/lcmseq0run/src/problem.h +179 -0
  77. data/ext/lcmseq0run/src/problem_zero.c +439 -0
  78. data/ext/lcmseq0run/src/queue.c +533 -0
  79. data/ext/lcmseq0run/src/queue.h +182 -0
  80. data/ext/lcmseq0run/src/stdlib2.c +1350 -0
  81. data/ext/lcmseq0run/src/stdlib2.h +864 -0
  82. data/ext/lcmseq0run/src/trsact.c +747 -0
  83. data/ext/lcmseq0run/src/trsact.h +159 -0
  84. data/ext/lcmseq0run/src/vec.c +779 -0
  85. data/ext/lcmseq0run/src/vec.h +172 -0
  86. data/ext/lcmseqrun/extconf.rb +20 -0
  87. data/ext/lcmseqrun/lcmseqrun.cpp +101 -0
  88. data/ext/lcmseqrun/src/aheap.c +216 -0
  89. data/ext/lcmseqrun/src/aheap.h +111 -0
  90. data/ext/lcmseqrun/src/base.c +92 -0
  91. data/ext/lcmseqrun/src/base.h +59 -0
  92. data/ext/lcmseqrun/src/itemset.c +518 -0
  93. data/ext/lcmseqrun/src/itemset.h +157 -0
  94. data/ext/lcmseqrun/src/itemset_zero.c +522 -0
  95. data/ext/lcmseqrun/src/lcm_seq.c +447 -0
  96. data/ext/lcmseqrun/src/lcm_seq_zero.c +446 -0
  97. data/ext/lcmseqrun/src/problem.c +439 -0
  98. data/ext/lcmseqrun/src/problem.h +179 -0
  99. data/ext/lcmseqrun/src/problem_zero.c +439 -0
  100. data/ext/lcmseqrun/src/queue.c +533 -0
  101. data/ext/lcmseqrun/src/queue.h +182 -0
  102. data/ext/lcmseqrun/src/stdlib2.c +1350 -0
  103. data/ext/lcmseqrun/src/stdlib2.h +864 -0
  104. data/ext/lcmseqrun/src/trsact.c +747 -0
  105. data/ext/lcmseqrun/src/trsact.h +159 -0
  106. data/ext/lcmseqrun/src/vec.c +779 -0
  107. data/ext/lcmseqrun/src/vec.h +172 -0
  108. data/ext/lcmtransrun/extconf.rb +18 -0
  109. data/ext/lcmtransrun/lcmtransrun.cpp +264 -0
  110. data/ext/macerun/extconf.rb +20 -0
  111. data/ext/macerun/macerun.cpp +57 -0
  112. data/ext/macerun/src/aheap.c +217 -0
  113. data/ext/macerun/src/aheap.h +112 -0
  114. data/ext/macerun/src/itemset.c +491 -0
  115. data/ext/macerun/src/itemset.h +158 -0
  116. data/ext/macerun/src/mace.c +503 -0
  117. data/ext/macerun/src/problem.c +346 -0
  118. data/ext/macerun/src/problem.h +174 -0
  119. data/ext/macerun/src/queue.c +529 -0
  120. data/ext/macerun/src/queue.h +177 -0
  121. data/ext/macerun/src/sgraph.c +360 -0
  122. data/ext/macerun/src/sgraph.h +174 -0
  123. data/ext/macerun/src/stdlib2.c +993 -0
  124. data/ext/macerun/src/stdlib2.h +811 -0
  125. data/ext/macerun/src/vec.c +634 -0
  126. data/ext/macerun/src/vec.h +170 -0
  127. data/ext/sspcrun/extconf.rb +20 -0
  128. data/ext/sspcrun/src/_sspc.c +358 -0
  129. data/ext/sspcrun/src/aheap.c +545 -0
  130. data/ext/sspcrun/src/aheap.h +251 -0
  131. data/ext/sspcrun/src/base.c +92 -0
  132. data/ext/sspcrun/src/base.h +59 -0
  133. data/ext/sspcrun/src/fstar.c +496 -0
  134. data/ext/sspcrun/src/fstar.h +80 -0
  135. data/ext/sspcrun/src/grhfil.c +213 -0
  136. data/ext/sspcrun/src/itemset.c +713 -0
  137. data/ext/sspcrun/src/itemset.h +170 -0
  138. data/ext/sspcrun/src/problem.c +415 -0
  139. data/ext/sspcrun/src/problem.h +179 -0
  140. data/ext/sspcrun/src/queue.c +533 -0
  141. data/ext/sspcrun/src/queue.h +182 -0
  142. data/ext/sspcrun/src/sample.c +19 -0
  143. data/ext/sspcrun/src/sspc.c +598 -0
  144. data/ext/sspcrun/src/sspc2.c +491 -0
  145. data/ext/sspcrun/src/stdlib2.c +1482 -0
  146. data/ext/sspcrun/src/stdlib2.h +892 -0
  147. data/ext/sspcrun/src/trsact.c +817 -0
  148. data/ext/sspcrun/src/trsact.h +160 -0
  149. data/ext/sspcrun/src/vec.c +745 -0
  150. data/ext/sspcrun/src/vec.h +172 -0
  151. data/ext/sspcrun/sspcrun.cpp +54 -0
  152. data/lib/nysol/enumLcmEp.rb +338 -0
  153. data/lib/nysol/enumLcmEsp.rb +284 -0
  154. data/lib/nysol/enumLcmIs.rb +275 -0
  155. data/lib/nysol/enumLcmSeq.rb +143 -0
  156. data/lib/nysol/items.rb +201 -0
  157. data/lib/nysol/seqDB.rb +256 -0
  158. data/lib/nysol/take.rb +39 -0
  159. data/lib/nysol/taxonomy.rb +113 -0
  160. data/lib/nysol/traDB.rb +257 -0
  161. metadata +239 -0
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env ruby
2
+ require "rubygems"
3
+ require "nysol/mcmd"
4
+
5
+ require "nysol/taxonomy.rb"
6
+
7
+ module TAKE
8
+
9
+ #=アイテムクラス
10
+ # 頻出パターンマイニングで使われるアイテムを扱うクラス。
11
+ #
12
+ #===利用例
13
+ # 以下tra.csvの内容
14
+ # ---
15
+ # items
16
+ # a b c
17
+ # a c
18
+ # b
19
+ # c b d
20
+ #
21
+ # 以下taxo.csvの内容
22
+ # ---
23
+ # item,taxo
24
+ # a,X1
25
+ # b,X1
26
+ # c,X2
27
+ # d,X2
28
+ #
29
+ # 以下rubyスクリプト
30
+ # ---
31
+ # require 'rubygems'
32
+ # require 'mining'
33
+ # items=Items.new("tra.csv","items","item")
34
+ # puts items.file # => ./1252810329_1850/dat/1
35
+ # puts items.itemFN # => "item"
36
+ # puts items.idFN # => "iid"
37
+ # puts items.size # => 4
38
+ # puts items.taxonomy # =>nil
39
+ #
40
+ # taxo=Taxonomy.new("taxo.csv","item","taxo")
41
+ # items.addTaxo(taxo)
42
+ # puts items.file # => ./1252810329_1850/dat/3
43
+ # puts items.itemFN # => "item"
44
+ # puts items.idFN # => "iid"
45
+ # puts items.size # => 4
46
+ # p items.taxonomy # => #<Taxonomy:0x1698eac @itemSize=4, @iFile="taxo.csv", @taxoFN="taxo", @itemFN="item", ...,@file="./1252810329_1850/dat/2">
47
+ #
48
+ #=====./1252810329_1850/dat/1 の内容
49
+ # item,iid
50
+ # a,1
51
+ # b,2
52
+ # c,3
53
+ # d,4
54
+ #
55
+ #=====./1252810329_1850/dat/3 の内容
56
+ # item,iid
57
+ # X1,5
58
+ # X2,6
59
+ # a,1
60
+ # b,2
61
+ # c,3
62
+ # d,4
63
+ #
64
+ class Items
65
+ # itemsファイル (=>Mfile)
66
+ attr_reader :file
67
+
68
+ # アイテムの項目名(=>String)
69
+ attr_reader :itemFN
70
+
71
+ # id項目名(=>String)
72
+ attr_reader :idFN
73
+
74
+ # アイテムの種類数(=>Fixnum)
75
+ attr_reader :size
76
+
77
+ # 分類階層クラス(=>Taxonomy)
78
+ attr_reader :taxonomy
79
+
80
+ private
81
+
82
+ #==初期化
83
+ #=====引数
84
+ # iFile: アイテム項目を含むファイル名
85
+ # itemFN: 新しいアイテム項目名
86
+ # idFN: 連番によるアイテムidの項目名(デフォルト:"iid")
87
+ #=====機能
88
+ #* iFile上のアイテム項目(@itemFN)からアイテム(@itemFN)と連番("num")の2項目からなるファイルを生成する。
89
+ #* itemFN項目の値としては、スペースで区切られた複数のアイテムであってもよい。
90
+ #* 同じアイテムが重複して登録されていれば単一化される。
91
+ #* アイテム順にソートされる。
92
+ #* アイテムの件数(種類数)がセットされる。
93
+ def initialize(iFile,itemFN,idFN="__iid")
94
+ @temp=MCMD::Mtemp.new
95
+
96
+ @iFile = Array.new
97
+ @iPath = Array.new
98
+ @iFile.push(iFile)
99
+ @iPath.push(File.expand_path(iFile))
100
+ @taxonomy = nil
101
+ @file = @temp.file # 出力ファイル名
102
+ @itemFN=itemFN
103
+ @idFN=idFN
104
+
105
+ f=""
106
+ f << "mcut f=#{itemFN} i=#{iFile} |"
107
+ f << "msortf f=#{itemFN} |"
108
+ f << "muniq k=#{itemFN} |"
109
+ f << "mnumber s=#{itemFN} a=#{idFN} S=0 o=#{@file}"
110
+ system(f)
111
+
112
+ @size = MCMD::mrecount("i=#{@file}") # itemの数
113
+
114
+ end
115
+
116
+ public
117
+
118
+ def show
119
+ puts "#### BEGIN Items class"
120
+ puts "@temp=#{@temp}"
121
+ puts "@iFile=#{@iFile}"
122
+ puts "@iPath=#{@iPath}"
123
+ puts "@taxonomy=#{@taxonomy}"
124
+ puts "@itemFN=#{@itemFN}"
125
+ puts "@idFN=#{@idFN}"
126
+ puts "@file=#{@file}"
127
+ puts "@file:"
128
+ system("cat #{@file}")
129
+ puts "#### END Items class"
130
+ end
131
+
132
+ #==アイテムの追加
133
+ # iFileのitemFN項目をアイテムとして追加する。
134
+ #=====引数
135
+ # iFile: アイテム項目を含むファイル名
136
+ # itemFN: iFile上のアイテム項目名
137
+ #=====機能
138
+ #* itemFNとしては、スペースで区切られた複数のアイテムであってもよい。
139
+ #* 同じアイテムが重複していれば単一化される。
140
+ #* 追加後アイテム順にソートされる。
141
+ #* アイテム数が更新される。
142
+ def add(iFile,itemFN)
143
+
144
+ @iFile.push(iFile)
145
+ @iPath.push(File.expand_path(iFile))
146
+
147
+ xx=MCMD::Mtemp.new
148
+ xx1=xx.file
149
+ xx2=xx.file
150
+ f=""
151
+ f << "msortf f=#{@itemFN} i=#{iFile} |"
152
+ f << "mcommon k=#{@itemFN} m=#{@file} |"
153
+ f << "mcut f=#{itemFN}:#{@itemFN} |"
154
+ f << "msortf f=#{@itemFN} |"
155
+ f << "muniq k=#{@itemFN} |"
156
+ f << "mnumber s=#{@itemFN} S=#{@size+1} a=#{@idFN} o=#{xx1}"
157
+ system(f)
158
+
159
+ f=""
160
+ f << "mcat i=#{@file},#{xx1} |"
161
+ f << "msortf f=#{@itemFN} o=#{xx2}"
162
+ system(f)
163
+
164
+ # 新itemファイル登録&item数更新
165
+ FileUtils.mv(xx2,@file)
166
+ @size = MCMD::mrecount("i=#{@file}")
167
+
168
+ end
169
+
170
+ #==Taxonomyの設定
171
+ # Taxonomy(分類階層)を設定する。
172
+ #=====引数
173
+ # taxo: taxonomy オブジェクト
174
+ #=====機能
175
+ #* Taxonomyオブジェクトをメンバとして追加する。
176
+ #* 分類項目をアイテムとして追加する。
177
+ def addTaxo(taxo)
178
+
179
+ @taxonomy=taxo
180
+
181
+ add(@taxonomy.file,@taxonomy.taxoFN) # taxonomyをアイテムとして追加登録
182
+
183
+ end
184
+
185
+ def repTaxo(taxo)
186
+
187
+ #@taxonomy=taxo #replaceの場合はtaxonomyを登録しない
188
+
189
+ @file = @temp.file # 出力ファイル名
190
+ f=""
191
+ f << "mcut f=#{taxo.taxoFN}:#{@itemFN} i=#{taxo.file} |"
192
+ f << "msortf f=#{@itemFN} |"
193
+ f << "muniq k=#{@itemFN} |"
194
+ f << "mnumber s=#{@itemFN} a=#{@idFN} S=1 o=#{@file}"
195
+ system(f)
196
+
197
+ end
198
+
199
+ end
200
+
201
+ end # module
@@ -0,0 +1,256 @@
1
+ #!/usr/bin/env ruby
2
+ require "rubygems"
3
+ require "nysol/mcmd"
4
+
5
+ require "nysol/items"
6
+
7
+ module TAKE
8
+
9
+ #=トランザクションデータクラス
10
+ # 頻出パターンマイニングで使われるトランザクションデータを扱うクラス。
11
+ # トランザクションファイルは、トランザクションID項目とアイテム集合項目から構成される。
12
+ # アイテム集合は、スペースで区切られた文字列集合として表現される。
13
+ #
14
+ #===利用例
15
+ # 以下tra.csvの内容
16
+ # ---
17
+ # items
18
+ # a b d
19
+ # a d e
20
+ # c e
21
+ # a d
22
+ # c d e
23
+ # c e
24
+ # a d e
25
+ #
26
+ # 以下taxo.csvの内容
27
+ # ---
28
+ # item,taxo
29
+ # a,X1
30
+ # b,X1
31
+ # c,X2
32
+ # d,X2
33
+ # e,X2
34
+ #
35
+ # 以下rubyスクリプト
36
+ # ---
37
+ # require 'rubygems'
38
+ # require 'mining'
39
+ #
40
+ # tra=SeqDB.new("tra.csv",nil,"items")
41
+ # puts tra.file # => ./1252813069_2179/dat/1
42
+ # puts tra.numTraFile # => nil
43
+ # puts tra.idFN # => tid
44
+ # puts tra.itemsetFN # => items
45
+ # puts tra.recCnt # => 7
46
+ # p tra.items # => #<Items:0x16a39ec @iItemFN=["items"],...
47
+ #
48
+ # taxo=Taxonomy.new("taxo.csv","item","taxo")
49
+ # tra.addTaxo(taxo)
50
+ # tra.mkNumTra
51
+ # puts tra.numTraFile #=> ./1252813069_2179/dat/6
52
+ # p tra.items #=> #<Items:0x16a39ec @iItemFN=["items", "taxo"],..., @taxonomy=#<Taxonomy:0x168ba7c ...
53
+ #
54
+ #=====./1252813069_2179/dat/1 の内容
55
+ # tid,items
56
+ # 1,a b d
57
+ # 2,a d e
58
+ # 3,c e
59
+ # 4,a d
60
+ # 5,c d e
61
+ # 6,c e
62
+ # 7,a d e
63
+ #
64
+ #=====./1252813069_2179/dat/6 の内容
65
+ # 1 2 3 4 5 6 7
66
+ # 1 2 4 6 7
67
+ # 1 4 5 6 7
68
+ # 3 5 7
69
+ # 1 4 6 7
70
+ # 3 4 5 7
71
+ # 3 5 7
72
+ # 1 4 5 6 7
73
+ #
74
+ class SeqDB
75
+ attr_reader :file # トランザクションファイル名
76
+ attr_reader :idFN # トランザクションID項目名(String)
77
+ attr_reader :timeFN # 時間項目名(String)
78
+ attr_reader :itemFN # アイテム集合項目名(String)
79
+ attr_reader :clsFN # クラス項目名(String)
80
+ attr_reader :size # トランザクションサイズ(Num)
81
+ attr_reader :items # Itemsクラス
82
+ attr_reader :taxonomy # 階層分類クラス
83
+ attr_reader :clsNameRecSize # クラス別件数
84
+ attr_reader :clsSize # クラス数
85
+ attr_reader :cFile # クラスファイル
86
+
87
+ private
88
+
89
+ #=== SeqDBクラスの初期化
90
+ #
91
+ #====引数
92
+ # iFile: transactionファイル名
93
+ # iItemsetFN: iFile上のアイテム集合項目名
94
+ # idFN: 新しく命名するトランザクションID項目名
95
+ # itemsetFN: 新しく命名するアイテム集合項目名
96
+ #
97
+ #====機能
98
+ #* トランザクションIDとアイテム集合の2項目から構成するトランザクションデータを新たに作成する。
99
+ #* ID項目が指定されていなければ、1から始まる連番によってID項目を新規に作成する。
100
+ #* トランザクション件数(iFileのレコード件数)を計算する。
101
+ #* アイテム集合項目からItemsオブジェクトを生成する。
102
+ def initialize(iFile,idFN,timeFN,itemFN,padding,clsFN=nil)
103
+ @temp=MCMD::Mtemp.new
104
+
105
+ @iFile = iFile # 入力ファイル
106
+ @iPath = File.expand_path(@iFile) # フルパス
107
+ @idFN = idFN # トランザクションID項目名
108
+ @timeFN = timeFN # 時間項目名
109
+ @itemFN = itemFN # アイテム項目名
110
+ @file = @temp.file # 出力ファイル名
111
+ @padding= padding # 時系列パディング
112
+
113
+ # padding指定の場合は、asciiコードの先頭文字列を挿入
114
+ f=""
115
+ if @padding then
116
+ f << "mcut f=#{@idFN},#{@timeFN},#{@itemFN} i=#{@iFile} |"
117
+ f << "msortf f=#{@idFN},#{@timeFN}%n,#{@itemFN} |"
118
+ f << "muniq k=#{@idFN},#{@timeFN},#{@itemFN} |"
119
+ f << "mpadding k=#{@idFN} f=#{@timeFN}%n v=! o=#{@file}"
120
+ else
121
+ f << "mcut f=#{@idFN},#{@timeFN},#{@itemFN} i=#{@iFile} |"
122
+ f << "msortf f=#{@idFN},#{@timeFN}%n,#{@itemFN} |"
123
+ f << "muniq k=#{@idFN},#{@timeFN},#{@itemFN} o=#{@file}"
124
+ end
125
+ system(f)
126
+
127
+ # レコード数の計算
128
+ #@recCnt = MCMD::mrecount("i=#{@file}")
129
+
130
+ # トランザクション数の計算
131
+ tf=MCMD::Mtemp.new
132
+ xx1=tf.file
133
+ f=""
134
+ f << "mcut f=#{@idFN} i=#{@file} |"
135
+ f << "muniq k=#{@idFN} |"
136
+ f << "mcount a=__cnt o=#{xx1}"
137
+ system(f)
138
+ tbl=MCMD::Mtable.new("i=#{xx1}")
139
+ num=tbl.name2num()["__cnt"]
140
+ @size = tbl.cell(num,0).to_i
141
+
142
+ # トランザクションデータからアイテムオブジェクトを生成
143
+ if @padding then
144
+ # paddingの場合は、特殊アイテム(!)を0番とし、出力を制御する。
145
+ @items=TAKE::Items.new(@file,@itemFN)
146
+ else
147
+ @items=TAKE::Items.new(@file,@itemFN)
148
+ end
149
+
150
+ # クラスデータ
151
+ if clsFN then
152
+ @clsFN=clsFN
153
+ @cFile=@temp.file
154
+
155
+ # tid-クラス項目名ファイルの生成
156
+ xx1=@temp.file
157
+ f=""
158
+ f << "mcut f=#{@idFN},#{@clsFN} i=#{@iFile} |"
159
+ f << "msortf f=#{@idFN},#{@clsFN} |"
160
+ f << "muniq k=#{@idFN},#{@clsFN} o=#{@cFile}"
161
+ system(f)
162
+
163
+ f=""
164
+ f << "mcut f=#{@clsFN} i=#{@cFile} |"
165
+ f << "msortf f=#{@clsFN} |"
166
+ f << "mcount k=#{@clsFN} a=count o=#{xx1}"
167
+ system(f)
168
+
169
+ # クラス数
170
+ @clsSize = MCMD::mrecount("i=#{xx1}")
171
+
172
+ # 文字列としてのクラス別件数配列を数値配列に変換する
173
+ @clsNames = []
174
+ @clsNameRecSize = {}
175
+ MCMD::Mcsvin.new("i=#{xx1}"){|csv|
176
+ csv.each{|fldVal|
177
+ @clsNames << fldVal[csv.names[0]]
178
+ @clsNameRecSize[fldVal[csv.names[0]]]=fldVal[csv.names[1]].to_i
179
+ }
180
+ }
181
+ end
182
+
183
+ end
184
+
185
+ public
186
+ def show()
187
+ puts "#### BEGIN SeqDB class"
188
+ puts "@temp=#{@temp}"
189
+ puts "@iFile=#{@iFile}"
190
+ puts "@iPath=#{@iPath}"
191
+ puts "@idFN=#{@idFN}"
192
+ puts "@timeFN=#{@timeFN}"
193
+ puts "@itemFN=#{@itemFN}"
194
+ puts "@padding=#{@padding}"
195
+ puts "@file=#{@file}"
196
+ @items.show
197
+ system("head #{@file}")
198
+ puts "#### END SeqDB class"
199
+ end
200
+
201
+ def replaceFile(train)
202
+
203
+ @file = train
204
+
205
+ # レコード数の計算
206
+ #@recCnt = MCMD::mrecount("i=#{@file}")
207
+
208
+ # トランザクション数の計算
209
+ tf=MCMD::Mtemp.new
210
+ xx1=tf.file
211
+ f=""
212
+ f << "mcut f=#{@idFN} i=#{@file} |"
213
+ f << "muniq k=#{@idFN} |"
214
+ f << "mcount a=__cnt o=#{xx1}"
215
+ system(f)
216
+ tbl=MCMD::Mtable.new("i=#{xx1}")
217
+ num=tbl.name2num()["__cnt"]
218
+ @size = tbl.cell(num,0).to_i
219
+
220
+ end
221
+
222
+
223
+ #=== taxonomyをトランザクションに追加
224
+ # トランザクションデータのアイテム集合に、対応するtaxonomyを追加する。
225
+ #
226
+ #====引数
227
+ # taxonomy: Taxonomyオブジェクト。
228
+ #
229
+ #====機能
230
+ #* トランザクションデータのアイテム集合項目におけるアイテム全てについて、対応するtaxonomyをアイテム集合として追加する。
231
+ def repTaxo(taxonomy)
232
+
233
+ #@taxonomy=taxonomy
234
+
235
+ @items.repTaxo(taxonomy) # アイテムクラスをtaxonomyで置換する
236
+
237
+ tFile =taxonomy.file
238
+ itemFN=taxonomy.itemFN
239
+ taxoFN=taxonomy.taxoFN
240
+
241
+ tf=MCMD::Mtemp.new
242
+ xx1=tf.file
243
+ f=""
244
+ f << "msortf f=#{@itemFN} i=#{@file} |"
245
+ f << "mjoin k=#{@itemFN} K=#{itemFN} f=#{taxoFN} m=#{tFile} |"
246
+ f << "mcut f=#{@idFN},#{@timeFN},#{taxoFN}:#{@itemFN} |"
247
+ f << "msortf f=#{@idFN},#{@timeFN},#{@itemFN} o=#{xx1}"
248
+ system(f)
249
+
250
+ @file=@temp.file
251
+ FileUtils.mv(xx1,@file)
252
+
253
+ end
254
+ end
255
+
256
+ end # module
data/lib/nysol/take.rb ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ #/* ////////// LICENSE INFO ////////////////////
3
+ #
4
+ # * Copyright (C) 2013 by NYSOL CORPORATION
5
+ # *
6
+ # * Unless you have received this program directly from NYSOL pursuant
7
+ # * to the terms of a commercial license agreement with NYSOL, then
8
+ # * this program is licensed to you under the terms of the GNU Affero General
9
+ # * Public License (AGPL) as published by the Free Software Foundation,
10
+ # * either version 3 of the License, or (at your option) any later version.
11
+ # *
12
+ # * This program is distributed in the hope that it will be useful, but
13
+ # * WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF
14
+ # * NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
15
+ # *
16
+ # * Please refer to the AGPL (http://www.gnu.org/licenses/agpl-3.0.txt)
17
+ # * for more details.
18
+ #
19
+ # ////////// LICENSE INFO ////////////////////*/
20
+
21
+ #= MCMD ruby拡張ライブラリ
22
+ #Mコマンドruby拡張ライブラリとは、MCMDで提供されている各種データ処理モジュールをrubyから利用できるようにするインターフェースを提供する。
23
+ #
24
+ #mcmd.rbは、以下の6つのクラスライブラリをrequireしている。
25
+ # require "mcsvin" # MCMD::CSVin CSVの行単位読み込みクラス (c++で作成された共有ライブラリ)
26
+ # require "mcsvout" # MCMD::CSVout CSVの出力クラス (c++で作成された共有ライブラリ)
27
+ # require "mtable" # MCMD::Table CSVのメモリ展開クラス (c++で作成された共有ライブラリ)
28
+ # require "margs" # MCMD::Args コマンドライン引数を扱うクラス(rubyスクリプト)
29
+ # require "mtemp" # MCMD::Temp 一時ファイル管理(rubyスクリプト)
30
+
31
+ require "nysol/lcmrun"
32
+ require "nysol/lcmseqrun"
33
+ require "nysol/lcmseq0run"
34
+ require "nysol/lcmtransrun"
35
+ require "nysol/sspcrun"
36
+ require "nysol/grhfilrun"
37
+ require "nysol/macerun"
38
+
39
+
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require "rubygems"
5
+ require "nysol/mcmd"
6
+
7
+ module TAKE
8
+
9
+ #=分類階層(taxonomy)クラス
10
+ # 一階層の分類階層(アイテム-分類)を扱うクラス。
11
+ #
12
+ #===利用例
13
+ # 以下taxo.csvの内容
14
+ # ---
15
+ # item,taxo
16
+ # a,X1
17
+ # b,X1
18
+ # c,X2
19
+ # d,X2
20
+ #
21
+ # 以下rubyスクリプト
22
+ # ---
23
+ # require 'rubygems'
24
+ # require 'mining'
25
+ # taxo=Taxonomy("taxo.csv","item","taxo")
26
+ # puts taxo.itemFN # => "item"
27
+ # puts taxo.taxoFN # => "taxo"
28
+ # puts taxo.itemSize # => 4 (アイテムは"a,b,c,d"の4種類)
29
+ # puts taxo.taxoSize # => 2 (分類は"X1,X2"の2種類)
30
+ # puts taxo.file # => ./1252379737_1756/dat/1
31
+ #
32
+ #=====./1252379737_1756/dat/1 の内容
33
+ # item,taxo
34
+ # a,X1
35
+ # b,X1
36
+ # c,X2
37
+ # d,X2
38
+ class Taxonomy
39
+ # アイテムの項目名(=>String)
40
+ attr_reader :itemFN
41
+
42
+ # 分類の項目名(=>String)
43
+ attr_reader :taxoFN
44
+
45
+ # アイテムの種類数(=>Fixnum)
46
+ attr_reader :itemSize
47
+
48
+ # 分類の種類数(=>Fixnum)
49
+ attr_reader :taxoSize
50
+
51
+ # taxonomyデータファイル名(=>String)
52
+ attr_reader :file
53
+
54
+ #=== taxonomyクラスの初期化
55
+ # 一階層の分類階層を扱う。
56
+ # アイテム項目とその分類名項目を持つファイルから分類階層オブジェクトを生成する。
57
+ #====引数
58
+ # iFile: taxonomyファイル名
59
+ # itemFN: アイテム項目名
60
+ # taxoFN: 分類項目名
61
+ #====機能
62
+ #* アイテム(itemFN)と分類(taxoFN)の2項目からなるファイルが規定のパス(Taxonomy.file)に書き出される。
63
+ #* 同じアイテムが重複して登録されていれば単一化して書き出される。
64
+ #* アイテム順にソートされる。
65
+ #* アイテム数と分類数を計算する。
66
+ def initialize(iFile,itemFN,taxoFN)
67
+ @temp=MCMD::Mtemp.new
68
+
69
+ @iFile = iFile
70
+ @iPath = File.expand_path(@iFile)
71
+ @itemFN = itemFN
72
+ @taxoFN = taxoFN
73
+
74
+ # item順に並べ替えてpathに書き出す
75
+ @file=@temp.file
76
+ f=""
77
+ f << "mcut f=#{@itemFN},#{@taxoFN} i=#{@iFile} |"
78
+ f << "msortf f=#{@itemFN},#{@taxoFN} |"
79
+ f << "muniq k=#{@itemFN},#{@taxoFN} o=#{@file}"
80
+ system(f)
81
+
82
+ # oFileに登録されているitemの数をカウントする
83
+ tf=MCMD::Mtemp.new
84
+ xx1=tf.file
85
+ f=""
86
+ f << "mcut f=#{@itemFN} i=#{iFile} |"
87
+ f << "mtrafld f=#{@itemFN} a=__fld -valOnly |"
88
+ f << "mtra f=__fld -r |"
89
+ f << "msortf f=__fld |"
90
+ f << "muniq k=__fld |"
91
+ f << "mcount a=size |"
92
+ f << "mcut f=size -nfno o=#{xx1}"
93
+ system(f)
94
+ tbl=MCMD::Mtable.new("i=#{xx1} -nfn")
95
+ @itemSize = tbl.cell(0,0).to_i
96
+
97
+ # oFileに登録されているtaxonomyの数をカウントする
98
+ xx2=tf.file
99
+ f=""
100
+ f << "mcut f=#{@taxoFN}:item i=#{@file} |"
101
+ f << "msortf f=item |"
102
+ f << "muniq k=item |"
103
+ f << "mcount a=size |"
104
+ f << "mcut f=size -nfno o=#{xx2}"
105
+ system(f)
106
+ tbl=MCMD::Mtable.new("i=#{xx2} -nfn")
107
+ @taxoSize = tbl.cell(0,0).to_i
108
+ end
109
+
110
+ end
111
+
112
+ end #module
113
+