This release is a pre-release and may not be stable for production use.
Mohan
Colav Similarity using Elastic Search / Pijao - Mohán spirit of water.
Description
This package allows to perform similarity using Colav similarity algorithms and Elastic Search
Installation
Dependencies
Docker and docker-compose is required.
- https://docs.docker.com/engine/install/ubuntu/ (or https://docs.docker.com/engine/install/debian/, etc)
- Install
docker-compose:
apt install docker-compose
or
pip install docker-compose
-
Deploy Elastic Search from Chia https://github.com/colav/Chia/tree/main/elasticsaerch
Package
pip install mohan
Usage
This package was designed to be used as library, you need import the class Similarity, to create an index, insert documents(works) and perform searches.
The next example is with openalex but it can be used with any dataset.
from mohan.Similarity import Similarity
from pymongo import MongoClient
es_index = "openalex_index"
#creating the instance
s = Similarity(es_index,es_uri= "http://localhost:9200",
es_auth = ('elastic', 'colav'))
#taking openalex as example.
openalex = list(MongoClient()["openalexco"]["works"].find())
#example inserting documents to the Elastic Search index.
bulk_size = 100
es_entries = []
counter = 0
or i in openalex:
work = {}
work["title"] = i["title"]
if "primary_location" in i.keys() and i["primary_location"]:
if i["primary_location"]["source"]:
work["source"] = i["primary_location"]["source"]["display_name"]
work["source"] = ""
else:
work["source"] = ""
work["year"] = i["publication_year"]
work["volume"] = i["biblio"]["volume"]
work["issue"] = i["biblio"]["issue"]
work["first_page"] = i["biblio"]["first_page"]
work["last_page"] = i["biblio"]["last_page"]
authors = []
for author in i['authorships']:
if "display_name" in author["author"].keys():
authors.append(author["author"]["display_name"])
work["authors"] = authors
entry = {"_index": es_index,
"_id": str(i["_id"]),
"_source": work}
es_entries.append(entry)
if len(es_entries) == bulk_size:
s.insert_bulk(es_entries)
es_entries = []
example inserting one document from openalex
work = {"title": i["title"],
"source": i["host_venue"]["display_name"],
"year": i["publication_year"],
"authors": authors,
"volume": i["biblio"]["volume"],
"issue": i["biblio"]["issue"],
"page_start": i["biblio"]["first_page"],
"page_end": i["biblio"]["last_page"]}
res = s.insert_work(_id=str(i["_id"]), work=work)
example performing a search
res = s.search_work(title=i["title"], source = i["host_venue"]["display_name"], year = i["publication_year"],
authors = authors, volume = i["biblio"]["volume"], issue = i["biblio"]["issue"],
page_start = i["biblio"]["first_page"], page_end = i["biblio"]["last_page"])
NOTES:
- The search is performed using the same fields as the insert_work method.
- The title field can be an array when inserting documents, but it will be used as a string when searching documents.
- Authors field have to be an array when inserting/searching documents.
- Extra fields can be added to the insert methods, but they will not be used for the search. Only the fields (title, source, year, authors, volume, issue, page_start, page_end) will be used for the search.
License
BSD-3-Clause License
Links
Metadata
Release files for Mohan 0.0.7a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mohan-0.0.7a0.tar.gz | 7.0 kB | Without provenance | Details for mohan-0.0.7a0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| Mohan-0.0.7a0-py3-none-any.whl | Python 3 | none | any | Details for Mohan-0.0.7a0-py3-none-any.whl |
Total release size: 13.7 kB
Release files / mohan-0.0.7a0.tar.gz
| Download URL | mohan-0.0.7a0.tar.gz |
|---|---|
| Size | 7.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7a078bdc9e784ec654f17893321e9adbc471c62537c78098ed2e95f83296a8b5
|
|
BLAKE2b-256 checksum How to use checksums |
dc65510cedd91ca53127c7e08ec28363ac98d56341603d2bf90eefc036062273
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Release files / Mohan-0.0.7a0-py3-none-any.whl
| Download URL | Mohan-0.0.7a0-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ffc5e20994ed9f78b6a35803aabebfe34609e9a21a2c4566bae166f6ef057689
|
|
BLAKE2b-256 checksum How to use checksums |
3df376a09db2a7814546275067e063e5d4f13b5922e1063cf4e7067e528874fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Security for Mohan 0.0.7a0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.