Skip to content

Commit

Permalink
Mckay/c2pro reports test (#99) (pinellolab#479)
Browse files Browse the repository at this point in the history
* Fix CRISPRessoAggregate bug and other improvements (#95)

* D3-Enhancements (#78)

* Sam/try plots (#71)

* Fix batch mode pandas warning. (#70)

* refactor to call method on DataFrame, rather than Series.
Removes warning.

* Fix pandas future warning in CRISPRessoWGS

---------



* Functional

* Cole/fix status file name (#69)

* Update config file logging messages

This removes printing the exception (which is essentially a duplicate),
and adds a condition if no config file was provided. Also changes `json`
to `config` so that it is more clear.

* Fix divide by zero when no amplicons are present in Batch mode

* Don't append file_prefix to status file name

* Place status files in output directories

* Update tests branch for file_prefix addition

* Load D3 and plotly figures with pro with multiple amplicons

* Update batch

* Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

Before this fix, when using a file_prefix the second run that was compared
would not be displayed as a data in the first figure of the report.

* Import CRISPRessoPro instead of importing the version

When installed via conda, the version is not available

* Remove `get_amplicon_output` unused function from CRISPRessoCompare

Also remove unused argparse import

* Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

* Allow for matching of multiple guides in the same amplicon

* Fix pandas FutureWarning

* Change test branch back to master

---------



* Try catch all futures

* Fix test fail plots

* Point test to try-plots

* Fix d3 not showing and plotly mixing with matplotlib

* Use logger for warnings and debug statements

* Point tests back at master

---------




* Sam/fix plots (#72)

* Fix batch mode pandas warning. (#70)

* refactor to call method on DataFrame, rather than Series.
Removes warning.

* Fix pandas future warning in CRISPRessoWGS

---------



* Functional

* Cole/fix status file name (#69)

* Update config file logging messages

This removes printing the exception (which is essentially a duplicate),
and adds a condition if no config file was provided. Also changes `json`
to `config` so that it is more clear.

* Fix divide by zero when no amplicons are present in Batch mode

* Don't append file_prefix to status file name

* Place status files in output directories

* Update tests branch for file_prefix addition

* Load D3 and plotly figures with pro with multiple amplicons

* Update batch

* Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

Before this fix, when using a file_prefix the second run that was compared
would not be displayed as a data in the first figure of the report.

* Import CRISPRessoPro instead of importing the version

When installed via conda, the version is not available

* Remove `get_amplicon_output` unused function from CRISPRessoCompare

Also remove unused argparse import

* Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

* Allow for matching of multiple guides in the same amplicon

* Fix pandas FutureWarning

* Change test branch back to master

---------



* Try catch all futures

* Fix test fail plots

* Fix d3 not showing and plotly mixing with matplotlib

---------




* Remove token from integration tests file

* Provide sgRNA_sequences to plot_nucleotide_quilt plots

* Passing sgRNA_sequences to plot

* Refactor check for determining when to use CRISPREssoPro or matplotlib for Batch plots

* Add max-height to Batch report samples

* Change testing branch

* Fix wrong check for large Batch plots

* Fix typo and move flexiguide to debug (#77)

* Change flexiguide output to debug level

* Fix typo in fastp merged output file name

* Adding id tags for d3 script enhancements

* pointing to test branch

* Add amplicon_name parameter to allele heatmap and line plots

* Add function to extract quantification window regions from include_idxs

* Scale the quantification window according to the coordinates of the sgRNA plot

* added c2pro check, added space in args.json

* Correct the quantification window indexes for multiple guides

* Fix name of nucleotide conversion plot when guides are not the same

* Fix jinja variables that aren't found

* Fix multiple guide errors where the wrong sgRNA sequence was associated in d3 plot

* Remove unneeded variable and extra whitespace

* Switch test branch to master

---------





* Add amplicon_name to plot functions

* Add sgRNA sequences to nucleotide quilt parameters in Aggregate

* Add custom_colors to Aggregate plot functions

* Update Aggregate and make_aggregate_report to have logger and tool

* Write command_used to Aggregate .json info file

* Point to new test branch and add Aggregate run

* Make the order of Aggregate runs explicit

* Sort all instances of crispresso2_folder_info in Aggregate

* Sort df_summary_quantification df in Aggregate

* Try sorting with a list of single column

* Update to correct test branch

* Move to master test branch

---------





* Squashed commit of the following:

commit 6ec98a05ee70f85b5aa0ac15ab6094b7f1f20d08
Author: mbowcut2 <[email protected]>
Date:   Tue Aug 13 16:44:39 2024 -0600

    dict key changes

commit 7cfd5acf06da4eb6f49453144ee1fed1e1488a7a
Author: mbowcut2 <[email protected]>
Date:   Thu Aug 8 15:30:31 2024 -0600

    added C2PRO install check back

commit bfb0003329ea61b5c79c7e1df8d9a73ec5a508db
Author: mbowcut2 <[email protected]>
Date:   Fri Aug 2 13:08:12 2024 -0600

    fixed key error conditionals

commit 84444e7480605206cb3efa4a0db675c55e717304
Author: mbowcut2 <[email protected]>
Date:   Fri Aug 2 09:22:44 2024 -0600

    use local jinja_paritals file

commit 71dd12786fec6c4aba0170a3bfd9022b06f5eede
Author: mbowcut2 <[email protected]>
Date:   Wed Jul 31 14:10:29 2024 -0600

    Squashed commit of the following:

    commit 5e3b30515c4bc437127e7fb21f53cb0bd511c4ca
    Author: Trevor Martin <[email protected]>
    Date:   Mon Jul 22 09:31:44 2024 -0600

        D3-Enhancements (#78)

        * Sam/try plots (#71)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Point test to try-plots

        * Fix d3 not showing and plotly mixing with matplotlib

        * Use logger for warnings and debug statements

        * Point tests back at master

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Sam/fix plots (#72)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Fix d3 not showing and plotly mixing with matplotlib

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Remove token from integration tests file

        * Provide sgRNA_sequences to plot_nucleotide_quilt plots

        * Passing sgRNA_sequences to plot

        * Refactor check for determining when to use CRISPREssoPro or matplotlib for Batch plots

        * Add max-height to Batch report samples

        * Change testing branch

        * Fix wrong check for large Batch plots

        * Fix typo and move flexiguide to debug (#77)

        * Change flexiguide output to debug level

        * Fix typo in fastp merged output file name

        * Adding id tags for d3 script enhancements

        * pointing to test branch

        * Add amplicon_name parameter to allele heatmap and line plots

        * Add function to extract quantification window regions from include_idxs

        * Scale the quantification window according to the coordinates of the sgRNA plot

        * added c2pro check, added space in args.json

        * Correct the quantification window indexes for multiple guides

        * Fix name of nucleotide conversion plot when guides are not the same

        * Fix jinja variables that aren't found

        * Fix multiple guide errors where the wrong sgRNA sequence was associated in d3 plot

        * Remove unneeded variable and extra whitespace

        * Switch test branch to master

        ---------

        Co-authored-by: Samuel Nichols <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

    commit 09e5d9720ad21e44fc7916d71bde3fd7a9dfa7ef
    Author: Kendell Clement <[email protected]>
    Date:   Thu Jul 18 14:31:54 2024 -0600

        Asymmetrical cut point (#457)

        * add cut_point_ind to plot_alleles_heatmap for asymmetrical plotting

        * Cole asymmetrical cut point (#453)

        * Pin versions of numpy and matplotlib in CI environment (#84) (#452)

        * Reduce duplication and implement cut_point_ind in plot_alleles_heatmap_hist

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

    commit 8d92972694ddff629dad844a6ad100459f69751d
    Author: Cole Lyman <[email protected]>
    Date:   Thu Jul 18 14:29:40 2024 -0600

        Cole/update args (#85) (#456)

    commit 44f692ecabf5e2eb96ee0cfd7bae62343da7810c
    Author: Cole Lyman <[email protected]>
    Date:   Mon Jul 15 16:17:29 2024 -0600

        Implement new pooled mixed-mode default behavior (#454)

        * changes for pooled mixed-mode default (#83)

        * changes for pooled mixed-mode default

        * deprecated old arg

        * added integration tests for mixed mode

        * fixed test target

        * updated test name

        * pinned numpy

        * Fix integration tests yml

        * pinning matplotlib

        * added print to CI tests

        * changed mixed mode info string

        * Remove pooled-mixed-mode-align-to-genome step from Github Actions

        * Update demultiplex_genome_wide parameter and help

        * Convert args.json to unix line endings

        * Add Pooled mixed mode demux run

        * Update the name of the argument in Pooled

        * Point integration tests back to master

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Revert change to pooled mixed mode info statement (#86)

        ---------

        Co-authored-by: mbowcut2 <[email protected]>

    commit 79b482b55a0e8edbc03ec22bd2714bade1e90323
    Author: Cole Lyman <[email protected]>
    Date:   Tue Jul 9 12:53:23 2024 -0600

        Pin versions of numpy and matplotlib in CI environment (#84) (#452)

    commit 80dc1bdd72d50f989717bfc5f8156bc3495c45f4
    Author: Kendell Clement <[email protected]>
    Date:   Thu May 30 14:07:42 2024 -0600

        Add padding to image

    commit 381755daf0939aaf2745df0a802c809633aff47d
    Author: Kendell Clement <[email protected]>
    Date:   Thu May 30 13:59:57 2024 -0600

        White background for schematic for dark mode

    commit d649db71e610bd8840fbb8d46fadb07789b67390
    Author: Cole Lyman <[email protected]>
    Date:   Fri May 24 12:45:53 2024 -0600

        Fix typo and move flexiguide to debug (#77) (#438)

        * Change flexiguide output to debug level

        * Fix typo in fastp merged output file name

    commit 71181f50ef2b39015523b1a71d9fd1bf0dce14eb
    Author: Cole Lyman <[email protected]>
    Date:   Mon May 13 13:34:00 2024 -0600

        Prefix the release Docker tag with a `v` (#434)

    commit d2c2be18a6bb64b0e742cc24c4665980a24324bc
    Author: Cole Lyman <[email protected]>
    Date:   Mon May 13 09:41:32 2024 -0600

        Showing sgRNA sequences on hover in CRISPRessoPro (#432)

        * Passing sgRNA sequences to regular and Batch D3 plots (#73)

        * Sam/try plots (#71)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Point test to try-plots

        * Fix d3 not showing and plotly mixing with matplotlib

        * Use logger for warnings and debug statements

        * Point tests back at master

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Sam/fix plots (#72)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Fix d3 not showing and plotly mixing with matplotlib

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Remove token from integration tests file

        * Provide sgRNA_sequences to plot_nucleotide_quilt plots

        * Passing sgRNA_sequences to plot

        * Refactor check for determining when to use CRISPREssoPro or matplotlib for Batch plots

        * Add max-height to Batch report samples

        * Change testing branch

        * Fix wrong check for large Batch plots

        * Update integration_tests.yml to point back at master

        ---------

        Co-authored-by: Samuel Nichols <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Push new releases to ECR (#74)

        * Create aws_ecr.yml (#1)

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * us-east-1

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Update aws_ecr.yml

        * Fix d3 sgRNA sequences (#76)

        * Pass correct sgRNA_sequences to d3 plot

        * Pass correct sgRNA sequence to prime editor plot for d3

        * Resize plotly (#75)

        * Sam/try plots (#71)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Point test to try-plots

        * Fix d3 not showing and plotly mixing with matplotlib

        * Use logger for warnings and debug statements

        * Point tests back at master

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Sam/fix plots (#72)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Fix d3 not showing and plotly mixing with matplotlib

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Remove token from integration tests file

        * Pass div id for plotly

        * Remove debug

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Trevor Martin <[email protected]>
        Co-authored-by: Samuel Nichols <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>

    commit 1c504274818b6b17fb60620d48fd92cb2e50566d
    Author: Cole Lyman <[email protected]>
    Date:   Thu May 9 14:16:25 2024 -0600

        Fix plots and improve plot error handling (#431)

        * Sam/try plots (#71)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Point test to try-plots

        * Fix d3 not showing and plotly mixing with matplotlib

        * Use logger for warnings and debug statements

        * Point tests back at master

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Sam/fix plots (#72)

        * Fix batch mode pandas warning. (#70)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Functional

        * Cole/fix status file name (#69)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

        * Try catch all futures

        * Fix test fail plots

        * Fix d3 not showing and plotly mixing with matplotlib

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Remove token from integration tests file

        ---------

        Co-authored-by: Samuel Nichols <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>

    commit acb2ea8e26dff4cd11f71301b344f81b1cec9040
    Author: Kendell Clement <[email protected]>
    Date:   Thu May 2 13:49:33 2024 -0600

        Use recent docker image for CircleCI testing that includes updated pandas

    commit 38fd76dbd7ce2087468f9f454b548777de959a68
    Author: Cole Lyman <[email protected]>
    Date:   Wed May 1 16:42:28 2024 -0600

        Cole/fix status file name (#69) (#430)

        * Update config file logging messages

        This removes printing the exception (which is essentially a duplicate),
        and adds a condition if no config file was provided. Also changes `json`
        to `config` so that it is more clear.

        * Fix divide by zero when no amplicons are present in Batch mode

        * Don't append file_prefix to status file name

        * Place status files in output directories

        * Update tests branch for file_prefix addition

        * Load D3 and plotly figures with pro with multiple amplicons

        * Update batch

        * Fix bug in CRISPRessoCompare with pointing to report datas with file_prefix

        Before this fix, when using a file_prefix the second run that was compared
        would not be displayed as a data in the first figure of the report.

        * Import CRISPRessoPro instead of importing the version

        When installed via conda, the version is not available

        * Remove `get_amplicon_output` unused function from CRISPRessoCompare

        Also remove unused argparse import

        * Implement `get_matching_allele_files` in CRISPRessoCompare and accompanying unit tests

        * Allow for matching of multiple guides in the same amplicon

        * Fix pandas FutureWarning

        * Change test branch back to master

        ---------

        Co-authored-by: Sam <[email protected]>

    commit 3ec22e5fd09e432c9997d30e5f9ee51a2cc00d7b
    Author: Kendell Clement <[email protected]>
    Date:   Wed May 1 13:08:11 2024 -0600

        Remove linked space in readme

    commit 340a4e16795a5e500411e11572ec267525985009
    Author: Cole Lyman <[email protected]>
    Date:   Wed May 1 13:07:14 2024 -0600

        Fix batch mode pandas warning. (#70) (#429)

        * refactor to call method on DataFrame, rather than Series.
        Removes warning.

        * Fix pandas future warning in CRISPRessoWGS

        ---------

        Co-authored-by: mbowcut2 <[email protected]>

    commit 1bc9e906f0ded81f80761d1ec375ee50a4f882a9
    Author: Cole Lyman <[email protected]>
    Date:   Fri Apr 26 16:26:27 2024 -0600

        Bump version to 2.3.1 and change default CRISPRessoPooled behavior to change in 2.3.2 (#428)

    commit 5638a1f6ffa973231f23422e9c757fa8cd4af7cc
    Author: Kendell Clement <[email protected]>
    Date:   Wed Apr 24 18:00:43 2024 -0600

        Spelling fixes

    commit d6011f29db16d8fc1c1e7222457b7f9a1f671de6
    Author: Cole Lyman <[email protected]>
    Date:   Wed Apr 24 09:33:53 2024 -0600

        Extract `jinja_partials` and fix CRISPRessoPooled fastp errors (#425)

        * Updated README (#64)

        * Updating README to fix argument, email, and formatting

        * removing superfluous files

        * Add link to CRISPRessoPro, move CRISPRessoPro section to end, and fix JSON formatting

        * Remove link to CRISPRessoPro

        * Replace Docker badge with link to tags

        * Add bullet points to Guardrails section and improve formatting

        * Fix typo and removed colons from guardrails

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Extract jinja_partials  (#65)

        * Extract jinja_partials code

        * Remove Plotly dependency from setup.py

        * Fix CRISPRessoPooled flash errors (#68)

        * Fix replacing flash intermediate files with fastp intermediate files

        This also moves where the files are added to `files_to_remove` up to
        near where they are created.

        * Update to run test branch with paired end Pooled test

        * Add pooled-paired-sim test to integration tests

        * Replace flash and trimmomatic with fastp and remove plotly from Github Actions environment

        * Change test branch back to master

        ---------

        Co-authored-by: Trevor Martin <[email protected]>

    commit f4858a30c43374f54058b3ad9c1e965e1ab7fb46
    Author: Cole Lyman <[email protected]>
    Date:   Tue Apr 23 17:00:28 2024 -0600

        Updated README (#64) (#424)

        * Updating README to fix argument, email, and formatting

        * removing superfluous files

        * Add link to CRISPRessoPro, move CRISPRessoPro section to end, and fix JSON formatting

        * Remove link to CRISPRessoPro

        * Replace Docker badge with link to tags

        * Add bullet points to Guardrails section and improve formatting

        * Fix typo and removed colons from guardrails

        ---------

        Co-authored-by: Trevor Martin <[email protected]>

    commit c3dbff0fccd44b0b1a9c246dd2aa629ddc515787
    Author: Kendell Clement <[email protected]>
    Date:   Mon Apr 22 11:24:59 2024 -0600

        Update CRISPRessoPooledCORE.py (#423)

        Fix bug in error reporting if duplicate names are present

    commit 20903c14877e5166b1b8a7b50b8fcab450ea3ca6
    Author: Cole Lyman <[email protected]>
    Date:   Thu Apr 18 16:55:39 2024 -0600

        Remove extra imports from CRISPRessoCore (#67) (#422)

    commit 4aae57e5be475cd717792265bee36a71a99425de
    Author: Cole Lyman <[email protected]>
    Date:   Thu Apr 18 10:00:19 2024 -0600

        Cole/refactor jinja undefined (#66) (#421)

        * Replace Jinja2 PackageLoader with FileSystemLoader

        The PackageLoader doesn't work with a fairly recent version of Jinja2 (3.0.1)
        and Python 3.9. Replacing with FileSystemLoader work with the older version and
        the latest version.

        * Fix undefined variable `amplicon_name` in report template

        * Refactor logging Jinja2 undefined variable warnings

        * Revert plot_11a update

        * Update intedration test branch

        * Update jinja to warn on undefined but not fail. Fix all undefined warnings

        * Fix github integration tests ref

        * One more undefined variable

        ---------

        Co-authored-by: Samuel Nichols <[email protected]>

    commit 768c3c05bf1786a2a32e135b6e145cd6503c3db1
    Author: Cole Lyman <[email protected]>
    Date:   Tue Apr 9 17:30:10 2024 -0600

        Fix Jinja2 undefined variables (#63) (#417)

        * Replace Jinja2 PackageLoader with FileSystemLoader

        The PackageLoader doesn't work with a fairly recent version of Jinja2 (3.0.1)
        and Python 3.9. Replacing with FileSystemLoader work with the older version and
        the latest version.

        * Fix undefined variable `amplicon_name` in report template

        * Revert plot_11a update

        * Update intedration test branch

        * Update branch for integration tests

    commit 7e18f08cc1ac5f247a0fd1bbb394ccd9b0a07c2e
    Author: Han Dai <[email protected]>
    Date:   Fri Apr 5 18:36:41 2024 -0400

        fix: change all U+00A0 to U+0020 (#400)

    commit 235dc29c0cd0fcca2e999148d4660acf00b07221
    Author: Cole Lyman <[email protected]>
    Date:   Fri Apr 5 16:36:16 2024 -0600

        Fastp, args as data, guardrails, and PE fix (#415)

        * Change CRISPResso_status.txt format to JSON (#46)

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * add json read for status file

        * changed Formatter to json format

        * fixed json access variable name: message

        * changed  perentage_complete to numeric

        * changed status file to .json

        * Create integration_tests.yml

        * Simplify name

        * CRISPRESSO2_DIR environment variable

        * Up one dir

        * ls workspace

        * Install CRISPResso and ydiff

        * Clone repo instead of checkout

        * submodule

        * ls

        * CRISPResso2_copy

        * ls

        * Update env

        * Simplify

        * Pull from githubactions branch

        * Pull githubactions repo

        * Checkout githubactions

        * Run tests individually

        * Pin plotly version

        * Run all tests even if one fails

        * Test on another branch

        * Switch branch with token

        * Update integration_tests.yml

        * New makefile commands

        * changed file to .json

        * changed status to json file

        * Make JSON human readable by adding new lines

        * GitHub actions integration tests (#48)

        * GitHub actions clean (#40)

        * Create pytest.yml

        * Create pylint.yml

        * Create .pylintrc

        * Create test_env.yml

        * Full path

        * Remove conda install

        * Replace path

        * Pytest tests

        * pip -e

        * Create integration_tests.yml

        * Simplify name

        * CRISPRESSO2_DIR environment variable

        * Up one dir

        * ls workspace

        * Install CRISPResso and ydiff

        * Clone repo instead of checkout

        * submodule

        * ls

        * CRISPResso2_copy

        * ls

        * Update env

        * Simplify

        * Pull from githubactions branch

        * Pull githubactions repo

        * Checkout githubactions

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Run tests individually

        * Pin plotly version

        * Run all tests even if one fails

        * Test on another branch

        * Switch branch with token

        * Update integration_tests.yml

        * Introduce pandas sorting in CRISPRessoCompare (#47)

        * New makefile commands

        * Fix interleaved fastq input in CRISPRessoPooled and suppress CRISPRessoWGS params (#42)

        * Extract out split_interleaved_fastq function to CRISPRessoShared

        * Implement splitting interleaved fastq files in CRISPRessoPooled

        * Suppress split_interleaved_input from CRISPRessoWGS parameters

        * Suppress other parameters in CRISPRessoWGS

        * Move where interleaved fastq files are split to be trimmed properly

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * On push no branches

        * On push no branches

        * All in one file

        * Fix yml errors

        * Rename jobs

        * Remove old workflow files

        * Remove paths

        * Run jobs in parallel

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Move read filtering to after merging in CRISPResso (#39)

        * Move read filtering to after merging

        This is in an effort to be consistent with the behavior and results of
        CRISPRessoPooled.

        * Properly assign the correct file names for read filtering

        * Add space around operators

        * GitHub actions on pr (#51)

        * Run integration tests on pull_request

        * Run pytest on pull_request

        * Run pylint on pull_request

        * Run tests on PR only when opening PR (#53)

        * Update reports (#52)

        * Update report changes

        * Switch branch of integration test repo

        * Remove extraneous `crispresso_data_path`

        * Point integration tests back to master

        * point to test branch

        * pointed CI config to testing branch

        * Update integration_tests.yml

        point to master

        ---------

        Co-authored-by: Cole Lyman <[email protected]>
        Co-authored-by: Samuel Nichols <[email protected]>

        * Trevor/fastp integration (#50)

        * Update check_program to check versions and create check_fastq function

        * Update fastq arg, implement fastp in get_most_frequent_reads

        * Bump version to 2.3.0

        * Deprecate Flash and Trimmomatic parameters, and update fastp params

        * Update guess_amplicons and guess_guides to remove max_paired_end_reads_overlap

        * Implement trimming of single end reads

        * Merge (and trim) reads in CRISPRessoCORE with fastp

        * Modify error handling to account for fastp errors

        * Replace flash and trimmomatic with fastp in Docker dependencies

        * Update LICENSE.txt with fastp info

        * Remove min and max amplicon length (no longer needed)

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Implement trimming with fastp in CRISPRessoPooled

        * Implemend merging (and trimming) with fastp in CRISPRessoPooled

        * Fixed minor fastp errors

        * Move read filtering to after merging in CRISPResso (#39)

        * Move read filtering to after merging

        This is in an effort to be consistent with the behavior and results of
        CRISPRessoPooled.

        * Properly assign the correct file names for read filtering

        * Add space around operators

        * GitHub actions on pr (#51)

        * Run integration tests on pull_request

        * Run pytest on pull_request

        * Run pylint on pull_request

        * Run tests on PR only when opening PR (#53)

        * Update reports (#52)

        * Update report changes

        * Switch branch of integration test repo

        * Remove extraneous `crispresso_data_path`

        * Point integration tests back to master

        * Update where the test point to

        * Fix 'Prime-edited' key not found (#32)

        * Move 'Prime-edited' amplicon name check

        By moving this, it will check if there is an amplicon named
        'Prime-edited' (which is a reserved name) even if the
        `prime_editing_pegRNA_extension_seq` parameter is empty.

        * Only search for scaffold integration when pegRNA extension seq is provided

        * Remove spaces at the end of lines

        * Docker size (#49)

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * GitHub actions integration tests (#48)

        * GitHub actions clean (#40)

        * Create pytest.yml

        * Create pylint.yml

        * Create .pylintrc

        * Create test_env.yml

        * Full path

        * Remove conda install

        * Replace path

        * Pytest tests

        * pip -e

        * Create integration_tests.yml

        * Simplify name

        * CRISPRESSO2_DIR environment variable

        * Up one dir

        * ls workspace

        * Install CRISPResso and ydiff

        * Clone repo instead of checkout

        * submodule

        * ls

        * CRISPResso2_copy

        * ls

        * Update env

        * Simplify

        * Pull from githubactions branch

        * Pull githubactions repo

        * Checkout githubactions

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Run tests individually

        * Pin plotly version

        * Run all tests even if one fails

        * Test on another branch

        * Switch branch with token

        * Update integration_tests.yml

        * Introduce pandas sorting in CRISPRessoCompare (#47)

        * New makefile commands

        * Fix interleaved fastq input in CRISPRessoPooled and suppress CRISPRessoWGS params (#42)

        * Extract out split_interleaved_fastq function to CRISPRessoShared

        * Implement splitting interleaved fastq files in CRISPRessoPooled

        * Suppress split_interleaved_input from CRISPRessoWGS parameters

        * Suppress other parameters in CRISPRessoWGS

        * Move where interleaved fastq files are split to be trimmed properly

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * On push no branches

        * On push no branches

        * All in one file

        * Fix yml errors

        * Rename jobs

        * Remove old workflow files

        * Remove paths

        * Run jobs in parallel

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * 3.4->2.08

        * Put ttf-mscorefonts-installer back above apt-get clean

        * restore slash, replace fastp with trimmomatic and flash, add autoremove step

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * initial readme modifications

        * Updated readme to remove deprecated commands, updated help text to reflect new version and fastp

        * Pointing test branch back at master

        ---------

        Co-authored-by: Cole Lyman <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Samuel Nichols <[email protected]>

        * Guardrails clean history (#34)

        * Include guardrail functions

        * Add CRISPRessoReports subtree

        * Refactor to use CRISPRessoReports module

        * Include guardrail functions

        * Functional guardrails, needs reports update

        * Add guardrail partial

        * fix guardrials partial

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * GitHub actions integration tests (#48)

        * GitHub actions clean (#40)

        * Create pytest.yml

        * Create pylint.yml

        * Create .pylintrc

        * Create test_env.yml

        * Full path

        * Remove conda install

        * Replace path

        * Pytest tests

        * pip -e

        * Create integration_tests.yml

        * Simplify name

        * CRISPRESSO2_DIR environment variable

        * Up one dir

        * ls workspace

        * Install CRISPResso and ydiff

        * Clone repo instead of checkout

        * submodule

        * ls

        * CRISPResso2_copy

        * ls

        * Update env

        * Simplify

        * Pull from githubactions branch

        * Pull githubactions repo

        * Checkout githubactions

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * Run tests individually

        * Pin plotly version

        * Run all tests even if one fails

        * Test on another branch

        * Switch branch with token

        * Update integration_tests.yml

        * Introduce pandas sorting in CRISPRessoCompare (#47)

        * New makefile commands

        * Fix interleaved fastq input in CRISPRessoPooled and suppress CRISPRessoWGS params (#42)

        * Extract out split_interleaved_fastq function to CRISPRessoShared

        * Implement splitting interleaved fastq files in CRISPRessoPooled

        * Suppress split_interleaved_input from CRISPRessoWGS parameters

        * Suppress other parameters in CRISPRessoWGS

        * Move where interleaved fastq files are split to be trimmed properly

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * On push no branches

        * On push no branches

        * All in one file

        * Fix yml errors

        * Rename jobs

        * Remove old workflow files

        * Remove paths

        * Run jobs in parallel

        ---------

        Co-authored-by: mbowcut2 <[email protected]>
        Co-authored-by: Cole Lyman <[email protected]>

        * Update C cythonized files

        * Add exact numbers to guardrails printouts

        * Remove extraneous whitespace from CRISPRessoCOREResources.pyx

        * Fix calculation of `total_mods` from being negative

        The issue was that `all_deletion_coordinates` just tells you how many deletions
        were present, but not how long the deletion is.

        * Changes to message

        * Remove old tag

        * Point tests at guardrails

        * Restore C2 pro check

        * Save message with guardrail name

        * Point tests repo at master

        ---------

        Co-authored-by: Cole Lyman <[email protected]>
        Co-authored-by: mbowcut2 <[email protected]>

        * Fix case sensitivity in Prime Editing mode (#54)

        * Move read filtering to after merging in CRISPResso (#39)

        * Move read filtering to after merging

        This is in an effort to be consistent with the behavior and results of
        CRISPRessoPooled.

        * Properly assign the correct file names for read filtering

        * Add space around operators

        * GitHub actions on pr (#51)

        * Run integration tests on pull_request

        * Run pytest on pull_request

        * Run pylint on pull_request

        * Run tests on PR only when opening PR (#53)

        * Update reports (#52)

        * Update report changes

        * Switch branch of integration test repo

        * Remove extraneous `crispresso_data_path`

        * Point integration tests back to master

        * Make all amplicons in amplicon_seq_arr uppercase

        This fixes https://github.com/pinellolab/CRISPResso2/issues/396

        * Allow RNA values to be provided for prime_editing_pegRNA_scaffold_seq

        * Fix 'Prime-edited' key not found (#32)

        * Move 'Prime-edited' amplicon name check

        By moving this, it will check if there is an amplicon named
        'Prime-edited' (which is a reserved name) even if the
        `prime_editing_pegRNA_extension_seq` parameter is empty.

        * Only search for scaffold integration when pegRNA extension seq is provided

        * Remove spaces at the end of lines

        * Docker size (#49)

        * Bug Fix - 367 (#35)

        * - Fixed references to ref_names_for_pe

        * removed extra tabs

        * trying to match empty line, no tabs

        * - changed references to ref_names[0]

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        ---------

        Co-authored-by: Cole Lyman <[email protected]>

        * GitHub actions integration tests (#48)

        * GitHub actions clean (#40)

        * Create pytest.yml

        * Create pylint.yml

        * Create .pylintrc

        * Create test_env.yml

        * Full path

        * Remove conda install

        * Replace path

        * Pytest tests

        * pip -e

        * Create integration_tests.yml

        * Simplify name

        * CRISPRESSO2_DIR environment variable

        * Up one dir

        * ls workspace

        * Install CRISPResso and ydiff

        * Clone repo instead of checkout

        * submodule

        * ls

        * CRISPResso2_copy

        * ls

        * Update env

        * Simplify

        * Pull from githubactions branch

        * Pull githubactions repo

        * Checkout githubactions

        * Mckay/pd warnings (#45)

        * refactor errors='ignore' to try except

        * refactored integer slice to iloc[]

        * moved to_numeric try except to function

        * Refactor to_numeric_ignore_errors to to_numeric_ignore_columns

        This change is slightly cleaner because it addresses the root issue that some
        columns are strings (and can therefore not be converted to numeric types). Now
        if an error does occur when converting the dfs to numeric types it won't be
        swallowed up.

        * Add documentation to to_numeric_ignore_columns

        ----…

Co-authored-by: mbowcut2 <[email protected]>
Co-authored-by: Trevor Martin <[email protected]>
Co-authored-by: Samuel Nichols <[email protected]>
  • Loading branch information
4 people authored Aug 23, 2024
1 parent 6a732b3 commit 5d1f8b5
Show file tree
Hide file tree
Showing 12 changed files with 124 additions and 162 deletions.
2 changes: 2 additions & 0 deletions CRISPResso2/CRISPRessoReports/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.html text eol=lf
*.md text eol=lf
93 changes: 52 additions & 41 deletions CRISPResso2/CRISPRessoReports/CRISPRessoReport.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,30 @@
from CRISPResso2 import CRISPRessoShared

if CRISPRessoShared.is_C2Pro_installed():
from CRISPRessoPro import __version__ as CRISPRessoProVersion
import CRISPRessoPro
C2PRO_INSTALLED = True
else:
C2PRO_INSTALLED = False


def get_jinja_loader(root, logger):
UndefinedLogger = make_logging_undefined(logger=logger)
"""
Get the Jinja2 environment for rendering templates.
"""
undefined_logger = make_logging_undefined(logger=logger)
if C2PRO_INSTALLED:
return Environment(
loader=ChoiceLoader([
FileSystemLoader(os.path.join(root, 'CRISPRessoReports', 'templates')),
FileSystemLoader(os.path.join(os.path.dirname(CRISPRessoPro.__file__), 'templates')),
]),
undefined=UndefinedLogger,
)
else:
return Environment(
loader=FileSystemLoader(os.path.join(root, 'CRISPRessoReports', 'templates')),
undefined=UndefinedLogger,
undefined=undefined_logger,
)
return Environment(
loader=FileSystemLoader(os.path.join(root, 'CRISPRessoReports', 'templates')),
undefined=undefined_logger,
)


def render_template(template_name, jinja2_env, **data):
Expand Down Expand Up @@ -67,20 +70,20 @@ def custom_partial_render(partial_template_name, **partial_data):
)


def make_report_from_folder(crispresso_report_file, crispresso_folder, _ROOT):
def make_report_from_folder(crispresso_report_file, crispresso_folder, _root):
"""
Makes an html report for a crispresso run
Parameters:
crispresso_report_file (string): name of the html file to create
crispresso_folder (string): path to the crispresso output
_ROOT (string): path to crispresso executables (for templates)
_root (string): path to crispresso executables (for templates)
Returns:
Nothin
"""
run_data = CRISPRessoShared.load_crispresso_info(crispresso_folder)
make_report(run_data, crispresso_report_file, crispresso_folder, _ROOT)
make_report(run_data, crispresso_report_file, crispresso_folder, _root)


def add_fig_if_exists(fig, fig_name, fig_root, fig_title, fig_caption, fig_data,
Expand All @@ -106,15 +109,15 @@ def add_fig_if_exists(fig, fig_name, fig_root, fig_title, fig_caption, fig_data,
if os.path.exists(os.path.join(crispresso_folder, data_file)):
amplicon_figures['datas'][fig_name].append((data_caption, data_file))
if os.path.exists(htmlfullpath):
with open(htmlfullpath, encoding="utf-8") as html:
with open(htmlfullpath, encoding='utf-8') as html:
html_string = "<div align='center'>"
html_string += html.read()
html_string += "</div>"
amplicon_figures['htmls'][fig_name] = html_string
elif os.path.exists(jsonfullpath) and C2PRO_INSTALLED:
root_name = fig_root.replace('.', '_').replace('-', '_')
d3_nuc_quilt_names.append(f"nuc_quilt_{root_name}")
with open(jsonfullpath) as fig_json_fh:
with open(jsonfullpath, encoding='utf-8') as fig_json_fh:
amplicon_figures['htmls'][fig_name] = f"""
<div class="d-flex justify-content-between" style="max-height: 80vh; overflow-y: auto;" id="{f"nuc_quilt_{root_name}"}"></div>
<script type="text/javascript">const {f"nuc_quilt_{root_name}"} = {fig_json_fh.read().strip()}</script>
Expand Down Expand Up @@ -177,10 +180,10 @@ def assemble_figs(run_data, crispresso_folder):
return data


def make_report(run_data, crispresso_report_file, crispresso_folder, _ROOT, logger):
# dicts for each amplicon fig_names[amp_name] = [list of fig names]
# fig_locs[amp_name][fig_name] = figure location
# print('crispresso_report file: ' + crispresso_report_file + ' crispresso_folder : ' + crispresso_folder + ' root: ' + _ROOT)
def make_report(run_data, crispresso_report_file, crispresso_folder, _root, logger):
"""
Writes an HMTL report for a CRISPResso run
"""
data = assemble_figs(run_data, crispresso_folder)

report_display_name = ""
Expand All @@ -203,19 +206,18 @@ def make_report(run_data, crispresso_report_file, crispresso_folder, _ROOT, logg
'nuc_quilt_names': data['nuc_quilt_names'],
}

j2_env = get_jinja_loader(_ROOT, logger)

# dest_dir = os.path.dirname(crispresso_report_file)
# shutil.copy2(os.path.join(_ROOT,'templates','CRISPResso_justcup.png'),dest_dir)
# shutil.copy2(os.path.join(_ROOT,'templates','favicon.ico'),dest_dir)
j2_env = get_jinja_loader(_root, logger)

with open(crispresso_report_file, 'w', encoding="utf-8") as outfile:
outfile.write(render_template(
'report.html', j2_env, report_data=report_data, C2PRO_INSTALLED=C2PRO_INSTALLED,
))


def make_batch_report_from_folder(crispressoBatch_report_file, crispresso2_info, batch_folder, _ROOT, logger):
def make_batch_report_from_folder(crispressoBatch_report_file, crispresso2_info, batch_folder, _root, logger):
"""
Makes a report for a CRIPSRessoBatch run
"""
batch_names = crispresso2_info['results']['completed_batch_arr']
failed_runs = crispresso2_info['results']['failed_batch_arr']
failed_runs_desc = crispresso2_info['results']['failed_batch_arr_desc']
Expand Down Expand Up @@ -305,7 +307,7 @@ def make_batch_report_from_folder(crispressoBatch_report_file, crispresso2_info,
summary_plot_htmls = {}
for plot_name in window_nuc_pct_quilts + nuc_pct_quilts:
if os.path.exists(os.path.join(batch_folder, f'{plot_name}.json')):
with open(os.path.join(batch_folder, f'{plot_name}.json')) as window_nuc_pct_json_fh:
with open(os.path.join(batch_folder, f'{plot_name}.json'), encoding='utf-8') as window_nuc_pct_json_fh:
summary_plot_htmls[plot_name] = f"""
<div class="d-flex justify-content-between" style="max-height: 80vh; overflow-y: auto;" id="{plot_name}"></div>
<script type="text/javascript">const {plot_name} = {window_nuc_pct_json_fh.read().strip()}</script>
Expand Down Expand Up @@ -346,7 +348,7 @@ def make_batch_report_from_folder(crispressoBatch_report_file, crispresso2_info,
sub_html_files,
crispressoBatch_report_file,
batch_folder,
_ROOT,
_root,
output_title,
'batch',
logger,
Expand All @@ -366,41 +368,50 @@ def make_batch_report_from_folder(crispressoBatch_report_file, crispresso2_info,
)


def make_pooled_report_from_folder(crispresso_report_file, crispresso2_info, folder, _ROOT, logger):
def make_pooled_report_from_folder(crispresso_report_file, crispresso2_info, folder, _root, logger):
"""
Makes a report for a CRISPRessoPooled run
"""
names_arr = crispresso2_info['results']['good_region_names']
output_title = 'CRISPResso Pooled Output'
if crispresso2_info['running_info']['args'].name != '':
output_title += f"<br/>{crispresso2_info['running_info']['args'].name}"
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _ROOT, 'pooled', logger)
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _root, 'pooled', logger)


def make_compare_report_from_folder(crispresso_report_file, crispresso2_info, folder, _ROOT, logger):
def make_compare_report_from_folder(crispresso_report_file, crispresso2_info, folder, _root, logger):
"""
Makes a report for a CRISPRessoCompare run
"""
names_arr = []
output_title = 'CRISPResso Compare Output'
if crispresso2_info['running_info']['args'].name != '':
output_title += "<br/>{crispresso2_info['running_info']['args'].name}"
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _ROOT, 'compare', logger)
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _root, 'compare', logger)


def make_meta_report_from_folder(crispresso_report_file, crispresso2_info, folder, _ROOT, logger):
def make_meta_report_from_folder(crispresso_report_file, crispresso2_info, folder, _root, logger):
names_arr = crispresso2_info['meta_names_arr']
input_names = crispresso2_info['meta_input_names']
output_title = 'CRISPresso Meta Output'
if crispresso2_info['running_info']['args'].name != '':
output_title += "<br/>{crispresso2_info['running_info']['args'].name}"
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _ROOT, 'meta', logger,
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _root, 'meta', logger,
display_names=input_names)


def make_wgs_report_from_folder(crispresso_report_file, crispresso2_info, folder, _ROOT, logger):
def make_wgs_report_from_folder(crispresso_report_file, crispresso2_info, folder, _root, logger):
"""
Makes a report for a CRISPRessoWGS run
"""
names_arr = crispresso2_info['results']['good_region_names']
output_title = 'CRISPResso WGS Output'
if crispresso2_info['running_info']['args'].name != '':
output_title += "<br/>{crispresso2_info['running_info']['args'].name}"
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _ROOT, 'wgs', logger)
make_multi_report_from_folder(crispresso2_info, names_arr, output_title, crispresso_report_file, folder, _root, 'wgs', logger)


def make_multi_report_from_folder(crispresso2_info, names_arr, report_name, crispresso_report_file, folder, _ROOT, crispresso_tool, logger,
def make_multi_report_from_folder(crispresso2_info, names_arr, report_name, crispresso_report_file, folder, _root, crispresso_tool, logger,
display_names=None):
"""
Prepares information to make a report of multiple CRISPResso runs - like CRISPRessoWGS or CRISPRessoPooled
Expand All @@ -411,7 +422,7 @@ def make_multi_report_from_folder(crispresso2_info, names_arr, report_name, cris
report_name (string): text to be shown at top of report
crispresso_report_file (string): path to write report to
folder (string): folder containing crispresso runs
_ROOT (string): location of crispresso assets (images, templates, etc)
_root (string): location of crispresso assets (images, templates, etc)
logger (logging.Logger): logger to log messages to, mainly for undefined variables in Jinja2 templates
display_names (dict): report_name->display_name; Titles to be shown for crispresso runs
(if different from names_arr, e.g. if display_names have spaces or bad chars, they won't be the same as names_arr)
Expand Down Expand Up @@ -483,7 +494,7 @@ def make_multi_report_from_folder(crispresso2_info, names_arr, report_name, cris
sub_html_files,
crispresso_report_file,
folder,
_ROOT,
_root,
report_name,
crispresso_tool,
logger,
Expand All @@ -503,7 +514,7 @@ def make_multi_report(
sub_html_files,
crispresso_multi_report_file,
crispresso_folder,
_ROOT,
_root,
report_name,
crispresso_tool,
logger,
Expand All @@ -525,7 +536,7 @@ def make_multi_report(
crispresso_multi_report_file (string): path of file to write to
report_name (string): description of report type to be shown at top of report
crispresso_folder (string): absolute path to the crispresso output
_ROOT (string): absolute path to the crispresso executable
_root (string): absolute path to the crispresso executable
summary_plots (dict): a dict with the following keys:
names (list): list of plot names - keys for following dicts
titles (dict): dict of plot_name->plot_title
Expand All @@ -547,7 +558,7 @@ def fill_default(dictionary, key, default_type=list):
if key not in dictionary:
dictionary[key] = default_type()

j2_env = get_jinja_loader(_ROOT, logger)
j2_env = get_jinja_loader(_root, logger)

j2_env.filters['dirname'] = dirname
if crispresso_tool == 'batch':
Expand Down Expand Up @@ -643,7 +654,7 @@ def make_aggregate_report(
report_name,
crispresso_report_file,
crispresso_report_folder,
_ROOT,
_root,
folder_arr,
crispresso_html_reports,
logger,
Expand All @@ -658,7 +669,7 @@ def make_aggregate_report(
report_name (string): text to be shown at top of report
crispresso_report_file (string): path to write report to
crispresso_report_folder (string): path containing aggregated plots, etc.
_ROOT (string): location of crispresso assets (images, templates, etc)
_root (string): location of crispresso assets (images, templates, etc)
folder_arr (arr of strings): paths to the aggregated crispresso folders
crispresso_html_reports (dict): folder->html_path; Paths to the aggregated crispresso run html reports
logger (logging.Logger): logger to log messages
Expand Down Expand Up @@ -778,7 +789,7 @@ def make_aggregate_report(
sub_html_files,
crispresso_report_file,
crispresso_report_folder,
_ROOT,
_root,
report_name,
'aggregate',
logger,
Expand Down
4 changes: 2 additions & 2 deletions CRISPResso2/CRISPRessoReports/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Take care when committing into these files as not to mix unrelated git histories

## How do I work with this repo?

Step 1 only needs to be done once per cloned repo, the other steps will need to be dne more frequently.
Step 1 only needs to be done once per cloned repo, the other steps will need to be done more frequently.

1. Add the remote to this repo to the "parent" repo (i.e. `CRISPResso2` or `C2Web`). **You should only have to do this once.**

Expand Down Expand Up @@ -131,7 +131,7 @@ If a feature that you are working on requires changes to CRISPRessoReports, you
1. Create a feature branch in the parent repo, based on the parent repo master.

``` shell
git checkout -b <feature-branch>
git checkout -b <feature-branch> origin/master
```

2. Create a feature branch on `CRISPRessoReports`.
Expand Down
6 changes: 6 additions & 0 deletions CRISPResso2/CRISPRessoReports/jinja_partials.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@


def render_partial(template_name, renderer=None, markup=True, **data):
"""
Renders a partial template and returns the result. If `markup` is True, the result is wrapped in a `Markup` object.
"""
if renderer is None:
if flask is None:
raise PartialsException('No renderer specified')
Expand All @@ -43,4 +46,7 @@ def render_partial(template_name, renderer=None, markup=True, **data):


def generate_render_partial(renderer, markup=True):
"""
Returns a partial function that renders a template using the specified renderer.
"""
return partial(render_partial, renderer=renderer, markup=markup)
Loading

0 comments on commit 5d1f8b5

Please sign in to comment.