Files
boc/iom/intelligence/__pycache__/reality_dna.cpython-39.pyc
T

117 lines
9.2 KiB
Plaintext
Raw Normal View History

a
EZ>jB.ã@sxdZddlmZmZmZmZddlmZddlZeGdddƒƒZ GdddƒZ
Gd d
d
ƒZ d d Z e
d
krte ƒdS)zP
Reality DNA
Unique fingerprint for each place
Enables global similarity search
é)ÚDictÚListÚOptionalÚTuple)Ú dataclassNc@eZdZUdZeed<eed<eeefed<eed<eed<eed<eed<eed <eed
<eed <eed <eed
<eed<eeed<eed<edœddZ dS)Ú
RealityDNAzDNA fingerprint of a placeÚ location_idÚ
location_nameÚ coordinatesÚ walkabilityÚtourismÚretailÚfamilyÚnoiseÚhistoryÚsafetyÚgreeneryÚ connectivityÚ
affordabilityÚ
dna_vectorÚdna_hash©ÚreturncC|j|j|jt|jdƒt|jdƒt|jdƒt|jdƒt|jdƒt|j dƒt|j
dƒt|j dƒt|j dƒt|j
dƒdœ
dd|jDƒ|jdœS))
r r r
rrrrrrrcSsg|]}t|dƒqS)é)Úround©Ú.0Úrú?/home/bernt/.openclaw/workspace/iom/intelligence/reality_dna.pyÚ
<listcomp>4óz&RealityDNA.to_dict.<locals>.<listcomp>)rr r
Údnarr)rr r
rr r r
rrrrrrrrr©Úselfrrr Úto_dict#s"









ö ïzRealityDNA.to_dictN)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚstrÚ__annotations__rÚfloatrr&rrrr r s"
 rc@s@eZdZdZeeeeefedœddZe eedœddZ
dS) ÚRealityDNABuilderzBuilds Reality DNA from signals)rr ÚsignalsrcC| dd¡}| dd¡}| dd¡}| dd¡}| dd¡}| dd¡} | dd¡}
| d d¡} | d
d¡} d | d d¡}
|||||| |
| | |
g
}| |¡}t||| d
dddœ¡|||||| |
| | |
||dS)zBuild DNA from signal valuesr é2r Úretail_densityÚfamily_friendlyÚ noise_levelÚhistorical_valueÚ safety_indexrÚmobile_connectivityédÚ rent_burdenr
r©ÚlatÚlng)rr r
r r r
rrrrrrrrr)ÚgetÚ _hash_vectorr)r%rr r/r r r
rrrrrrrÚvectorrrrr Úbuild<s>         

