Skip to content

Zolboo pull edit and docs refactor - #93

Merged
cmatKhan merged 48 commits into
BrentLab:devfrom
cmatKhan:zolboo_pull_edit_and_docs_refactor
Mar 18, 2026
Merged

Zolboo pull edit and docs refactor#93
cmatKhan merged 48 commits into
BrentLab:devfrom
cmatKhan:zolboo_pull_edit_and_docs_refactor

Conversation

@cmatKhan

Copy link
Copy Markdown
Member

This supersedes #91.

@ezolbooe , I did a good deal of refactoring that I have been needing to do. Please ignore the docs/ and README and what not (unless you want to look at it of course).

What used to be in interface.py is in __main__.py and the cmd to run is now just python -m tfbpmodeling --help.

I made some minor tweaks to your stag3_2b (just what I put in slack, just adding the main effects of the interactor terms to the terms that survive stage 2).

I had AI help with refactoring the logging so that the Stage references are consistent. Stage3 is now Stage3-lasso and Stage3-lassoCV, for example.

If you can, look over the main workflow code in main.py and just make sure you still agree with what is going on there. I'm happy at this point to make sure that variables are clear, too -- it shouldn't be hard for us to read this at this point

Zolboo Erdenebaatar and others added 30 commits December 1, 2025 15:18
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
…rentLab#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging
…rentLab#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>
…e minimal test case size (BrentLab#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size
* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (BrentLab#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>
* preparing for paper release (BrentLab#77)

* updating the tmp/readme

* updating precommit

* fixing cmd line interface in __main__

* updating typing on sigmoid fit

* adding logging re how CV is performed

* initial topn modeling implementation. This will store the results in a separate output directory to differentiate from all data modeling

* initial attempt of stage 3 of modeling. This seems to run without issues based on limited testing.

* stepwise modelling

* this separates the sigmoid step 3 into its own function; reoganizes cmd line input into reusable groups; sets the evaluate_interactor_significance estimator to LinearRegression by default

* removing windows 2019 from CI

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* only running tests on ubuntu

* trying to configure codecov

* debugging codecov

* debugging codecov

* removing codecov badge and updating the pytest badge

* adding the codecov badge back in -- secret corrected in the repo

* debugging codecov

* still debugging codecov

* Add cubic ptf and standardization (BrentLab#29)

* init

* After installing pre-commit

* add center and scaling

* changing the names for center scaling

* Update tfbpmodeling/__main__.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* debugging the names for scale and center

* editing annotatioins

---------

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Set random state on bootstraps; Remove unweighted bootstrap option (BrentLab#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* Add function to exclude all model variables (BrentLab#33)

* adding function to exclude all predictors. this can be used to exclude all and then use args.add_model_variables to customize the formula

* casting predictor_variables to list

* fixing centering and scaling (BrentLab#36)

* loop exits if no variable selected within the loop, fixes issue 34 (BrentLab#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* setting evaluate_interactor_significance ci_level to the parse args argument

* Tommy new stage3 (BrentLab#41)

* WIP

* fixing imported but not used

* adding argument to include stage4_lasso

* changing formatting problems

* adding logger infomation for stage 4 method

* changing location of logger info for stage 4 method

* modifying logger.info to evaluate_interactor_significance

* adding f string to Writing the final interactor significance results to {output_significance_file}

* fixing logging

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: chasem <chasem@wustl.edu>

* fixing error in stratification_classification that reversed the bin_by_binding_only param (BrentLab#44)

* adding feature stage4_topn (BrentLab#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Add row max in interactor significance (BrentLab#48)

* setting row max depending on model variables

* setting row max depending on model variables

* adding testing on log for evaluate_interactor_significance

* removing ptf from all data formula by default (BrentLab#51)

* Remove bin by binding and Add check on number of features and increase minimal test case size (BrentLab#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Refactor main by adding interface.py (BrentLab#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Separate the functions and objects in lasso_modeling.py (BrentLab#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (BrentLab#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing scale_center from interface (BrentLab#60)

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* claude developed docs

* removing a old comment

* updating documentation to reflect that the centering option is removed

* removing a old comment

* updating documentation to reflect that the centering option is removed

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
Co-authored-by: Chase Mateusiak <chasem@wustl.edu>
…rentLab#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging
…rentLab#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>
…e minimal test case size (BrentLab#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size
* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (BrentLab#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates the package’s main modeling workflow and CLI into tfbpmodeling/__main__.py, adds new workflow switches (notably --stage3_lassocv and --stage2_set_zero), and updates tests + documentation to match the new single-command invocation (python -m tfbpmodeling).

Changes:

  • Move/replace the former interface.py workflow with tfbpmodeling(args) in __main__.py, and simplify the CLI (no subcommands).
  • Add Stage 3 optional “LassoCV refit” step and add stage2_set_zero plumbing into ModelingInputData.
  • Large docs refresh: remove CLI reference pages/mermaid support; update tutorials and API docs to reference tfbpmodeling.__main__.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tfbpmodeling/tests/test_interface.py Updates tests to call tfbpmodeling.__main__.tfbpmodeling and asserts updated stage logging.
tfbpmodeling/modeling_input_data.py Adds stage2_set_zero option and modifies top‑N masking behavior to optionally zero-out non-top‑N predictors instead of dropping rows.
tfbpmodeling/interface.py Removes the old interface module implementation (workflow migrated elsewhere).
tfbpmodeling/__main__.py Becomes the single CLI + workflow module; implements Stage 0–3 pipeline and adds new flags.
README.md Simplifies README content and removes extensive CLI/usage documentation.
pyproject.toml Bumps project version to 1.0.0.
mkdocs.yml Removes mermaid configuration and CLI reference pages from nav.
docs/tutorials/basic-workflow.md Updates tutorial commands to python -m tfbpmodeling and adjusts referenced output paths.
docs/tutorials/advanced-features.md Updates examples and programmatic import path to tfbpmodeling.__main__.tfbpmodeling; updates renamed flags.
docs/output.md Updates output structure docs for renamed stages and documents optional Stage 3 - LassoCV outputs.
docs/js/mermaid-init.js Removes mermaid initialization JS (aligned with mkdocs.yml changes).
docs/index.md Updates landing page workflow description (no mermaid diagram) and citation metadata.
docs/getting-started/quickstart.md Updates quickstart commands and output directory examples for the new CLI usage.
docs/getting-started/installation.md Removes subcommand help references; points readers to contributing docs for dev setup.
docs/development/testing.md Removes standalone testing guide page.
docs/development/contributing.md Updates project structure to reflect __main__.py as the workflow location; simplifies contribution guidance.
docs/cli/overview.md Removes CLI overview page (CLI ref section removed from docs).
docs/cli/linear-perturbation-binding-modeling.md Removes the detailed subcommand CLI reference page.
docs/api/interface.md Retargets API docs from tfbpmodeling.interface to tfbpmodeling.__main__.
CLAUDE.md Updates developer guidance to match the single-command CLI and new stage naming.
.vscode/settings.json Updates spellcheck dictionary entries/order.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread tfbpmodeling/tests/test_interface.py Outdated
Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread docs/output.md Outdated
Comment thread tfbpmodeling/modeling_input_data.py
@codecov

codecov Bot commented Mar 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.21459% with 116 lines in your changes missing coverage. Please review.
✅ Project coverage is 67.29%. Comparing base (5eef2bb) to head (e094ee5).
⚠️ Report is 1 commits behind head on dev.

Files with missing lines Patch % Lines
tfbpmodeling/__main__.py 50.45% 93 Missing and 17 partials ⚠️
tfbpmodeling/modeling_input_data.py 44.44% 3 Missing and 2 partials ⚠️
tfbpmodeling/configure_logger.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##              dev      #93      +/-   ##
==========================================
- Coverage   72.19%   67.29%   -4.91%     
==========================================
  Files          13       14       +1     
  Lines         838      954     +116     
  Branches      116      132      +16     
==========================================
+ Hits          605      642      +37     
- Misses        174      247      +73     
- Partials       59       65       +6     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

cmatKhan and others added 6 commits March 17, 2026 09:19
The top-n bootstrap random_state calculation treats 0 as falsy: args.random_state + 10 if args.random_state else .... If a user passes --random_state 0, Stage 2 will incorrectly reuse the Stage 1 seed instead of offsetting it. Use an explicit is not None check so that 0 is handled as a valid seed.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates the package’s CLI and primary workflow into tfbpmodeling/__main__.py, introduces an optional “Stage 3 - LassoCV” refit step, and updates tests + documentation to reflect the new single-command invocation (python -m tfbpmodeling).

Changes:

  • Moved the former interface.py workflow/CLI helpers into __main__.py and simplified the CLI to a single command (no subcommands).
  • Added optional Stage 3 - LassoCV refit logic and a hidden stage2_set_zero data-handling option.
  • Updated tests and docs to match new stage naming and CLI usage; removed older CLI reference docs and mermaid setup.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tfbpmodeling/tests/test_interface.py Updates integration-style logging tests to call tfbpmodeling.__main__.tfbpmodeling() and assert new stage log messages.
tfbpmodeling/modeling_input_data.py Adds stage2_set_zero behavior for Top-N masking and tweaks masking logic/comments.
tfbpmodeling/interface.py Removes the old interface module (workflow + CLI helpers).
tfbpmodeling/__main__.py Becomes the single CLI + workflow implementation; adds Stage 3 - LassoCV optional refit and new flags.
README.md Removes the long CLI walkthrough, leaving a minimal installation pointer to the hosted docs.
pyproject.toml Bumps package version to 1.0.0.
mkdocs.yml Removes mermaid config and drops the dedicated CLI nav section.
docs/tutorials/basic-workflow.md Updates examples/paths to use python -m tfbpmodeling and new default output directory.
docs/tutorials/advanced-features.md Updates CLI examples + programmatic usage import to tfbpmodeling.__main__.
docs/output.md Updates stage naming and documents the optional Stage 3 - LassoCV output file.
docs/js/mermaid-init.js Deletes mermaid initialization JS (no longer used).
docs/index.md Replaces mermaid diagram with text workflow description; updates citation year/author ordering.
docs/getting-started/quickstart.md Updates CLI examples and default output paths to the new entrypoint.
docs/getting-started/installation.md Simplifies dev/setup text and removes subcommand help examples.
docs/development/testing.md Removes the standalone testing guide page.
docs/development/contributing.md Updates repo structure notes and simplifies contribution/testing guidance.
docs/cli/overview.md Removes CLI overview page (subcommand-centric).
docs/cli/linear-perturbation-binding-modeling.md Removes subcommand-specific CLI reference page.
docs/api/interface.md Retargets API docs from tfbpmodeling.interface to tfbpmodeling.__main__.
CLAUDE.md Updates developer guidance to reflect the single-entry workflow in __main__.py.
.vscode/settings.json Adds “interactors” to spellchecker words and minor ordering tweaks.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/modeling_input_data.py
Comment thread docs/output.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates the main modeling workflow into tfbpmodeling.__main__ (making python -m tfbpmodeling the primary entry point), updates the multi-stage workflow (including an optional Stage 3 LassoCV refit), and refreshes tests/docs to match the new CLI and staging terminology.

Changes:

  • Move/replace the previous interface.py workflow with tfbpmodeling(args) in __main__.py and simplify the CLI to a single command (no subcommands).
  • Add optional Stage 3 - LassoCV refit logic and new flags (e.g., --stage3_lassocv, --stage2_set_zero, --skip_1st_stage).
  • Update tests and documentation to reflect new stage names, CLI invocation, and outputs; bump package version to 1.0.0.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tfbpmodeling/__main__.py New single-file CLI + end-to-end workflow implementation, including Stage 3 - LassoCV option.
tfbpmodeling/modeling_input_data.py Adds stage2_set_zero behavior for Top-N masking and updates response/predictor masking logic.
tfbpmodeling/tests/test_interface.py Updates tests to call tfbpmodeling.__main__.tfbpmodeling and adds Stage 3 - LassoCV logging assertions.
tfbpmodeling/interface.py Removes the prior interface module implementation.
docs/*, README.md, mkdocs.yml, CLAUDE.md Documentation refreshed to match the new CLI/workflow and stage naming; removes CLI subcommand docs/mermaid support.
pyproject.toml Version bump to 1.0.0.
.vscode/settings.json Adds spelling whitelist term(s).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/modeling_input_data.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates the package’s CLI + core workflow into tfbpmodeling/__main__.py, updates the workflow stage naming and options (including an optional Stage 3 LassoCV refit), and refreshes tests/docs to match the new entrypoint and outputs.

Changes:

  • Migrate the main modeling workflow from interface.py into __main__.py and simplify CLI invocation to python -m tfbpmodeling ... (no subcommand).
  • Add stage2_set_zero handling in ModelingInputData and introduce optional --stage3_lassocv refit stage.
  • Update tests and documentation to reflect the new CLI/workflow; bump package version to 1.0.0.

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tfbpmodeling/__main__.py New single entrypoint containing CLI parsing + full modeling workflow, including optional Stage 3 LassoCV refit.
tfbpmodeling/interface.py Removed legacy workflow/CLI helper module.
tfbpmodeling/modeling_input_data.py Adds stage2_set_zero option and updates masking behavior for top-N selection.
tfbpmodeling/tests/test_interface.py Updates integration-style workflow logging tests to call tfbpmodeling.__main__.tfbpmodeling.
tfbpmodeling/configure_logger.py Expands accepted log levels to include CRITICAL.
tfbpmodeling/bootstrapped_input_data.py Clarifies normalize_sample_weights behavior in docstring.
README.md Simplifies top-level README content and links out to hosted docs.
pyproject.toml Bumps version to 1.0.0.
mkdocs.yml Removes Mermaid configuration and CLI reference entries from nav.
docs/index.md Updates workflow documentation to match new stage structure and optional Stage 3 LassoCV.
docs/output.md Updates output docs to include optional stage3_lassocv_significant_*.json and new stage numbering.
docs/getting-started/installation.md Removes subcommand help references; points to contributing docs for dev setup.
docs/getting-started/quickstart.md Updates CLI examples to python -m tfbpmodeling ... and renamed flags.
docs/tutorials/basic-workflow.md Updates CLI examples (but still contains timestamped output-dir assumptions).
docs/tutorials/advanced-features.md Updates programmatic usage import and renamed stage flags.
docs/development/contributing.md Updates project structure docs to reflect removal of interface.py and workflow-in-__main__.py.
docs/api/interface.md Retargets API docs from tfbpmodeling.interface to tfbpmodeling.__main__.
docs/cli/overview.md Removed CLI reference page (old subcommand-based CLI).
docs/cli/linear-perturbation-binding-modeling.md Removed old subcommand-specific CLI page.
docs/development/testing.md Removed long-form testing guide page.
docs/js/mermaid-init.js Removed Mermaid initialization JS.
CLAUDE.md Updates architecture notes for new single-entrypoint workflow and CLI.
.vscode/settings.json Adds “interactors” to spellchecker words list and reorders entries.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread tfbpmodeling/__main__.py
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/__main__.py Outdated
Comment thread tfbpmodeling/modeling_input_data.py
Comment thread tfbpmodeling/modeling_input_data.py
Comment thread docs/tutorials/basic-workflow.md Outdated
@cmatKhan
cmatKhan merged commit 7d05ad2 into BrentLab:dev Mar 18, 2026
5 checks passed
@cmatKhan
cmatKhan deleted the zolboo_pull_edit_and_docs_refactor branch March 18, 2026 17:13
cmatKhan added a commit that referenced this pull request Mar 18, 2026
* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Fix estimator comment in interface (#83)

* preparing for paper release (#77)

* updating the tmp/readme

* updating precommit

* fixing cmd line interface in __main__

* updating typing on sigmoid fit

* adding logging re how CV is performed

* initial topn modeling implementation. This will store the results in a separate output directory to differentiate from all data modeling

* initial attempt of stage 3 of modeling. This seems to run without issues based on limited testing.

* stepwise modelling

* this separates the sigmoid step 3 into its own function; reoganizes cmd line input into reusable groups; sets the evaluate_interactor_significance estimator to LinearRegression by default

* removing windows 2019 from CI

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* only running tests on ubuntu

* trying to configure codecov

* debugging codecov

* debugging codecov

* removing codecov badge and updating the pytest badge

* adding the codecov badge back in -- secret corrected in the repo

* debugging codecov

* still debugging codecov

* Add cubic ptf and standardization (#29)

* init

* After installing pre-commit

* add center and scaling

* changing the names for center scaling

* Update tfbpmodeling/__main__.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* debugging the names for scale and center

* editing annotatioins

---------

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* Add function to exclude all model variables (#33)

* adding function to exclude all predictors. this can be used to exclude all and then use args.add_model_variables to customize the formula

* casting predictor_variables to list

* fixing centering and scaling (#36)

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* setting evaluate_interactor_significance ci_level to the parse args argument

* Tommy new stage3 (#41)

* WIP

* fixing imported but not used

* adding argument to include stage4_lasso

* changing formatting problems

* adding logger infomation for stage 4 method

* changing location of logger info for stage 4 method

* modifying logger.info to evaluate_interactor_significance

* adding f string to Writing the final interactor significance results to {output_significance_file}

* fixing logging

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: chasem <chasem@wustl.edu>

* fixing error in stratification_classification that reversed the bin_by_binding_only param (#44)

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Add row max in interactor significance (#48)

* setting row max depending on model variables

* setting row max depending on model variables

* adding testing on log for evaluate_interactor_significance

* removing ptf from all data formula by default (#51)

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing scale_center from interface (#60)

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* claude developed docs

* removing a old comment

* updating documentation to reflect that the centering option is removed

* removing a old comment

* updating documentation to reflect that the centering option is removed

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* removing a rebase error

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing a rebase error

* Rename exclude_interactor_variables (#88)

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing a rebase error

* renaming exclude_interaction_variable to exclude_model_variable

* clarifying cmd line instructions

* updating macos github actions version

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fixing plural on exclude_model_variables

* Update tfbpmodeling/interface.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update tfbpmodeling/interface.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fixing some documentation issues with plural/singular and names around exclude and include variables

* Update docs/cli/linear-perturbation-binding-modeling.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/getting-started/quickstart.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fixing logger issue (#92)

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Fix estimator comment in interface (#83)

* preparing for paper release (#77)

* updating the tmp/readme

* updating precommit

* fixing cmd line interface in __main__

* updating typing on sigmoid fit

* adding logging re how CV is performed

* initial topn modeling implementation. This will store the results in a separate output directory to differentiate from all data modeling

* initial attempt of stage 3 of modeling. This seems to run without issues based on limited testing.

* stepwise modelling

* this separates the sigmoid step 3 into its own function; reoganizes cmd line input into reusable groups; sets the evaluate_interactor_significance estimator to LinearRegression by default

* removing windows 2019 from CI

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* only running tests on ubuntu

* trying to configure codecov

* debugging codecov

* debugging codecov

* removing codecov badge and updating the pytest badge

* adding the codecov badge back in -- secret corrected in the repo

* debugging codecov

* still debugging codecov

* Add cubic ptf and standardization (#29)

* init

* After installing pre-commit

* add center and scaling

* changing the names for center scaling

* Update tfbpmodeling/__main__.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* debugging the names for scale and center

* editing annotatioins

---------

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* Add function to exclude all model variables (#33)

* adding function to exclude all predictors. this can be used to exclude all and then use args.add_model_variables to customize the formula

* casting predictor_variables to list

* fixing centering and scaling (#36)

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* setting evaluate_interactor_significance ci_level to the parse args argument

* Tommy new stage3 (#41)

* WIP

* fixing imported but not used

* adding argument to include stage4_lasso

* changing formatting problems

* adding logger infomation for stage 4 method

* changing location of logger info for stage 4 method

* modifying logger.info to evaluate_interactor_significance

* adding f string to Writing the final interactor significance results to {output_significance_file}

* fixing logging

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: chasem <chasem@wustl.edu>

* fixing error in stratification_classification that reversed the bin_by_binding_only param (#44)

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Add row max in interactor significance (#48)

* setting row max depending on model variables

* setting row max depending on model variables

* adding testing on log for evaluate_interactor_significance

* removing ptf from all data formula by default (#51)

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing scale_center from interface (#60)

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* claude developed docs

* removing a old comment

* updating documentation to reflect that the centering option is removed

* removing a old comment

* updating documentation to reflect that the centering option is removed

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* removing a rebase error

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing a rebase error

* trying to fix logger issue

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: ejiawustl <e.jia@wustl.edu>

* Zolboo pull edit and docs refactor (#93)

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Fix estimator comment in interface (#83)

* preparing for paper release (#77)

* updating the tmp/readme

* updating precommit

* fixing cmd line interface in __main__

* updating typing on sigmoid fit

* adding logging re how CV is performed

* initial topn modeling implementation. This will store the results in a separate output directory to differentiate from all data modeling

* initial attempt of stage 3 of modeling. This seems to run without issues based on limited testing.

* stepwise modelling

* this separates the sigmoid step 3 into its own function; reoganizes cmd line input into reusable groups; sets the evaluate_interactor_significance estimator to LinearRegression by default

* removing windows 2019 from CI

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* only running tests on ubuntu

* trying to configure codecov

* debugging codecov

* debugging codecov

* removing codecov badge and updating the pytest badge

* adding the codecov badge back in -- secret corrected in the repo

* debugging codecov

* still debugging codecov

* Add cubic ptf and standardization (#29)

* init

* After installing pre-commit

* add center and scaling

* changing the names for center scaling

* Update tfbpmodeling/__main__.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/tests/test_lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/lasso_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* debugging the names for scale and center

* editing annotatioins

---------

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* Add function to exclude all model variables (#33)

* adding function to exclude all predictors. this can be used to exclude all and then use args.add_model_variables to customize the formula

* casting predictor_variables to list

* fixing centering and scaling (#36)

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* setting evaluate_interactor_significance ci_level to the parse args argument

* Tommy new stage3 (#41)

* WIP

* fixing imported but not used

* adding argument to include stage4_lasso

* changing formatting problems

* adding logger infomation for stage 4 method

* changing location of logger info for stage 4 method

* modifying logger.info to evaluate_interactor_significance

* adding f string to Writing the final interactor significance results to {output_significance_file}

* fixing logging

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: chasem <chasem@wustl.edu>

* fixing error in stratification_classification that reversed the bin_by_binding_only param (#44)

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Add row max in interactor significance (#48)

* setting row max depending on model variables

* setting row max depending on model variables

* adding testing on log for evaluate_interactor_significance

* removing ptf from all data formula by default (#51)

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing scale_center from interface (#60)

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* claude developed docs

* removing a old comment

* updating documentation to reflect that the centering option is removed

* removing a old comment

* updating documentation to reflect that the centering option is removed

---------

Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* removing a rebase error

* stepwise modelling

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* Update tfbpmodeling/loop_modeling.py

Co-authored-by: Chase Mateusiak <chasem@wustl.edu>

* with pre-commit

* removing islice from bootstrap loop

* removing fixtures to conftest; fixing spacing in loop module; adding pytest to CI

* Set random state on bootstraps; Remove unweighted bootstrap option (#31)

* intermediate

* propogating bootstrappedmodelinginputdata changes to __main__

* removed unweighted bootstrap options

* removing top_n as argparse option from step3 sigmoid parser

* adding center_scale to argparse

* setting drop_intercept to True permanently for sigmoid worker

* the sigmoid parameters must have args.drop_intercept still

* handling intercepts

* fixing typo in center_scale logging

* changing the way the formula is logged

* removing truncation from formula logging

* adding logging on random_state in bootstrappedmodelinput

* removing sample weight cv log

* removing sample weight cv logging

* loop exits if no variable selected within the loop, fixes issue 34 (#37)

* loop exits if no variable selected within the loop, fixes issue 34

* fixing linter issues

* linter issues

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>

* adding feature stage4_topn (#43)

* adding feature stage4_topn

* modifying argument parser

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* Align response_df with predictors from get_modeling_data to ensure consistency when top_n_masked is enabled

* aligning stratified_cv_r2

* restoring changes to evaluate_interactor_significance_linear

* commit after fixing error in stratification_classification

* attempt to fixing inconsistent numbers of samples

* fixing pr

---------

Co-authored-by: chasem <chasem@wustl.edu>

* Remove bin by binding and Add check on number of features and increase minimal test case size (#54)

* saving changes for remove_bin_by_binding

* Add check on number of features and increase minimal test case size

* Separate the functions and objects in lasso_modeling.py (#58)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

* separate the functions and objects in lasso_modeling.py

* Refactor main by adding interface.py (#56)

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* create interface.py to separate main

* add tests to verify important logging statements

* move the logging configuration back into main

* fixing interface

* removing bin_by_binding_only from test arguments to interface

* adding name == main to main script

* create interface.py to separate main

* move the logging configuration back into main

* removing bin_by_binding_only from test arguments to interface

* rebasing refactor onto dev

* adding calling to main

* adding a feature column in test_interface

---------

Co-authored-by: chasem <chasem@wustl.edu>

* create interface.py to separate main

move the logging configuration back into main

fixing interface

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

rebasing refactor onto dev

create interface.py to separate main

move the logging configuration back into main

removing bin_by_binding_only from test arguments to interface

adding name == main to main script

separate the functions and objects in lasso_modeling.py

* renaming loop_modeling

* separate the tests out into files

* separate the tests out into files

* fixing evaluate_interactor_significance_lassocv

---------

Co-authored-by: chasem <chasem@wustl.edu>

* removing a rebase error

* Added logic for the following: (1) stage3_2b, (2) skip_1st_stage, (3) stage2_set_zero

* refactoring

* refactoring documentation

* versioning to v1.0.0

* addressing scipy future warning on n_alphas to alphas

* removing trailing whitespace

* Potential fix for pull request finding

The top-n bootstrap random_state calculation treats 0 as falsy: args.random_state + 10 if args.random_state else .... If a user passes --random_state 0, Stage 2 will incorrectly reuse the Stage 1 seed instead of offsetting it. Use an explicit is not None check so that 0 is handled as a valid seed.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* addressing copilot suggestions

* revising given copilot review

* clarifying stage3 order

* addressing copilot logger and sorted order of stage3_lassocv terms

* adding documentation for sample_weight_normalization in modelinputdata class

* changing logging level for no coefficients logs

* doing some output name refactoring

* refactoring docs

* updating output_dir help text

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Zolboo Erdenebaatar <e.zolboo@n039.adm>
Co-authored-by: ezolbooe <e.zolboo@wustl.edu>
Co-authored-by: zolboo e <admin@zolboos-macbook-pro.local.dhcp.wustl.edu>
Co-authored-by: Zolboo Erdenebaatar <e.zolboo@login.adm>
Co-authored-by: zolboo e <admin@zolboos-MacBook-Pro.local>
Co-authored-by: 17TML <liuchenxing9@gmail.com>
Co-authored-by: ejiawustl <e.jia@wustl.edu>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@cmatKhan cmatKhan mentioned this pull request Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants