Skip to content
This repository was archived by the owner on Oct 13, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
d907d53
chore: update .gitignore and add conda setup instructions
dermatologist Apr 30, 2025
3238e5d
feat: implement neural network model using PyTorch and update tests f…
dermatologist Apr 30, 2025
7ea669e
chore: update pyproject.toml and setup.cfg to organize dependencies a…
dermatologist Apr 30, 2025
0ada4d6
chore: update conda.md to simplify package installation command
dermatologist Apr 30, 2025
6f0fe38
feat: enhance ReadData class to support reading from URLs and folders…
dermatologist Apr 30, 2025
da92557
feat: update ReadData class to handle URL input by storing content an…
dermatologist Apr 30, 2025
9e2d7fb
feat: add ClusterDocs class for semantic clustering and update tests …
dermatologist Apr 30, 2025
829214c
feat: enhance ClusterDocs class with num_topics and passes properties…
dermatologist Apr 30, 2025
03def28
feat: add format_topics_sentences method to ClusterDocs for topic for…
dermatologist Apr 30, 2025
1fba657
feat: add most_representative_docs method to ClusterDocs for retrievi…
dermatologist Apr 30, 2025
8402717
feat: add seaborn to dependencies and create visualize.py for data vi…
dermatologist Apr 30, 2025
d3f41bf
feat: enhance QRVisualize class with frequency distribution plotting …
dermatologist Apr 30, 2025
38a8481
feat: update QRVisualize constructor to accept optional DataFrame and…
dermatologist Apr 30, 2025
60572ef
feat: add plot_distribution_by_topic method to QRVisualize for visual…
dermatologist Apr 30, 2025
4d30f7c
feat: add wordcloud to dependencies for enhanced visualization capabi…
dermatologist Apr 30, 2025
28ee69b
feat: refactor build_lda_model method to return topics and improve lo…
dermatologist Apr 30, 2025
643d469
feat: add plot_wordcloud method to QRVisualize for visualizing topics…
dermatologist Apr 30, 2025
bb56996
feat: update plot_wordcloud method parameters for improved visualizat…
dermatologist Apr 30, 2025
fc49b94
feat: add processed_docs property and topics_per_document method to C…
dermatologist Apr 30, 2025
ddc6b96
feat: add copyright notice and improve code formatting in cluster and…
dermatologist Apr 30, 2025
16c2af0
chore: update dependencies in requirements and dev-requirements files…
dermatologist Apr 30, 2025
bd7e454
Update pr.yml
dermatologist May 1, 2025
20d44cb
fix: specify exact torch version and remove deprecated setup.cfg; upd…
dermatologist May 1, 2025
2c6c174
Update pr.yml
dermatologist May 1, 2025
a551f36
fix: update python_requires and add missing entry point for qrmine
dermatologist May 1, 2025
3efce4f
fix: update entry point syntax for qrmine in pyproject.toml
dermatologist May 1, 2025
dd03622
fix: correct entry point syntax for console_scripts in pyproject.toml
dermatologist May 1, 2025
2081eea
fix: remove incorrect console_scripts entry from pyproject.toml
dermatologist May 1, 2025
d4f3553
fix: correct key name for Python version requirement in pyproject.toml
dermatologist May 1, 2025
b569231
Update pr.yml
dermatologist May 1, 2025
97c80d9
fix: add missing dependencies for build system in pyproject.toml
dermatologist May 1, 2025
8100027
Update pr.yml
dermatologist May 1, 2025
7eb9df2
Update pr.yml
dermatologist May 1, 2025
3965bb3
Update pr.yml
dermatologist May 1, 2025
b811c6a
refactor: remove unnecessary folder_path arguments from visualization…
dermatologist May 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ __pycache__/*
.idea
.venv
conda
uv.lock

# Package files
*.egg
Expand Down
12 changes: 12 additions & 0 deletions notes/conda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
conda create --name qrmine python=3.11
conda activate qrmine

conda install conda-forge::uv
uv pip install ini2toml
ini2toml setup.cfg -o pyproject.toml
uv pip install -e .
python -m spacy download en_core_web_sm



pip3 install torch==2.3.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
5 changes: 4 additions & 1 deletion notes/pip-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ OR

* pip install uv
* uv pip compile setup.cfg -o requirements.txt --universal
* uv pip compile dev-requirements.in -o dev-requirements.txt --universal
* uv pip compile dev-requirements.in -o dev-requirements.txt --universal

uv pip install ini2toml
ini2toml setup.cfg -o pyproject.toml
163 changes: 157 additions & 6 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,160 @@
[build-system]
# AVOID CHANGING REQUIRES: IT WILL BE UPDATED BY PYSCAFFOLD!
requires = ["setuptools>=46.1.0", "setuptools_scm[toml]>=5"]
requires = ["setuptools>=61.2"]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
# For smarter version schemes and other configuration options,
# check out https://github.com/pypa/setuptools_scm
version_scheme = "no-guess-dev"
[project]
name = "qrmine"
description = "Qualitative Research support tools in Python!"
authors = [{name = "beapen", email = "github@gulfdoctor.net"}]
license = {text = "GPL-3.0-only"}
# license_files = LICENSE.txt
# long_description = file: README.rst
# long_description_content_type = text/x-rst; charset=UTF-8
classifiers = [
"Intended Audience :: Science/Research",
"Development Status :: 4 - Beta",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.11",
"Topic :: Scientific/Engineering :: Information Analysis",
]
dependencies = [
'importlib-metadata; python_version<"3.8"',
"pandas",
"matplotlib",
"click",
"scikit-learn",
"imbalanced-learn",
"vaderSentiment",
"xgboost",
"mlxtend",
"spacy",
"textacy",
"torch",
"pypdf",
"requests",
"gensim",
"seaborn",
"wordcloud",
]
dynamic = ["version"]

[project.readme]
file = "README.md"
content-type = "text/markdown"
# Add here related links, for example:

[project.urls]
Homepage = "https://github.com/dermatologist/nlp-qrmine"
Documentation = "https://arxiv.org/abs/2003.13519"
# Source = https://github.com/pyscaffold/pyscaffold/
# Changelog = https://pyscaffold.org/en/latest/changelog.html
# Tracker = https://github.com/pyscaffold/pyscaffold/issues
# Conda-Forge = https://anaconda.org/conda-forge/pyscaffold
# Download = https://pypi.org/project/PyScaffold/#files
# Twitter = https://twitter.com/PyScaffold
# Change if running only on Windows, Mac or Linux (comma-separated)
# Add here all kinds of additional classifiers as defined under
# https://pypi.org/classifiers/

[project.optional-dependencies]
# Add here additional requirements for extra features, to install with:
# `pip install qrmine[PDF]` like:
# PDF = ReportLab; RXP
gpu = ["torch[gpu]==2.1.1"]
cpu = ["torch==2.1.1"]
# Add here test requirements (semicolon/line-separated)
testing = [
"setuptools",
"pytest",
"pytest-cov",
]

[project.entry-points]
# Add here console scripts like:
# console_scripts =
# script_name = qrmine.module:function
# For example:
# console_scripts =
# fibonacci = qrmine.skeleton:run
# And any other entry points, for example:
# pyscaffold.cli =
# awesome = pyscaffoldext.awesome.extension:AwesomeExtension

[project.scripts]
qrmine = "qrmine.main:main_routine"

[tool.setuptools]
zip-safe = false
include-package-data = true
package-dir = {"" = "src"}
# Require a min/specific Python version (comma-separated conditions)
# python_requires = >=3.8
# Add here dependencies of your project (line-separated), e.g. requests>=2.2,<3.0.
# Version specifiers like >=2.2,<3.0 avoid problems due to API changes in
# new major versions. This works if the required packages follow Semantic Versioning.
# For more information, check out https://semver.org/.
platforms = ["any"]

[tool.setuptools.packages.find]
where = ["src"]
exclude = ["tests"]
namespaces = true

[tool.pytest.ini_options]
# Specify command line options as you would do when invoking pytest directly.
# e.g. --cov-report html (or xml) for html/xml output or --junitxml junit.xml
# in order to write a coverage file that can be read by Jenkins.
# CAUTION: --cov flags may prohibit setting breakpoints while debugging.
# Comment those flags to avoid this pytest issue.
addopts = """
--verbose"""
norecursedirs = [
"dist",
"build",
".tox",
]

[tool.aliases]
release = "sdist bdist_wheel upload"

[tool.distutils.bdist_wheel]
# Use this option if your package is pure-python
universal = 1

[tool.build_sphinx]
source_dir = "docs"
build_dir = "docs/_build"
testpaths = "tests"
# Use pytest markers to select/deselect specific tests
# markers =
# slow: mark tests as slow (deselect with '-m "not slow"')
# system: mark end-to-end system tests

[tool.devpi.upload]
# Options for the devpi: PyPI server and packaging tool
# VCS export must be deactivated since we are using setuptools-scm
no_vcs = "1"
formats = "bdist_wheel"

[tool.flake8]
# Some sane defaults for the code style checker flake8
max_line_length = "88"
extend_ignore = "E203, W503"
# ^ Black-compatible
# E203 and W503 have edge cases handled by black
exclude = """
.tox
build
dist
.eggs
docs/conf.py"""

[tool.pyscaffold]
# PyScaffold's parameters when the project was created.
# This will be used when updating. Do not change!
version = "4.6"
package = "qrmine"
# This file is used to configure your project.
# Read more about the various options under:
# https://setuptools.pypa.io/en/latest/userguide/declarative_config.html
# https://setuptools.pypa.io/en/latest/references/keywords.html
13 changes: 10 additions & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,12 @@ install_requires =
mlxtend
spacy
textacy
tensorflow<=2.13.1
tensorflow-io-gcs-filesystem<=0.31.0
torch
pypdf
requests
gensim
seaborn
wordcloud

[options.packages.find]
where = src
Expand All @@ -76,7 +80,10 @@ exclude =
# Add here additional requirements for extra features, to install with:
# `pip install qrmine[PDF]` like:
# PDF = ReportLab; RXP

gpu =
torch[gpu]==2.1.1
cpu =
torch==2.1.1
# Add here test requirements (semicolon/line-separated)
testing =
setuptools
Expand Down
2 changes: 2 additions & 0 deletions src/qrmine/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from .readfiles import ReadData
from .sentiment import Sentiment
from .mlqrmine import MLQRMine
from .cluster import ClusterDocs
from .visualize import QRVisualize

if sys.version_info[:2] >= (3, 8):
# TODO: Import directly (no need for conditional) when `python_requires = >= 3.8`
Expand Down
Loading
Loading