þ
ñzRealityDNABuilder.build)r>rcCs"dd|Dƒ}d dd|Dƒ¡S)zCreate hash from DNA vectorcSsg|]}t|dƒqS)é
)Úintrrrr r!ir"z2RealityDNABuilder._hash_vector.<locals>.<listcomp>Úcss|]}tt|dƒƒVqdS)é N)r+Úmin)rÚqrrr Ú <genexpr>jr"z1RealityDNABuilder._hash_vector.<locals>.<genexpr>)Újoin)r%r>Z quantizedrrr r=fszRealityDNABuilder._hash_vectorN) r'r(r)r*r+rr-rr?rr=rrrr r.9s*r.c@eZdZdZddZedœddZdeeee e
d œd
d Z de
e e
fee e
d œd
dZdeee e
dœddZe e
e e
e
dœddZe
dœddZe
dœddZdS)ÚGlobalSimilaritySearchzFind similar places globallycCs
i|_dS©N)Ú dna_databaser$rrr Ú__init__pszGlobalSimilaritySearch.__init__)r#cCs||j|j<dS)zAdd a place to the databaseN)rJr)r%r#rrr Ú add_placessz GlobalSimilaritySearch.add_placeéT)Ú query_dnaÚtop_kÚ exclude_selfrc Cs€g}|j ¡D]R\}}|r&||jkr&q| |j|j¡}| |j|j|jt|dƒ|  ¡ddœ¡q|j
dddd|d|S) z
Find places similar to query
Returns:
List of similar places with similarity scores
ér#©rr r
Ú
similarityr#cSs|dS©NrSr©Úxrrr Ú<lambda>•r"z5GlobalSimilaritySearch.find_similar.<locals>.<lambda>T©ÚkeyÚreverseN© rJÚitemsrÚ_calculate_similarityrÚappendr r
rr&Úsort)r%rNrOrPÚ similaritiesrÚ candidaterSrrr Ú find_similarws 
û
z#GlobalSimilaritySearch.find_similar)ÚpatternrOrc
C| dd¡| dd¡| dd¡| dd¡| dd¡| dd¡| dd¡| d d¡| d
d¡| d d¡g
}g}|j ¡D]@\}}| ||j¡}| |j|j|jt |d ƒ| 
¡d
dœ¡qv|j dddd|d|S)
Find places matching a DNA pattern
Example:
{"walkability": 90, "tourism": 80, "history": 95}
→ Finds places like Gamla Stan
r r0r r
rrrrrrrrQr#rRcSs|dSrTrrUrrr rWÀr"z<GlobalSimilaritySearch.find_by_dna_pattern.<locals>.<lambda>TrXN) r<rJr\r]rr^rr r
rr&r_)r%rcrOZ query_vectorr`rrarSrrr Úfind_by_dna_pattern™s.









ö

û
z*GlobalSimilaritySearch.find_by_dna_patternrQ)rNrOrc Cszg}|j ¡D]N\}}||jkr"q| |j|j¡}| |j|j|jt|dƒ|  ¡ddœ¡q|j
ddd|d|S)z&Find places that are opposite to queryrQr#rRcSs|dSrTrrUrrr rWÛr"z7GlobalSimilaritySearch.find_contrasts.<locals>.<lambda>)rYNr[)r%rNrOr`rrarSrrr Úfind_contrastsÄs

û
z%GlobalSimilaritySearch.find_contrasts)Úvector_aÚvector_brcCsxt|ƒt|ƒkrdStddt||ƒDƒƒ}tdd|Dƒƒd}tdd|Dƒƒd}|dksh|dkrldS|||S)z3Calculate cosine similarity between two DNA vectorsgcss|]\}}||VqdSrIr)rÚbrrr rFår"z?GlobalSimilaritySearch._calculate_similarity.<locals>.<genexpr>css|]}||VqdSrIr)rrhrrr rFær"gà?css|]}||VqdSrIr)rrirrr rFçr"r)ÚlenÚsumÚzip)r%rfrgZ dot_productZ magnitude_aZ magnitude_brrr r]ßsz,GlobalSimilaritySearch._calculate_similarityrcCst|jƒ| ¡dœS)zGet database statistics)Z total_placesZcoverage)rjrJÚ_calculate_coverager$rrr Ú get_statsîsþz GlobalSimilaritySearch.get_statscCst|js
iSdd|j ¡Dƒ}dd|j ¡Dƒ}t|ƒt|ƒgt|ƒt|ƒgt|ƒt|ƒt|ƒt|ƒdœdœS)zCalculate geographic coveragecSsg|]}|jdqS)r:©r
©rÚdrrr r!úr"z>GlobalSimilaritySearch._calculate_coverage.<locals>.<listcomp>cSsg|]}|jdqS)r;rorprrr r!ûr"r9)Z lat_rangeZ lng_rangeÚcenter)rJÚvaluesrDÚmaxrkrj)r%ZlatsZlngsrrr rmõsþýz*GlobalSimilaritySearch._calculate_coverageN)rMT)rM)rQ)r'r(r)r*rKrrLrAÚboolrrrbr+r-rdrer]rnrmrrrr rHms4üû %ý
ü .ýü rHc
Ctƒ}tƒ}ddddddddd d
d d d
œdœ }| dd|¡}| |¡tdƒtd|jƒtd|jƒddddd dddd dddddd