Module: TaxonWorks::Analysis::AssertedDistribution::BasicEndemism
- Defined in:
- lib/taxonworks/analysis/asserted_distribution/basic_endemism.rb
Class Method Summary collapse
- 
  
    
      .quick_endemism(taxon_name, asserted_distribution_shape_type, asserted_distribution_shape_id)  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    A very simple report summarizing asserted distributions !! only a single shape is used (not its children). 
Class Method Details
.quick_endemism(taxon_name, asserted_distribution_shape_type, asserted_distribution_shape_id) ⇒ Hash
Returns a very simple report summarizing asserted distributions !! only a single shape is used (not its children).
| 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # File 'lib/taxonworks/analysis/asserted_distribution/basic_endemism.rb', line 12 def self.quick_endemism(taxon_name, asserted_distribution_shape_type, asserted_distribution_shape_id ) data = {} otus = Otu.descendant_of_taxon_name(taxon_name.id) if otus.count > 2000 return { basic_endemism_error: 'Taxon name has too many descendants' } end q = ::Queries::AssertedDistribution::Filter.new( taxon_name_id: taxon_name.id, descendants: true, geo_shape_type: asserted_distribution_shape_type, geo_shape_id: asserted_distribution_shape_id, geo_mode: nil # exact ) return {} if q.all.select(:asserted_distribution_object_id).distinct.count > 2000 q.all.find_each do |a| e = ::AssertedDistribution .where(project: taxon_name.project) .where(asserted_distribution_object_id: a.otu_id) .where(asserted_distribution_shape_type:) .where.not(asserted_distribution_shape_id:).count n = a.asserted_distribution_object.taxon_name&.valid_taxon_name if e == 0 && !data[n] data[n] = false else data[n] = true end end data end |