unidom-stapar 0.2 → 0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +22 -5
- data/app/models/unidom/stapar/classifier.rb +4 -2
- data/app/models/unidom/stapar/concerns/as_feature.rb +0 -4
- data/app/models/unidom/stapar/concerns/as_sample.rb +5 -0
- data/app/models/unidom/stapar/pattern_matching.rb +26 -0
- data/db/migrate/20060102000000_create_unidom_pattern_matchings.rb +33 -0
- data/lib/rspec/models/unidom/stapar/pattern_matching_spec.rb +37 -0
- data/lib/unidom/stapar/models_rspec.rb +2 -1
- data/lib/unidom/stapar/version.rb +1 -1
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6ec81f2342288a8bcc6f131f291b216b7bebf172ae99bfddad0e4a36fe3a9f65
|
|
4
|
+
data.tar.gz: 6cf88d8b259a16dc31e039966b49424e37e6fb35033845edf5aa5ef421450cd5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 504031fe67a904d4ea134ca88fe67c0e1708a60aed953a9d10e06bc41f46c61bc103638a32522ea68a6b98c712aeac10bade466f42090ef2ae422551489da04a
|
|
7
|
+
data.tar.gz: a83b0baaeb4ec60c697f0f7f591a57827749183bd9c11dd2b669c723dd25012bf6b79683655f702487a77328097b3684f207079363ab5fe80bc0049e9224719e
|
data/README.md
CHANGED
|
@@ -38,7 +38,26 @@ The migration versions start with 200601.
|
|
|
38
38
|
## Call the Model
|
|
39
39
|
|
|
40
40
|
```ruby
|
|
41
|
-
|
|
41
|
+
Classifier
|
|
42
|
+
|
|
43
|
+
matched = nil
|
|
44
|
+
similarity_percentage = 0
|
|
45
|
+
valve = 60
|
|
46
|
+
candidates.each do |candidate|
|
|
47
|
+
similarity = recognize input, candidate
|
|
48
|
+
if similarity > valve
|
|
49
|
+
if similarity > similarity_percentage
|
|
50
|
+
matched = candidate
|
|
51
|
+
similarity_percentage = similarity
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
if matched.present?
|
|
57
|
+
PatternMatching.match!(input, matched: matched, with: similarity_percentage, above: valve, at: Time.now)
|
|
58
|
+
else
|
|
59
|
+
false
|
|
60
|
+
end
|
|
42
61
|
```
|
|
43
62
|
|
|
44
63
|
|
|
@@ -54,10 +73,8 @@ include Unidom::Stapar::Concerns::AsFeature
|
|
|
54
73
|
|
|
55
74
|
The As Feature concern do the following tasks for the includer automatically:
|
|
56
75
|
|
|
57
|
-
1. Define the
|
|
58
|
-
2. Define the
|
|
59
|
-
3. Define the #get_cart? method as: ``get_cart?(from: nil, at: Time.now)``
|
|
60
|
-
|
|
76
|
+
1. Define the belongs_to :classifier macro as: ``belongs_to :classifier, class_name: 'Unidom::Stapar::Classifier'``
|
|
77
|
+
2. Define the belongs_to :sample macro as: ``belongs_to :sample, polymorphic: true``
|
|
61
78
|
|
|
62
79
|
|
|
63
80
|
## Disable the Model & Migration
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
##
|
|
2
2
|
# Classifier 表示模式识别分类器。
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
module Unidom::Stapar
|
|
5
|
+
class Classifier < ApplicationRecord
|
|
5
6
|
|
|
6
7
|
self.table_name = 'unidom_classifiers'
|
|
7
8
|
|
|
@@ -22,4 +23,5 @@ class Unidom::Stapar::Classifier < Unidom::Stapar::ApplicationRecord
|
|
|
22
23
|
scope :data_format_version_is, -> (data_format_version) { where data_format_version: data_format_version }
|
|
23
24
|
scope :applied_species_is, -> (applied_species) { where applied_species: applied_species }
|
|
24
25
|
|
|
25
|
-
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Classifier'
|
|
26
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Classifier'
|
|
27
|
+
end
|
|
@@ -22,10 +22,6 @@ module Unidom::Stapar::Concerns::AsFeature
|
|
|
22
22
|
|
|
23
23
|
module ClassMethods
|
|
24
24
|
|
|
25
|
-
def classify!(sample, by: nil, extracted: nil, into: nil, at: Time.now)
|
|
26
|
-
create! sample: sample, classifier: by, extracted_link: extracted, feature_link: into, opened_at: at
|
|
27
|
-
end
|
|
28
|
-
|
|
29
25
|
end
|
|
30
26
|
|
|
31
27
|
end
|
|
@@ -14,9 +14,14 @@ module Unidom::Stapar::Concerns::AsSample
|
|
|
14
14
|
|
|
15
15
|
scope :raw_data_link_is, -> (raw_data_link) { where raw_data_link: raw_data_link }
|
|
16
16
|
|
|
17
|
+
def is_classified!(into: nil, per: nil, by: nil, at: Time.now)
|
|
18
|
+
create! sample: self, classifier: by, extracted_link: per, feature_link: into, opened_at: at
|
|
19
|
+
end
|
|
20
|
+
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
module ClassMethods
|
|
24
|
+
|
|
20
25
|
end
|
|
21
26
|
|
|
22
27
|
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
##
|
|
2
|
+
# Pattern Matching 表示模式识别匹配记录。
|
|
3
|
+
|
|
4
|
+
module Unidom::Stapar
|
|
5
|
+
class PatternMatching < ApplicationRecord
|
|
6
|
+
|
|
7
|
+
self.table_name = 'unidom_pattern_matchings'
|
|
8
|
+
|
|
9
|
+
include Unidom::Common::Concerns::ModelExtension
|
|
10
|
+
include ProgneTapera::EnumCode
|
|
11
|
+
|
|
12
|
+
belongs_to :matched, polymorphic: true
|
|
13
|
+
belongs_to :input, polymorphic: true
|
|
14
|
+
|
|
15
|
+
validates :similarity_percentage, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: 100 }
|
|
16
|
+
validates :valve_percentage, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: 100, only_integer: true }
|
|
17
|
+
|
|
18
|
+
scope :matched_is, -> (matched) { where matched: matched }
|
|
19
|
+
scope :input_is, -> (input) { where input: input }
|
|
20
|
+
|
|
21
|
+
def self.match!(input, matched: nil, with: 0.0, above: 0, at: Time.now)
|
|
22
|
+
create! matched: matched, input: input, valve_percentage: above, similarity_percentage: with, opened_at: at
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternMatching'
|
|
26
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
class CreateUnidomPatternMatchings < ActiveRecord::Migration[6.0]
|
|
2
|
+
|
|
3
|
+
def change
|
|
4
|
+
|
|
5
|
+
create_table :unidom_pattern_matchings, id: :uuid do |t|
|
|
6
|
+
|
|
7
|
+
t.references :matched, type: :uuid, null: false,
|
|
8
|
+
polymorphic: { null: false, default: '', limit: 200 }
|
|
9
|
+
t.references :input, type: :uuid, null: false,
|
|
10
|
+
polymorphic: { null: false, default: '', limit: 200 }
|
|
11
|
+
|
|
12
|
+
t.decimal :similarity_percentage, null: false, default: 0.0, precision: 12, scale: 2
|
|
13
|
+
t.integer :valve_percentage, null: false, default: 0
|
|
14
|
+
|
|
15
|
+
t.text :instruction
|
|
16
|
+
t.text :description
|
|
17
|
+
|
|
18
|
+
t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
|
|
19
|
+
t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
|
|
20
|
+
t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
|
|
21
|
+
t.boolean :defunct, null: false, default: false
|
|
22
|
+
t.jsonb :notation, null: false, default: {}
|
|
23
|
+
|
|
24
|
+
t.timestamps null: false
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
add_index :unidom_pattern_matchings, :input_id
|
|
29
|
+
add_index :unidom_pattern_matchings, :matched_id
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe Unidom::Stapar::PatternMatching, type: :model do
|
|
4
|
+
|
|
5
|
+
before :each do
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
after :each do
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context do
|
|
12
|
+
|
|
13
|
+
classifier = Unidom::Stapar::Classifier.first_or_create! supplier_name: 'Intelligent Works',
|
|
14
|
+
algorithm_name: 'FR Pro',
|
|
15
|
+
data_format_version: 1,
|
|
16
|
+
applied_species: 'Homo sapiens',
|
|
17
|
+
applied_field_code: 'FACE'
|
|
18
|
+
matched = classifier
|
|
19
|
+
input = classifier
|
|
20
|
+
|
|
21
|
+
model_attributes = {
|
|
22
|
+
matched: matched,
|
|
23
|
+
input: input,
|
|
24
|
+
similarity_percentage: 91.35,
|
|
25
|
+
valve_percentage: 60
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
|
|
29
|
+
|
|
30
|
+
it_behaves_like 'validates numericality', model_attributes, :similarity_percentage,
|
|
31
|
+
range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: false
|
|
32
|
+
it_behaves_like 'validates numericality', model_attributes, :valve_percentage,
|
|
33
|
+
range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: true
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
require 'rspec/models/unidom/stapar/classifier_spec'
|
|
1
|
+
require 'rspec/models/unidom/stapar/classifier_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Classifier'
|
|
2
|
+
require 'rspec/models/unidom/stapar/pattern_matching_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternMatching'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: unidom-stapar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.
|
|
4
|
+
version: '0.3'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Topbit Du
|
|
@@ -46,15 +46,18 @@ files:
|
|
|
46
46
|
- app/models/unidom/stapar/classifier.rb
|
|
47
47
|
- app/models/unidom/stapar/concerns/as_feature.rb
|
|
48
48
|
- app/models/unidom/stapar/concerns/as_sample.rb
|
|
49
|
+
- app/models/unidom/stapar/pattern_matching.rb
|
|
49
50
|
- app/types/unidom/stapar/applied_field.rb
|
|
50
51
|
- app/views/layouts/unidom/stapar/application.html.erb
|
|
51
52
|
- config/enum.yml
|
|
52
53
|
- config/locales/enum.zh-CN.yml
|
|
53
54
|
- config/routes.rb
|
|
54
55
|
- db/migrate/20060101000000_create_unidom_classifiers.rb
|
|
56
|
+
- db/migrate/20060102000000_create_unidom_pattern_matchings.rb
|
|
55
57
|
- lib/rspec/models/unidom/stapar/classifier_spec.rb
|
|
56
58
|
- lib/rspec/models/unidom/stapar/concerns/as_feature_shared_examples.rb
|
|
57
59
|
- lib/rspec/models/unidom/stapar/concerns/as_sample_shared_examples.rb
|
|
60
|
+
- lib/rspec/models/unidom/stapar/pattern_matching_spec.rb
|
|
58
61
|
- lib/rspec/types/unidom/stapar/applied_field_spec.rb
|
|
59
62
|
- lib/tasks/unidom/stapar_tasks.rake
|
|
60
63
|
- lib/unidom/stapar.rb
|