diff --git a/.github/workflows/Manual_Deployment_to_NIDAP.yml b/.github/workflows/Manual_Deployment_to_NIDAP.yml new file mode 100644 index 0000000..2426e58 --- /dev/null +++ b/.github/workflows/Manual_Deployment_to_NIDAP.yml @@ -0,0 +1,105 @@ +name: Manual Deployment to NIDAP +run-name: Manual Deployment to NIDAP by ${{ github.actor }} + +on: + workflow_dispatch: + inputs: + + image_to_use: + required: true + default: "" + type: string + + package_to_deploy: + required: true + type: string + + artifact_rid: + required: true + default: "" + type: string + + token_to_use: + required: true + type: string + + +jobs: + Adding_documentation_files_and_publish_page: + runs-on: ubuntu-latest + container: + image: ${{ inputs.image_to_use }} + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - run: echo "Checking in ${{ inputs.image_to_use }}" + - uses: actions/checkout@v3 + with: + token: ${{secrets.GITHUB_TOKEN}} + + - name: Continuous Deployment to NIDAP + id: nidap-cd + run: | + export current_wd="/__w/${GITHUB_REPOSITORY#*/}/${GITHUB_REPOSITORY#*/}" + cd $current_wd + + export MY_GIT_TOKEN=${{ secrets.GITHUB_TOKEN }} + export MY_GIT_USERNAME=${{ github.actor }} + export MY_GIT_EMAIL=${{ github.event.pusher.email }} + + git config --global user.name "$MY_GIT_USERNAME" + git config --global user.email "$MY_GIT_EMAIL" + git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/" + git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/" + git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:" + + git config --global --add safe.directory "$current_wd" + + git clone https://github.com/${GITHUB_REPOSITORY}.git + + cd ${GITHUB_REPOSITORY#*/} + + BRANCH_NAME="Conda_Package" + + git checkout $BRANCH_NAME + + echo "########## Git setup complete, moving to deployment... ##########" + + conda install curl + + current_pkg="${{ inputs.package_to_deploy }}" + + echo "Package to Upload: $current_pkg" + + TOKEN="${{ inputs.token_to_use }}" + PACKAGE="$current_pkg" + PLATFORM="linux-64" # replace with the package platform (e.g. noarch, linux-64, osx-64) + response=$(curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@$PACKAGE" \ + -XPUT "https://nidap.nih.gov/artifacts/api/repositories/${{ inputs.artifact_rid }}/contents/release/conda/$PLATFORM/$PACKAGE" \ + 2>&1) + + + echo "#########################################################" + + current_datetime="$(date +"%Y-%m-%d %H:%M:%S")" + + # Check if the response contains an error message + if echo "$response" | grep -q "errorCode"; then + status=$(echo "$response" | grep -o '"errorName":"[^"]*' | awk -F'"' '{print $4}') + echo "Error message: $status" + echo "
Deployment Time: $current_datetime; Deployment Status: $status" >> README.md + else + status="Success" + echo "Update Success!" + echo "Package ${{ env.current_pkg }} is now on NIDAP." + echo "
Deployment Time: $current_datetime; Deployment Status: Success" >> README.md + fi + + git commit -a -m "Deployment Performed on $current_datetime with Status: $status." + + git push -f origin $BRANCH_NAME diff --git a/.github/workflows/gitflow-R-action.yml b/.github/workflows/gitflow-R-action.yml index f281b83..bb870d6 100644 --- a/.github/workflows/gitflow-R-action.yml +++ b/.github/workflows/gitflow-R-action.yml @@ -3,7 +3,7 @@ run-name: ${{ github.actor }} now ${{ github.event_name }} to ${{ github.ref_nam on: push: - branches: ['*', '!dev'] + branches: ['*', '!dev', '!main', '!release_dev', '!Conda_Package', '!github_page'] pull_request: types: ['opened', 'closed'] @@ -11,6 +11,13 @@ on: jobs: Activating_Parser: - uses: fnlcr-bids-sdsi/gitflow-R/.github/workflows/parser.yml@SCWorkflow + uses: fnlcr-bids-sdsi/gitflow-R/.github/workflows/parser.yml@master with: - image_to_use: "ghcr.io/nidap-community/single-cell-rna-r4:v1.0" + image_to_use: ghcr.io/nidap-community/single-cell-rna-r4:latest + package_name: "r-scworkflow" + r_version: "4.1.3" + artifact_rid_production: "ri.artifacts.main.repository.f36ea39e-b396-46cd-a04a-3c63250273f5" + artifact_rid_development: "ri.stemma.main.repository.2172e505-c98f-43d4-881a-47e170aadbe1" + secrets: + NIDAP_TOKEN_PRODUCTION: ${{ secrets.NIDAP_TOKEN_PRODUCTION }} + NIDAP_TOKEN_DEVELOPMENT: ${{ secrets.NIDAP_TOKEN_DEVELOPMENT }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1fe1d48 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1477 @@ +# CHANGELOG + + + +## v1.0.2 (2024-02-01) + +### Fix + +* fix: update package name in action file ([`00c816c`](https://github.com/NIDAP-Community/SCWorkflow/commit/00c816ce96752842efd294432ef0cea07b98e908)) + +### Unknown + +* Merge pull request #53 from NIDAP-Community/dev + +fix: update package name in action file ([`1ea1b0c`](https://github.com/NIDAP-Community/SCWorkflow/commit/1ea1b0ca03efe68d1714f6590645cb0232485e04)) + +* Merge pull request #52 from NIDAP-Community/CDupdate + +fix: update package name in action file ([`3956593`](https://github.com/NIDAP-Community/SCWorkflow/commit/39565932049fc16f4bb6cf9efe8757b9cc978d1d)) + + +## v1.0.1 (2024-02-01) + +### Build + +* build: update conda recipe and action file ([`32f800c`](https://github.com/NIDAP-Community/SCWorkflow/commit/32f800c62dac1f81e683863efcc5609400e37bed)) + +### Documentation + +* docs(version): Automatic development release ([`0548007`](https://github.com/NIDAP-Community/SCWorkflow/commit/05480075fa38301c5dae385ffa3b2ca1bb5d6520)) + +* docs: Adding changelog ([`34b1e0b`](https://github.com/NIDAP-Community/SCWorkflow/commit/34b1e0b120bbda080266d54cb12d7c7b10fec168)) + +* docs(version): Automatic development release ([`184b4f9`](https://github.com/NIDAP-Community/SCWorkflow/commit/184b4f9d2bd6ee833c18670d4c9c405ba52c5bac)) + +* docs(version): Automatic development release ([`b8b41d3`](https://github.com/NIDAP-Community/SCWorkflow/commit/b8b41d3d1042249b673c63742b2679136d5cd1ce)) + +* docs(version): Automatic development release ([`f420a3b`](https://github.com/NIDAP-Community/SCWorkflow/commit/f420a3bb6477abda8fd2376d5275e0451b7a0846)) + +* docs(version): Automatic development release ([`8b5cc98`](https://github.com/NIDAP-Community/SCWorkflow/commit/8b5cc98cf37cd3f5e43282b95261054b7a913470)) + +### Feature + +* feat: Update test-annotation to supress warnings ([`3d5cf8f`](https://github.com/NIDAP-Community/SCWorkflow/commit/3d5cf8f39546ccf008e77dff6f003ac1620604da)) + +* feat: test ([`4c4cee7`](https://github.com/NIDAP-Community/SCWorkflow/commit/4c4cee798f2e25cc2ee4d3e0cfe6432fba4bd352)) + +* feat: test ([`c8274f9`](https://github.com/NIDAP-Community/SCWorkflow/commit/c8274f95e31d978a6f39b8b73e64674b39bedf20)) + +* feat: test ([`3aff107`](https://github.com/NIDAP-Community/SCWorkflow/commit/3aff107b99c9f12e8eff4a0d6366456fdaa42688)) + +* feat: test harmony ([`6c2830b`](https://github.com/NIDAP-Community/SCWorkflow/commit/6c2830b6bf37a3e908e82533f78e32ce897a0b50)) + +* feat: enable CD ([`3696c4b`](https://github.com/NIDAP-Community/SCWorkflow/commit/3696c4b4876dd18d652c674ab3e68c03cceebea1)) + +### Fix + +* fix: add skip on CI for harmony ([`55c1c0d`](https://github.com/NIDAP-Community/SCWorkflow/commit/55c1c0d5cee5e19cfe1e80d76421bcc3f44dc2fb)) + +* fix: Suppress warning for celldex, move CI handle for test Harmony, add png for page creation ([`406594a`](https://github.com/NIDAP-Community/SCWorkflow/commit/406594a94f11f02f5ea19c0ddf3eb5e0e264bcef)) + +* fix: Revise version format ([`7992d22`](https://github.com/NIDAP-Community/SCWorkflow/commit/7992d22f06692966e3aa3e543a24e51f84b96d5a)) + +* fix: update readme ([`d8d4013`](https://github.com/NIDAP-Community/SCWorkflow/commit/d8d401362ba532345ca58ad3f06d748387e9481e)) + +### Test + +* test: Adding variant for Action skip ([`b0bea4c`](https://github.com/NIDAP-Community/SCWorkflow/commit/b0bea4cf7517f963414f272424ecfd86ec2c82e3)) + +* test: update meta.ymal ([`1abd118`](https://github.com/NIDAP-Community/SCWorkflow/commit/1abd11822ca09dca58921cbe9bf915fb652855b6)) + +* test: update meta.ymal ([`46ba936`](https://github.com/NIDAP-Community/SCWorkflow/commit/46ba936561d14d3696a5540bfb70cb3ca25fb3dd)) + +* test: mute line42 in test-Process_Raw_Data ([`75dbd06`](https://github.com/NIDAP-Community/SCWorkflow/commit/75dbd064c5a4778030c0d959eaf39bbb5c234983)) + +### Unknown + +* Merge pull request #51 from NIDAP-Community/dev + +Update test files for Harmony and Annotation, add GitHub page image ([`5c19124`](https://github.com/NIDAP-Community/SCWorkflow/commit/5c19124e27cc4c1bebed7a3b3f65cf6445b1680e)) + +* Merge pull request #50 from NIDAP-Community/CDupdate + +fix: add skip on CI for harmony ([`3268a82`](https://github.com/NIDAP-Community/SCWorkflow/commit/3268a821009e051e70bfa7f62c6360495001ff2b)) + +* Merge pull request #49 from NIDAP-Community/CDupdate + +fix: Suppress warning for celldex, move CI handle for test Harmony, a… ([`30de884`](https://github.com/NIDAP-Community/SCWorkflow/commit/30de88464309ffcd421d35be02d253471a618797)) + +* Merge pull request #47 from NIDAP-Community/dev + +Update CD ([`76e59b4`](https://github.com/NIDAP-Community/SCWorkflow/commit/76e59b42ee4ac8f3d525d341d35cea0c373c2a68)) + +* Merge pull request #46 from NIDAP-Community/CDupdate + +docs: Adding changelog ([`7c5bcf2`](https://github.com/NIDAP-Community/SCWorkflow/commit/7c5bcf2b4a90f606d4febaf73969381cae33115a)) + +* Merge pull request #45 from NIDAP-Community/dev + +Update repo structure for CD implementation ([`ca27382`](https://github.com/NIDAP-Community/SCWorkflow/commit/ca273822d839661ac130b79987c646be8bea065c)) + +* Merge pull request #44 from NIDAP-Community/CDupdate + +Update repo structure for Continuous Deployment implementation ([`fab9424`](https://github.com/NIDAP-Community/SCWorkflow/commit/fab94243507e4d82a4beb3626e5f98b87e332751)) + +* Merge remote-tracking branch 'origin/main' into dev ([`c850a61`](https://github.com/NIDAP-Community/SCWorkflow/commit/c850a61b5e1bd5d244e9ce45734e5af60fdd45d2)) + +* Merge pull request #43 from NIDAP-Community/revert-42-testCD2 + +Revert "Test cd2" ([`dbd1511`](https://github.com/NIDAP-Community/SCWorkflow/commit/dbd15116feb7b0b2045ecd5001c6c16659009194)) + +* Revert "Test cd2" ([`82c3208`](https://github.com/NIDAP-Community/SCWorkflow/commit/82c32083a2080ad9ac198aaafec5676b5a7ad3ec)) + +* Merge pull request #42 from ruiheesi/testCD2 + +Test cd2 ([`696718c`](https://github.com/NIDAP-Community/SCWorkflow/commit/696718c26e3d2fe91e5de8c48dfe5b9f373289b8)) + +* Merge pull request #17 from ruiheesi/release_dev + +Release dev ([`93dac20`](https://github.com/NIDAP-Community/SCWorkflow/commit/93dac20d157a58bc9255598689bf630a968e1c01)) + +* Merge pull request #16 from ruiheesi/dev + +Dev ([`f094e92`](https://github.com/NIDAP-Community/SCWorkflow/commit/f094e924bec0e386cfe705dd259dec4848ab1fd0)) + +* Merge pull request #15 from ruiheesi/testCD2 + +Test cd2 ([`89850c1`](https://github.com/NIDAP-Community/SCWorkflow/commit/89850c1348c0df1456973c8747b8631a393ee11b)) + +* Merge remote-tracking branch 'origin/dev' into testCD2 ([`429581c`](https://github.com/NIDAP-Community/SCWorkflow/commit/429581c3b0c2dfba0eaf748ce4f0efdf1519de97)) + +* feat :test ([`10b3e05`](https://github.com/NIDAP-Community/SCWorkflow/commit/10b3e05b24e44f6e6548b3323e99faa46f4722d7)) + +* Merge pull request #14 from ruiheesi/dev + +Dev ([`c932c71`](https://github.com/NIDAP-Community/SCWorkflow/commit/c932c71d62a9c1ddb38721609a049e646d863dd0)) + +* Merge pull request #13 from ruiheesi/testCD2 + +Test cd2 ([`da01ac7`](https://github.com/NIDAP-Community/SCWorkflow/commit/da01ac7c185cfee5532ac5e080cd44111170178a)) + +* Merge pull request #12 from ruiheesi/release_dev + +Release dev ([`447457a`](https://github.com/NIDAP-Community/SCWorkflow/commit/447457a355f127ea2f36ccb573827f0057123ce4)) + +* Merge pull request #11 from ruiheesi/dev + +Dev ([`e4a2987`](https://github.com/NIDAP-Community/SCWorkflow/commit/e4a2987652ea1f5fae2ff5063943260e28684bb1)) + +* Merge pull request #10 from ruiheesi/testCD2 + +fix: update readme ([`a3f0d9c`](https://github.com/NIDAP-Community/SCWorkflow/commit/a3f0d9cced7259d5a08b0bf8db2375aa53cee3d0)) + +* Merge pull request #9 from ruiheesi/release_dev + +Release dev ([`4026e1a`](https://github.com/NIDAP-Community/SCWorkflow/commit/4026e1a9747b27488af6886681bb8fb42b268380)) + +* Merge pull request #8 from ruiheesi/dev + +Dev ([`4364548`](https://github.com/NIDAP-Community/SCWorkflow/commit/4364548c2dc9d0d8df250dd8c4b93488393f334a)) + +* Merge pull request #7 from ruiheesi/testCD + +test: update meta.ymal ([`fe470f9`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe470f98b9f70060dd8974472aa1d502b60c723a)) + +* Merge pull request #6 from ruiheesi/dev + +Dev ([`4e75a9f`](https://github.com/NIDAP-Community/SCWorkflow/commit/4e75a9f42b4923bfcf24d677c631d25f445cfaf7)) + +* Merge pull request #5 from ruiheesi/testCD + +test: update meta.ymal ([`caed439`](https://github.com/NIDAP-Community/SCWorkflow/commit/caed4395ade91b2ef1303a65b030f4809f5e0a17)) + +* Merge pull request #4 from ruiheesi/dev + +Dev ([`9f27de1`](https://github.com/NIDAP-Community/SCWorkflow/commit/9f27de17376dfbe565d4bd0f5249a15aa5448327)) + +* Merge pull request #3 from ruiheesi/testCD + +test: mute line42 in test-Process_Raw_Data ([`abef880`](https://github.com/NIDAP-Community/SCWorkflow/commit/abef880e520c75e8eba434f49ecf77d8640ac56c)) + +* Merge pull request #1 from ruiheesi/testCD + +feat: enable CD ([`0194dd9`](https://github.com/NIDAP-Community/SCWorkflow/commit/0194dd90f3375b97830363ad159df05542874fa5)) + +* Merge pull request #38 from NIDAP-Community/main + +Updating dev to avoid potential lost of progress ([`8936388`](https://github.com/NIDAP-Community/SCWorkflow/commit/8936388ffcd2cb8e2c2cafe90a7c74aac4738001)) + +* Merge pull request #37 from NIDAP-Community/8_4_tutorial + +8 4 tutorial ([`c640c8f`](https://github.com/NIDAP-Community/SCWorkflow/commit/c640c8ff28658757e386a00f1f3b2359f3dfa3bf)) + +* Merge branch '8_4_tutorial' of https://github.com/NIDAP-Community/SCWorkflow into 8_4_tutorial ([`be8b11f`](https://github.com/NIDAP-Community/SCWorkflow/commit/be8b11f68f75f9c5db5f792b2fa09e46eb25668b)) + +* Just for tutorial ([`b667bb0`](https://github.com/NIDAP-Community/SCWorkflow/commit/b667bb0ddd6fe7e7abc62a49b462c8daa9e1ed84)) + +* test ([`d8bc63c`](https://github.com/NIDAP-Community/SCWorkflow/commit/d8bc63c0cc80012f3b1fec86dc088872cf1c5514)) + +* Fixing visualization for "after" plot ([`d7bb90f`](https://github.com/NIDAP-Community/SCWorkflow/commit/d7bb90f5a7cb674ffb4605a9378b55e4e2d9f48e)) + +* Merge pull request #36 from NIDAP-Community/dev + +Dev ([`0b66085`](https://github.com/NIDAP-Community/SCWorkflow/commit/0b66085572c68465ccf15da81b1e2a5a7d9db71d)) + +* Merge pull request #35 from NIDAP-Community/heatmap_fix + +Fix heatmap ([`49f0486`](https://github.com/NIDAP-Community/SCWorkflow/commit/49f048653adb7ccaeedb5cc1854cdacde924cc4b)) + +* Fix heatmap ([`db3ee4e`](https://github.com/NIDAP-Community/SCWorkflow/commit/db3ee4e74d8118df4e8fdd77aa3486200e7f4adf)) + +* Merge pull request #34 from NIDAP-Community/release_6_15_test + +Update DESCRIPTION file with author info and short package description ([`31a4d13`](https://github.com/NIDAP-Community/SCWorkflow/commit/31a4d1375566f05b46f06ef38c9ca8fd7e2ca771)) + +* Merge pull request #33 from NIDAP-Community/update_DES + +Update DESCRIPTION file ([`df2abd7`](https://github.com/NIDAP-Community/SCWorkflow/commit/df2abd7cc9385e25b0aefe8f2316608109f60651)) + +* Update DESCRIPTION file ([`5e43253`](https://github.com/NIDAP-Community/SCWorkflow/commit/5e432537eeda1dd2397750ade226238afe5e3fa6)) + +* Adding auto-generated files ([`14ff346`](https://github.com/NIDAP-Community/SCWorkflow/commit/14ff346d8e731868dbadbf06c931525bf12eee06)) + +* Merge pull request #31 from NIDAP-Community/release_6_13 + +Update 6 13 from Alexei ([`e2297c6`](https://github.com/NIDAP-Community/SCWorkflow/commit/e2297c659dcf3b42365a30dcf053bf424213ed5a)) + +* Merge pull request #30 from NIDAP-Community/release_test + +Run all unit tests ([`407ca8f`](https://github.com/NIDAP-Community/SCWorkflow/commit/407ca8f04a90a048be8192d08968f1b7e62c40ba)) + +* Merge pull request #28 from NIDAP-Community/main + +Update ([`2891614`](https://github.com/NIDAP-Community/SCWorkflow/commit/2891614e947881eb81e962e4c63803e760dab5c2)) + +* Merge pull request #27 from NIDAP-Community/phil_6_6_no_NG + +Modify package function load ([`370522e`](https://github.com/NIDAP-Community/SCWorkflow/commit/370522ef9a3154b47f8a8ad5878c9118f11f32b2)) + +* Including "NULL" and "seurat_cluster" tests ([`8cb6a23`](https://github.com/NIDAP-Community/SCWorkflow/commit/8cb6a233e308e97e7af65b88ebe1329493a0797c)) + +* Introducing "cluster" variable functionality ([`e26f2aa`](https://github.com/NIDAP-Community/SCWorkflow/commit/e26f2aaf7d79a2ff57e202758739bd40b69c8460)) + +* Modify package function load ([`fe7ad65`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe7ad65efba87c382e91d1adfa6cbace3b707ace)) + +* Adding auto-generated files ([`e65ad6b`](https://github.com/NIDAP-Community/SCWorkflow/commit/e65ad6bb3b2880e630a2ab687765b55bdaa02ce7)) + +* Merge pull request #26 from NIDAP-Community/release_test + +Passed all tests ([`4a40802`](https://github.com/NIDAP-Community/SCWorkflow/commit/4a408023d2859e8db27cdeb72011f9de29367ca2)) + +* Merge pull request #25 from NIDAP-Community/phil_6_6_no_NG + +Run all unit test ([`4979266`](https://github.com/NIDAP-Community/SCWorkflow/commit/497926643929356e93e4a7cfb2ddd5438e2e1138)) + +* Update Plot_Metadata ([`573b57a`](https://github.com/NIDAP-Community/SCWorkflow/commit/573b57a227bed380ccbeb7fe5e48b84a21627c72)) + +* Update ModuleScore ([`4367b28`](https://github.com/NIDAP-Community/SCWorkflow/commit/4367b28db3b71aa627b4f3e33dfda52dff6cf6de)) + +* Update NAMESPACE ([`77240ed`](https://github.com/NIDAP-Community/SCWorkflow/commit/77240ed5584271f3786a9c40aad7df7c70368f63)) + +* Merge changes ([`b9226e0`](https://github.com/NIDAP-Community/SCWorkflow/commit/b9226e0fe6f72ba5350b358a4674e52bdaa9c11a)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + NAMESPACE + tests/testthat/fixtures/downsample_SO.R ([`d4b92fe`](https://github.com/NIDAP-Community/SCWorkflow/commit/d4b92fe74f106c79a3ffb7e8fe3371973c01004d)) + +* update documentation ([`19b7179`](https://github.com/NIDAP-Community/SCWorkflow/commit/19b7179ea56bf5eff0779a6526e7bb622db87208)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`ca74b58`](https://github.com/NIDAP-Community/SCWorkflow/commit/ca74b585e623f3ddcd88034dae2bc0a4ebb72bf4)) + +* delete old files ([`b5b2d1d`](https://github.com/NIDAP-Community/SCWorkflow/commit/b5b2d1da652372e1592d469dc526827d1c927191)) + +* Removed test-Pseudobulk_DEG.R and test-Sample_Names.R ([`877fa28`](https://github.com/NIDAP-Community/SCWorkflow/commit/877fa28b190e0e0ec499c0a3a1dfb88a2745988e)) + +* Removed test-Meta_Data.R ([`975face`](https://github.com/NIDAP-Community/SCWorkflow/commit/975face8855fa9c03689ffc9f75a063505f6d8e9)) + +* Merge branch 'main' into phil_6_6_no_NG ([`f638db9`](https://github.com/NIDAP-Community/SCWorkflow/commit/f638db9fccb766a9ff4960448f45edc83b972f54)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`77c1f03`](https://github.com/NIDAP-Community/SCWorkflow/commit/77c1f03feab0422776d8092f8f638c6f3e04a613)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +need to update violinPlot subset function ([`41f805e`](https://github.com/NIDAP-Community/SCWorkflow/commit/41f805e6ddcd4e7d3f71e4a3507d3e51af194e47)) + +* update violinPlot subset function ([`0609899`](https://github.com/NIDAP-Community/SCWorkflow/commit/06098990cda9235bec91260bea697405304cefb9)) + +* Remove old tests ([`6ca9164`](https://github.com/NIDAP-Community/SCWorkflow/commit/6ca9164b39f25ecb28115bb4d71b3fe8150ebc07)) + +* udate PBMC sing Filtered rds ([`516a9df`](https://github.com/NIDAP-Community/SCWorkflow/commit/516a9df2e781e2cabbf5ced4c341063a8596ef8f)) + +* Fix Test Error ([`7641655`](https://github.com/NIDAP-Community/SCWorkflow/commit/76416550f0a378b7cdeafa0cfee6458d0d2dfc02)) + +* fix Test error ([`e97494a`](https://github.com/NIDAP-Community/SCWorkflow/commit/e97494ac46b0e0f69e900893d8f4122418c5cc91)) + +* Merge branch 'main' into phil_6_6_no_NG ([`d7fd7c8`](https://github.com/NIDAP-Community/SCWorkflow/commit/d7fd7c8b4807c7107d1544b203ce1704ec59d4e5)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`1e52f51`](https://github.com/NIDAP-Community/SCWorkflow/commit/1e52f51121016d511d0f26dcc829418c21b5faf1)) + +* Setting add.gene.or.protein to TRUE - will error out on FALSE ([`2e0a153`](https://github.com/NIDAP-Community/SCWorkflow/commit/2e0a153ab6557b95313bbf3b59e906e90986b703)) + +* Merge branch 'main' into phil_6_6_no_NG ([`d61ce1d`](https://github.com/NIDAP-Community/SCWorkflow/commit/d61ce1d22a317a12374ef907b71d593a5ad4fbd2)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`cd90fbb`](https://github.com/NIDAP-Community/SCWorkflow/commit/cd90fbbe2932243523b67df783eef4faeaf82333)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`b44581b`](https://github.com/NIDAP-Community/SCWorkflow/commit/b44581bf94b5a807fe3f9951de814ce129a5c517)) + +* bug fix on heatmap sort by annotation ([`8d09781`](https://github.com/NIDAP-Community/SCWorkflow/commit/8d097818a0ebe01be9fd9b077a451663c7af9ed9)) + +* Merge branch 'main' into phil_6_6_no_NG ([`986bcdf`](https://github.com/NIDAP-Community/SCWorkflow/commit/986bcdfa89188fb9bdc4db188a500b1304cd7e8c)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8fab93f`](https://github.com/NIDAP-Community/SCWorkflow/commit/8fab93f47a9d180526bcb3dbe90e2d817134f9fc)) + +* changed select_crobject to selectCRObject ([`b7446a6`](https://github.com/NIDAP-Community/SCWorkflow/commit/b7446a68cd3fef6e06f1fa1ea2cddc48669298b4)) + +* Update Seurate importing method in process raw ([`846ac5d`](https://github.com/NIDAP-Community/SCWorkflow/commit/846ac5d5b71ae0d188bd96d50846d9210c3cd453)) + +* Trigger check and update latest main ([`2b575eb`](https://github.com/NIDAP-Community/SCWorkflow/commit/2b575eb60c67c5fe2703ed8af53c98d33647c707)) + +* Merge branch 'main' into phil_6_6_no_NG ([`aab0562`](https://github.com/NIDAP-Community/SCWorkflow/commit/aab05622389f0bc113c102211676818dc7280dd9)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`b786ed1`](https://github.com/NIDAP-Community/SCWorkflow/commit/b786ed11b195097e8dbf158e4f02e852df3bb38e)) + +* Removed gene from Seurat ([`d5d17ac`](https://github.com/NIDAP-Community/SCWorkflow/commit/d5d17accc43a8ee537510b03be8990a1d7eab217)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`e7f08eb`](https://github.com/NIDAP-Community/SCWorkflow/commit/e7f08eb3fea96b82341fc27aaa488dda2b2b2832)) + +* Bug fix for dual labeling ([`9eede5b`](https://github.com/NIDAP-Community/SCWorkflow/commit/9eede5bc4f310ea22207cec057c617f16202b6d4)) + +* Fixed bug in Dual Labeling and added one more plot output (contingency table) ([`0b17248`](https://github.com/NIDAP-Community/SCWorkflow/commit/0b17248be847b81555c97600fe8e2caff9db7d6b)) + +* Test direct import seurat in process raw ([`3bd763b`](https://github.com/NIDAP-Community/SCWorkflow/commit/3bd763b69ad2f46889c1d72f2dc1c22254cd97cc)) + +* Trigger action, updated process raw to import Seurat ([`2e46082`](https://github.com/NIDAP-Community/SCWorkflow/commit/2e460823cf356023fa369e11c4036f7cff8406b1)) + +* Trigger action, updated cc.gene ([`84acd38`](https://github.com/NIDAP-Community/SCWorkflow/commit/84acd389991d129cb4a0c4d8ebed4bf7540b5614)) + +* Trigger action, updated NAMESPACE ([`a968d2d`](https://github.com/NIDAP-Community/SCWorkflow/commit/a968d2dc3812ba71c23e3a07a3c7fdecda5968d1)) + +* Trigger action ([`b38dd32`](https://github.com/NIDAP-Community/SCWorkflow/commit/b38dd32fb9a6ab1a539d4cdc99bd955cd48bc5e2)) + +* Trigger action ([`05e9be4`](https://github.com/NIDAP-Community/SCWorkflow/commit/05e9be4bc9088a929bbca4573a7a865bad2d33bf)) + +* Update NAMESPACE ([`d7015e6`](https://github.com/NIDAP-Community/SCWorkflow/commit/d7015e69d30e4ca689114ef97080e2c3557fd8c2)) + +* Merge branch 'main' into phil_6_6_no_NG ([`d9ba725`](https://github.com/NIDAP-Community/SCWorkflow/commit/d9ba725ba473a45b2ff4e9cc54a8ce4f519edc4b)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`5559288`](https://github.com/NIDAP-Community/SCWorkflow/commit/555928839404d87ce839a3d83cd7952b0a438390)) + +* Trigger unit tests ([`99ae357`](https://github.com/NIDAP-Community/SCWorkflow/commit/99ae357944dd160f4fd028b5b756b3870136560e)) + +* Add Filtered rds ([`666c3d8`](https://github.com/NIDAP-Community/SCWorkflow/commit/666c3d82a03a1cec9b31d2e398705d7a582f29c5)) + +* update Variable descriptions ([`43e05f5`](https://github.com/NIDAP-Community/SCWorkflow/commit/43e05f500af7f1240b64f44c9175e79f5c49ea8a)) + +* update Variable descriptions ([`3fd169b`](https://github.com/NIDAP-Community/SCWorkflow/commit/3fd169bfe56a583e93f6e439a897e4ba0fd7873a)) + +* reverting from clusters to barcodes for merging ([`f561e2f`](https://github.com/NIDAP-Community/SCWorkflow/commit/f561e2fe5c425efa25636f817943a0156427019d)) + +* Trigger unit test ([`a668ef9`](https://github.com/NIDAP-Community/SCWorkflow/commit/a668ef9885447da16b617d850824378a0fe36e41)) + +* Trigger unit test ([`1c48c37`](https://github.com/NIDAP-Community/SCWorkflow/commit/1c48c374d29bc940d187c97b8c62b4b2d38efc89)) + +* Merge branch 'main' into phil_6_6_no_NG ([`ada4aab`](https://github.com/NIDAP-Community/SCWorkflow/commit/ada4aab3833d1c523a10c12fa69e8510b61fdd76)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`aa254f1`](https://github.com/NIDAP-Community/SCWorkflow/commit/aa254f108270c7746bbefd02fc9f741a4fbf1d59)) + +* Update NAMESPACE ([`dc6152b`](https://github.com/NIDAP-Community/SCWorkflow/commit/dc6152ba8d2adf3ec986e1d63ed35003223b95ce)) + +* rn h5 test ([`d398586`](https://github.com/NIDAP-Community/SCWorkflow/commit/d398586052384ca894adb0f73d9054542583eefd)) + +* Fixing "All" cluster label ([`18bbdc8`](https://github.com/NIDAP-Community/SCWorkflow/commit/18bbdc841e98fc8e28d6a3fcfac5e3b7255c47d4)) + +* Removing "latent variable" from a test script ([`1839cdd`](https://github.com/NIDAP-Community/SCWorkflow/commit/1839cdd2082fa73019c1efa9df40e38cb7bd41b3)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + NAMESPACE + R/Combine_and_Renormalize.R + R/Filter_and_QC.R + R/PCA_and_Normalization.R + R/Post_filter_QC_Plots.R + tests/testthat/fixtures/NSCLC_Single/NSCLC_Single_Filtered_PCA_Norm_SO_downsample.rds + tests/testthat/fixtures/NSCLC_Single/NSCLC_Single_Filtered_SO_downsample.rds + tests/testthat/fixtures/NSCLC_Single/NSCLCsingle_Filtered_PCA_Norm_SO_downsample.rds + tests/testthat/fixtures/NSCLC_Single/NSCLCsingle_Filtered_SO_downsample.rds + tests/testthat/fixtures/PBMC_Single/PBMC_Single_Filtered_PCA_Norm_SO_downsample.rds + tests/testthat/fixtures/PBMC_Single/PBMC_Single_Filtered_SO_downsample.rds + tests/testthat/fixtures/downsample_SO.R + tests/testthat/test_Combine_and_Renormalize.R + tests/testthat/test_Filter_and_QC.R + tests/testthat/test_PCA_and_Normalization.R + tests/testthat/test_Post_Filter_QC.R ([`92eae54`](https://github.com/NIDAP-Community/SCWorkflow/commit/92eae54a989c4b29fa15557f0745d10821353c7d)) + +* FiltQC Variable Descriptions ([`4aa0674`](https://github.com/NIDAP-Community/SCWorkflow/commit/4aa0674bc71b50ed92d50415955066621e6bf527)) + +* New RAW filtQC CombNorm ([`7aa1a24`](https://github.com/NIDAP-Community/SCWorkflow/commit/7aa1a247bcf161bb49986c6ef9bca3593ea8ac82)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + NAMESPACE + R/Post_filter_QC_Plots.R + tests/testthat/test_Post_Filter_QC.R ([`4fd27d2`](https://github.com/NIDAP-Community/SCWorkflow/commit/4fd27d20f20734ecbe46cc42e3e5e149a1de7241)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + man/Combine_and_Renormalize.Rd + man/Post_filter_QC.Rd ([`159af06`](https://github.com/NIDAP-Community/SCWorkflow/commit/159af060fae86d413afe6720a4c7ae29e9404cd6)) + +* skip on ci on reticulate pacakge ([`549f205`](https://github.com/NIDAP-Community/SCWorkflow/commit/549f205832afd7618696b7ae8c0e72008d3c5088)) + +* skip on ci on reticulate pacakge ([`75412d7`](https://github.com/NIDAP-Community/SCWorkflow/commit/75412d7b00c612e10ec96dd5414930a6caaa574d)) + +* Edited snapshot tests ([`a316ad3`](https://github.com/NIDAP-Community/SCWorkflow/commit/a316ad3d73028fee14ba1c9ab8cd6d3bca863728)) + +* Edited snapshot tests ([`cf00505`](https://github.com/NIDAP-Community/SCWorkflow/commit/cf00505eba21cb4374944b284390fa05e7525a5b)) + +* update pseudobulk helper ([`fd0a506`](https://github.com/NIDAP-Community/SCWorkflow/commit/fd0a5065a7ab4737b1279bed51710d93629286e6)) + +* update pseudobulk helper ([`7f8060e`](https://github.com/NIDAP-Community/SCWorkflow/commit/7f8060e122bca43e6abd2c1ef945cdd39e5adabc)) + +* add pseudobulk helper and test scripts ([`122f072`](https://github.com/NIDAP-Community/SCWorkflow/commit/122f07248209ca1ba029734ca0ac2abb66a1a835)) + +* add pseudobulk helper and test scripts ([`27a49ec`](https://github.com/NIDAP-Community/SCWorkflow/commit/27a49ec543330728a91042d28e1b53a5f86fb651)) + +* update functions and tests ([`c7ddbf8`](https://github.com/NIDAP-Community/SCWorkflow/commit/c7ddbf8b4364ad718d593aa3808abd54933faddc)) + +* update functions and tests ([`c201dd7`](https://github.com/NIDAP-Community/SCWorkflow/commit/c201dd75f0c427847c5ce560cf324782996d90dd)) + +* Removing "latent var" and replacing second.clust ([`67c3aea`](https://github.com/NIDAP-Community/SCWorkflow/commit/67c3aea82d8775e61954cf1135973b4ad3b21f35)) + +* Removing "latent var" and replacing second.clust ([`9c16231`](https://github.com/NIDAP-Community/SCWorkflow/commit/9c16231ee351aa33dc6d2548be36453462f8fa65)) + +* Quick test for CI ([`e71339c`](https://github.com/NIDAP-Community/SCWorkflow/commit/e71339c3e9416a04e64fc8bd504d9dc5fc56fad5)) + +* Quick test for CI ([`73c62ca`](https://github.com/NIDAP-Community/SCWorkflow/commit/73c62cadbeded741253b4c722352b438d8772a89)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`b600bf0`](https://github.com/NIDAP-Community/SCWorkflow/commit/b600bf0c868fc53aa09b88715562a989c75a80f6)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8bb7502`](https://github.com/NIDAP-Community/SCWorkflow/commit/8bb75027fdc94a0e54b5d6477fc3d94e2c361ee6)) + +* Added color selection to 3D-tsne Plotter ([`2882b76`](https://github.com/NIDAP-Community/SCWorkflow/commit/2882b768758596c7233f73235eafcc4e8cc3c41e)) + +* Added color selection to 3D-tsne Plotter ([`f7decbc`](https://github.com/NIDAP-Community/SCWorkflow/commit/f7decbcdc91a232bee6edffdc24a18469ab9b462)) + +* Added a "cached" CellDex option ([`2cabb8d`](https://github.com/NIDAP-Community/SCWorkflow/commit/2cabb8dfcc1b0f2567efc92c6d0d2d77a621d021)) + +* Added a "cached" CellDex option ([`c913672`](https://github.com/NIDAP-Community/SCWorkflow/commit/c9136726a335c8a0f5ce0d34dd4e8d11a78d03a8)) + +* fixed NAMESPACE conflicts ([`f2aa02f`](https://github.com/NIDAP-Community/SCWorkflow/commit/f2aa02fa882b3aa99e9f070c32af82d656491207)) + +* fixed NAMESPACE conflicts ([`797ab6d`](https://github.com/NIDAP-Community/SCWorkflow/commit/797ab6db26518c0e76610130ba0eb6a0681b68cc)) + +* Changed pheatmap to ComplexHeatmap::pheatmap ([`5c9316b`](https://github.com/NIDAP-Community/SCWorkflow/commit/5c9316bf95e1779a6ef56f9e6d41a97d8a56e711)) + +* Changed pheatmap to ComplexHeatmap::pheatmap ([`414723d`](https://github.com/NIDAP-Community/SCWorkflow/commit/414723d5f8c1d70fca9aa8b837991bc94021b0af)) + +* Code Review ([`03f4392`](https://github.com/NIDAP-Community/SCWorkflow/commit/03f43924a7af298899b0f945d0135b5ea8be05f5)) + +* Code Review ([`b2724c8`](https://github.com/NIDAP-Community/SCWorkflow/commit/b2724c821d377fcb12842a9b08ba029624056ef0)) + +* Removed LICENCE file in the description ([`e2affa9`](https://github.com/NIDAP-Community/SCWorkflow/commit/e2affa993742d9f53faa32e7510aa8256e669984)) + +* Removed LICENCE file in the description ([`8c3154e`](https://github.com/NIDAP-Community/SCWorkflow/commit/8c3154e67ea7abcf882b4ee497902c706264570c)) + +* Minor fixes for R CMD CHECK ([`134523f`](https://github.com/NIDAP-Community/SCWorkflow/commit/134523f90012a8da8a8d7aee80cec87ebeb18e2e)) + +* Minor fixes for R CMD CHECK ([`c1eb410`](https://github.com/NIDAP-Community/SCWorkflow/commit/c1eb410dab27e37246f2fdfb07f29c9a190c0658)) + +* Fix syntax error + +At line 200, fix syntax error from "=" to "==" ([`2916381`](https://github.com/NIDAP-Community/SCWorkflow/commit/29163814bd52d84887a1aa263ecd60604c46bfff)) + +* Fix syntax error + +At line 200, fix syntax error from "=" to "==" ([`d909584`](https://github.com/NIDAP-Community/SCWorkflow/commit/d9095849fcb4799811b84c16031aadde89827628)) + +* Helper for Recluster, Sprint 7 compliant. ([`d5181f9`](https://github.com/NIDAP-Community/SCWorkflow/commit/d5181f9590dc308db07a9de85ba4516365e2728f)) + +* Helper for Recluster, Sprint 7 compliant. ([`8f28252`](https://github.com/NIDAP-Community/SCWorkflow/commit/8f28252ce26980a0eac32f152e2245f69c952eb5)) + +* New test for Recluster with correct name. ([`bf252e2`](https://github.com/NIDAP-Community/SCWorkflow/commit/bf252e2bcdde38e5de684de5a3fc332919828d85)) + +* New test for Recluster with correct name. ([`0d88348`](https://github.com/NIDAP-Community/SCWorkflow/commit/0d883480f2547a0eb897ffffd726a91f1634ca26)) + +* Old file w bad name gone. New file good. ([`e903ca0`](https://github.com/NIDAP-Community/SCWorkflow/commit/e903ca0cc4f69636f0501aea9729e94ccf645ebb)) + +* Old file w bad name gone. New file good. ([`0e0d81e`](https://github.com/NIDAP-Community/SCWorkflow/commit/0e0d81e90be6761afc33483101edbb41e8b66405)) + +* Re-arranged for new Sprint 7 formatting and functions. ([`2c07bcb`](https://github.com/NIDAP-Community/SCWorkflow/commit/2c07bcbbf8ae4bcb0dc0ebdb130f038ed59182ff)) + +* Re-arranged for new Sprint 7 formatting and functions. ([`e670fe9`](https://github.com/NIDAP-Community/SCWorkflow/commit/e670fe9178cff404c0ec4582a912540398e34c7e)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +need to push updated code to main ([`20f0ab7`](https://github.com/NIDAP-Community/SCWorkflow/commit/20f0ab7148cd75ff85a5e2f592dedb1b009a51d3)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +need to push updated code to main ([`189075c`](https://github.com/NIDAP-Community/SCWorkflow/commit/189075c3d272a3df0ecf0a3f6fafa8361cd7b820)) + +* push updated scripts to main ([`ed4b682`](https://github.com/NIDAP-Community/SCWorkflow/commit/ed4b682e84b063488258abd366f185777414697e)) + +* push updated scripts to main ([`f70b090`](https://github.com/NIDAP-Community/SCWorkflow/commit/f70b0905c1266ce0bf6a6ae4ef547cd902378484)) + +* Restructured according to new requirements ([`94b0170`](https://github.com/NIDAP-Community/SCWorkflow/commit/94b01704bdbf3ad8dca4c768a22cf5bfb3970250)) + +* Restructured according to new requirements ([`797d5be`](https://github.com/NIDAP-Community/SCWorkflow/commit/797d5be0366a57d406e1f77e21cd643b52ce8be1)) + +* Restructured according to new requirements ([`495be93`](https://github.com/NIDAP-Community/SCWorkflow/commit/495be9391e2aead650582d81b5dcd324c3071a7c)) + +* Restructured according to new requirements ([`7e53872`](https://github.com/NIDAP-Community/SCWorkflow/commit/7e53872c47d7b641321acefe9274f6983e812624)) + +* Restructured according to new requirements ([`6043df1`](https://github.com/NIDAP-Community/SCWorkflow/commit/6043df1eee55fb6c4f56b443ff2d11a32721edbc)) + +* Restructured according to new requirements ([`5efd01d`](https://github.com/NIDAP-Community/SCWorkflow/commit/5efd01d78826b5e241e44a2218250277a4512093)) + +* Restructured according to new requirements ([`8465a9e`](https://github.com/NIDAP-Community/SCWorkflow/commit/8465a9e956df63f2902d29d72e3689077bb77f75)) + +* Restructured according to new requirements ([`75be9d0`](https://github.com/NIDAP-Community/SCWorkflow/commit/75be9d09f000b8c428b38fbdbed187235d6381f7)) + +* Restructured according to new requirements ([`8c4739b`](https://github.com/NIDAP-Community/SCWorkflow/commit/8c4739b68d20e44c965cbe57c63dba25b73e691a)) + +* Restructured according to new requirements ([`8a39e82`](https://github.com/NIDAP-Community/SCWorkflow/commit/8a39e82023051db156209a03e3af3a832a4386cc)) + +* Restructured according to new requirements ([`2ccad56`](https://github.com/NIDAP-Community/SCWorkflow/commit/2ccad563ae46e6da1fd3564f1e58d26619fb4685)) + +* Restructured according to new requirements ([`4770cf7`](https://github.com/NIDAP-Community/SCWorkflow/commit/4770cf70208b233dbee1914c07890497504a7aca)) + +* Restructured according to new requirements ([`8762e39`](https://github.com/NIDAP-Community/SCWorkflow/commit/8762e39d81744f8c8eaa3a2914a3ee3db2387d6c)) + +* Restructured according to new requirements ([`c21ca07`](https://github.com/NIDAP-Community/SCWorkflow/commit/c21ca07dc3cff965be9f8e654f6f09c3951008a6)) + +* Restructured according to new requirements ([`b9dfed4`](https://github.com/NIDAP-Community/SCWorkflow/commit/b9dfed455986e872893b6be3ff279c0fe45b743f)) + +* Restructured according to new requirements ([`9cc27d3`](https://github.com/NIDAP-Community/SCWorkflow/commit/9cc27d3abbe2c3db548ed7f8da4c1fcdb5a5a1a9)) + +* Restructured according to new requirements ([`656b12e`](https://github.com/NIDAP-Community/SCWorkflow/commit/656b12e9d48153e65c4dff24567b9753bb6fb655)) + +* Restructured according to new requirements ([`2989dbe`](https://github.com/NIDAP-Community/SCWorkflow/commit/2989dbe99e9a51a11c26a8e30d04a5d16ba64472)) + +* Restructured according to new requirements ([`bf8dcb1`](https://github.com/NIDAP-Community/SCWorkflow/commit/bf8dcb1db37f1038ea5bb7170e8c22fbe6e0b9ae)) + +* Restructured according to new requirements ([`d11a692`](https://github.com/NIDAP-Community/SCWorkflow/commit/d11a692523f4386fc13af16f738b2909540e4011)) + +* Restructured according to new requirements ([`95693f6`](https://github.com/NIDAP-Community/SCWorkflow/commit/95693f60c7bbe9125a2eac67ccf1956ea4e12453)) + +* Restructured according to new requirements ([`da04b19`](https://github.com/NIDAP-Community/SCWorkflow/commit/da04b193fe9d2140979efd80fd59f387b297bc50)) + +* Restructured according to new requirements ([`6dca0bf`](https://github.com/NIDAP-Community/SCWorkflow/commit/6dca0bf0a20ad777f62575f79ce01e0fdcaccafc)) + +* Restructured according to new requirements ([`de6b4da`](https://github.com/NIDAP-Community/SCWorkflow/commit/de6b4da44afe6d9e34b5f0bffee9afcb6308fdc9)) + +* Restructured according to new requirements ([`8f4ea59`](https://github.com/NIDAP-Community/SCWorkflow/commit/8f4ea599e464198acadbdfc322a90da29fd10d0c)) + +* Restructured according to new requirements ([`1741342`](https://github.com/NIDAP-Community/SCWorkflow/commit/1741342240e49e864cbd88142f409524369101f7)) + +* Restructured according to new requirements ([`f522e45`](https://github.com/NIDAP-Community/SCWorkflow/commit/f522e4518d4472054e7dc65bc61e9d9e81ec87c1)) + +* Restructured according to new requirements ([`dc8cfe2`](https://github.com/NIDAP-Community/SCWorkflow/commit/dc8cfe25bdbfc15c56b9b41eb2e43f7f5ee96962)) + +* Restructured according to new requirements ([`b2235b0`](https://github.com/NIDAP-Community/SCWorkflow/commit/b2235b02cff0b5b54f88cd402bfa962d8fae5a75)) + +* Restructured according to new requirements ([`6f4bd6d`](https://github.com/NIDAP-Community/SCWorkflow/commit/6f4bd6da66ec555ec2c94ad8ef70fc3067c87abf)) + +* Delete test-DegGeneExpressionMarkers.R + +Replaced with newer, renamed version ([`237eacf`](https://github.com/NIDAP-Community/SCWorkflow/commit/237eacff6e194d4cd7f9a7c68ff74a6ac088978f)) + +* Delete test-DegGeneExpressionMarkers.R + +Replaced with newer, renamed version ([`ee510b7`](https://github.com/NIDAP-Community/SCWorkflow/commit/ee510b7196123b5998d38ccdcb0f99de582dd68a)) + +* Accepted changes to Namespace ([`b0ef9e7`](https://github.com/NIDAP-Community/SCWorkflow/commit/b0ef9e7b54542b5c0066fe3f0032a79f802fe707)) + +* Accepted changes to Namespace ([`70d880f`](https://github.com/NIDAP-Community/SCWorkflow/commit/70d880fae46c6037826403fa86d72107810ebcf6)) + +* Removed ticks on dotplot code ([`d6599be`](https://github.com/NIDAP-Community/SCWorkflow/commit/d6599bed50905f0d3641112e9ed6472ae7561595)) + +* Removed ticks on dotplot code ([`3b4a6e0`](https://github.com/NIDAP-Community/SCWorkflow/commit/3b4a6e03e432b8e1e6a821b9f6f49bce48f8dd4b)) + +* Added select to dplyr import ([`1311aae`](https://github.com/NIDAP-Community/SCWorkflow/commit/1311aaea0fac56db4ea767b0c513a217d4e5a8f8)) + +* Added select to dplyr import ([`c860639`](https://github.com/NIDAP-Community/SCWorkflow/commit/c86063936b08d8d531ace11d58df0e1e392637e5)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8759676`](https://github.com/NIDAP-Community/SCWorkflow/commit/87596767c794c0c9e63fd1102eb57b4a2d92a960)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`28e310b`](https://github.com/NIDAP-Community/SCWorkflow/commit/28e310b7d312236691d000a54f0f230c15a0377b)) + +* Added snapshot file tests to Name clusters ([`1a0c530`](https://github.com/NIDAP-Community/SCWorkflow/commit/1a0c53094f6811426df20be0a690b03a3d8af420)) + +* Added snapshot file tests to Name clusters ([`de98847`](https://github.com/NIDAP-Community/SCWorkflow/commit/de98847464105d96161d0712806956eafcbbc5ca)) + +* Added more snapshot tests to heatmap ([`3f138a4`](https://github.com/NIDAP-Community/SCWorkflow/commit/3f138a4f49fa04d007c30d60a007582f185c68df)) + +* Added more snapshot tests to heatmap ([`1fe2d7b`](https://github.com/NIDAP-Community/SCWorkflow/commit/1fe2d7b771a905eaa975f0349886b43263a120e6)) + +* Additional snapshot file tests for dual labeling ([`8d92fcf`](https://github.com/NIDAP-Community/SCWorkflow/commit/8d92fcf2bf630fd9dc4946a2acf768be4cc60d03)) + +* Additional snapshot file tests for dual labeling ([`580ab8d`](https://github.com/NIDAP-Community/SCWorkflow/commit/580ab8d4a9ecdda5c65e9f800d785d2e048a8bb8)) + +* Additional tests to dotplot by metadata ([`fbc3ada`](https://github.com/NIDAP-Community/SCWorkflow/commit/fbc3ada98005a7275c3f0bf01779c561f32b6eda)) + +* Additional tests to dotplot by metadata ([`b7f6c45`](https://github.com/NIDAP-Community/SCWorkflow/commit/b7f6c45553a1379ff14d0c984283736e810e0e13)) + +* Adding expect snapshot file tests to 3D-tSNE plotter ([`8f33e2b`](https://github.com/NIDAP-Community/SCWorkflow/commit/8f33e2b086ddd809820965c24fb3efa56efc7db9)) + +* Adding expect snapshot file tests to 3D-tSNE plotter ([`661102c`](https://github.com/NIDAP-Community/SCWorkflow/commit/661102cbb8b4eda0887f55d06598b2312405201c)) + +* Formatting changes to helper-dual labeling ([`8f5da99`](https://github.com/NIDAP-Community/SCWorkflow/commit/8f5da99ae19390d76e604df02e1b42397fdb3cbd)) + +* Formatting changes to helper-dual labeling ([`266dec8`](https://github.com/NIDAP-Community/SCWorkflow/commit/266dec8a3dea81e37a2d1c506396d0c42a330169)) + +* Formatting changes to helper - Name clusters ([`5a6079f`](https://github.com/NIDAP-Community/SCWorkflow/commit/5a6079fd0cb22dfa4cf99ef1c8094aa3d7a6f2b2)) + +* Formatting changes to helper - Name clusters ([`cfc8b69`](https://github.com/NIDAP-Community/SCWorkflow/commit/cfc8b69ae8abd72f44765578cfa166a73a1c1f34)) + +* Formatting changes to helper-Heatmap ([`abd3f09`](https://github.com/NIDAP-Community/SCWorkflow/commit/abd3f09edd476e89fbbae0c6dccda68594527d8d)) + +* Formatting changes to helper-Heatmap ([`1ca0e49`](https://github.com/NIDAP-Community/SCWorkflow/commit/1ca0e4956832a0f9bccc829032fce3ecdb386532)) + +* Formatting changes to helper-dotplot by Metadata ([`321e619`](https://github.com/NIDAP-Community/SCWorkflow/commit/321e6195510a8a31c8e7e7d6b233e3835b9aa5cf)) + +* Formatting changes to helper-dotplot by Metadata ([`69653cb`](https://github.com/NIDAP-Community/SCWorkflow/commit/69653cbcff156bc239c794ad6a6d214bc8154959)) + +* Formatting changes to helper 3D-tSNE ([`8be697c`](https://github.com/NIDAP-Community/SCWorkflow/commit/8be697c9fba08d28915f48bbd43ca796067262f9)) + +* Formatting changes to helper 3D-tSNE ([`c1835c2`](https://github.com/NIDAP-Community/SCWorkflow/commit/c1835c2ac1f69a9b91ec83e585327b34b0b28c4a)) + +* Formatting changes to Dotplot by Metadata ([`7dbbc99`](https://github.com/NIDAP-Community/SCWorkflow/commit/7dbbc996873e3797a97938e7e0cf868d3928e3c4)) + +* Formatting changes to Dotplot by Metadata ([`d994b6c`](https://github.com/NIDAP-Community/SCWorkflow/commit/d994b6c4a929ee0febb657c644bc1512e0c48aeb)) + +* Code changes to Name clusters and formatting ([`70a9fc2`](https://github.com/NIDAP-Community/SCWorkflow/commit/70a9fc2b33c96842c417fd749d26f0cda7b54550)) + +* Code changes to Name clusters and formatting ([`bca98aa`](https://github.com/NIDAP-Community/SCWorkflow/commit/bca98aab7957756eb3f5376cc0791f98dc6422a6)) + +* Formatting changes to Heatmap.R ([`e1bd5c7`](https://github.com/NIDAP-Community/SCWorkflow/commit/e1bd5c7c356d7f72d5353adca718453a2d47cc97)) + +* Formatting changes to Heatmap.R ([`f47e847`](https://github.com/NIDAP-Community/SCWorkflow/commit/f47e847864ba36e59dcf3f0b25391de56be4b5c7)) + +* Add files via upload + +replace image file ([`7bf9b80`](https://github.com/NIDAP-Community/SCWorkflow/commit/7bf9b80f99b8a34539d3d97defa8c6b8d3aa0851)) + +* Add files via upload + +replace image file ([`542b65d`](https://github.com/NIDAP-Community/SCWorkflow/commit/542b65d67eff50c06a091bb8a1e8f4d340aac70a)) + +* Update README.md + +additional text ([`700ad07`](https://github.com/NIDAP-Community/SCWorkflow/commit/700ad0729f44f9f2e9a3ecae2aacc774ee7761da)) + +* Update README.md + +additional text ([`2e0feec`](https://github.com/NIDAP-Community/SCWorkflow/commit/2e0feec18ec65a4fece43f2ed8b103cf031e705c)) + +* Update README.md + +Added image. ([`7694f8d`](https://github.com/NIDAP-Community/SCWorkflow/commit/7694f8da62160f7dd5aed8ac955378b2433ba32b)) + +* Update README.md + +Added image. ([`f28a6a7`](https://github.com/NIDAP-Community/SCWorkflow/commit/f28a6a79f5f2b3d147c940d7ff95bd9622b0f660)) + +* Add files via upload + +Workflow image ([`f93175b`](https://github.com/NIDAP-Community/SCWorkflow/commit/f93175be34db55c5b7fe6ecd5fbd3a095e0adb7d)) + +* Add files via upload + +Workflow image ([`433a89d`](https://github.com/NIDAP-Community/SCWorkflow/commit/433a89dc2b811a6543163c61cc810549f4b53392)) + +* Create README.md ([`70aa926`](https://github.com/NIDAP-Community/SCWorkflow/commit/70aa926c5b9f957e55c177c831d6735a86420c6f)) + +* Create README.md ([`0b318e5`](https://github.com/NIDAP-Community/SCWorkflow/commit/0b318e5c4bf432eba92d779bfc553610c8f6bccd)) + +* formatting for dual labeling ([`2e7d12c`](https://github.com/NIDAP-Community/SCWorkflow/commit/2e7d12c0d8ccec5f18d6082bc42cccd601cfe53d)) + +* formatting for dual labeling ([`f782199`](https://github.com/NIDAP-Community/SCWorkflow/commit/f782199da20fbec758b3c8d72b7ed40fc29b31cd)) + +* format 3D-tSNE function ([`fe97cb0`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe97cb010a4bb5c3f6d369dfc9d63df83471b010)) + +* format 3D-tSNE function ([`4ae1381`](https://github.com/NIDAP-Community/SCWorkflow/commit/4ae1381a3559078de6d167f8d77126ae5856d3e4)) + +* Update gitflow-R-action.yml ([`9bdcf6c`](https://github.com/NIDAP-Community/SCWorkflow/commit/9bdcf6cc508f36381a69d2c6b23d3d85feb5bac5)) + +* Update gitflow-R-action.yml ([`7799784`](https://github.com/NIDAP-Community/SCWorkflow/commit/77997845acedddbbd3cb929c4320fbd1c1f5cff9)) + +* update Dotplot conflict ([`0ea5f42`](https://github.com/NIDAP-Community/SCWorkflow/commit/0ea5f42eeeebd906d6079b80f3ae85061c223308)) + +* update Dotplot conflict ([`e99ac9b`](https://github.com/NIDAP-Community/SCWorkflow/commit/e99ac9b4c0b20e109b5e1b3b73ec64a19c56ad8d)) + +* Update ([`aa71a29`](https://github.com/NIDAP-Community/SCWorkflow/commit/aa71a29349c80f0043953e99b57f5d426f899fda)) + +* Update ([`3dfcdb5`](https://github.com/NIDAP-Community/SCWorkflow/commit/3dfcdb523c8c0df0f286dccfce43889cfda0015f)) + +* Adding action files and dockerfiles ([`d215fdb`](https://github.com/NIDAP-Community/SCWorkflow/commit/d215fdb2b267b27ce325b70456b62e5f31f9b0e5)) + +* Adding action files and dockerfiles ([`1cbab8e`](https://github.com/NIDAP-Community/SCWorkflow/commit/1cbab8ea076944a7867f0337f69517f993e57ffc)) + +* Resolving git conflict in Recluster. ([`0c70bdb`](https://github.com/NIDAP-Community/SCWorkflow/commit/0c70bdb53af3a78eab291d2a22c3c2de78d113c5)) + +* Resolving git conflict in Recluster. ([`28d7b96`](https://github.com/NIDAP-Community/SCWorkflow/commit/28d7b967d51165428f82f1b167ce9f5ca93f2153)) + +* committing in-progress Sugarloaf updates to Recluster SO template. ([`ed03d46`](https://github.com/NIDAP-Community/SCWorkflow/commit/ed03d46b4f0b5ac7908f2213992ce8c1d292de48)) + +* committing in-progress Sugarloaf updates to Recluster SO template. ([`446af26`](https://github.com/NIDAP-Community/SCWorkflow/commit/446af265188eca92aa687196818c2becd8e93ec8)) + +* changed fixture filenames ([`71ebc2f`](https://github.com/NIDAP-Community/SCWorkflow/commit/71ebc2f5d3b6db15903dc4f31fdbcce46eae64fb)) + +* changed fixture filenames ([`6e3284c`](https://github.com/NIDAP-Community/SCWorkflow/commit/6e3284cf1143ee7b514e8ada8dc27160fe306efc)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`f5590de`](https://github.com/NIDAP-Community/SCWorkflow/commit/f5590debbfbaa8eca49d12140f99853e79b018c6)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`219746d`](https://github.com/NIDAP-Community/SCWorkflow/commit/219746d22a7d9f1f0f68bf094f3d949840d7d9b1)) + +* edit code formatting ([`1a7a120`](https://github.com/NIDAP-Community/SCWorkflow/commit/1a7a120a33b90fa59cb21a404838547698e254ff)) + +* edit code formatting ([`2676adc`](https://github.com/NIDAP-Community/SCWorkflow/commit/2676adc28cb5010d9af3158f6b08dbcf2eff8762)) + +* Initial TestThat for Recluster + +Includes tests on all 5 datasets testing type, as well as one test on MouseTEC that tests UMAP instead of default TSNE. ([`4da52a7`](https://github.com/NIDAP-Community/SCWorkflow/commit/4da52a74cb700f1bbee48cd926e7f694765160af)) + +* Initial TestThat for Recluster + +Includes tests on all 5 datasets testing type, as well as one test on MouseTEC that tests UMAP instead of default TSNE. ([`da7c560`](https://github.com/NIDAP-Community/SCWorkflow/commit/da7c5605e7934cfb2f669bbbfb044ab22c56c67e)) + +* Initial R4 functionalization. ([`7558379`](https://github.com/NIDAP-Community/SCWorkflow/commit/7558379452059d87836352262edf41511f504a82)) + +* Initial R4 functionalization. ([`84acb8c`](https://github.com/NIDAP-Community/SCWorkflow/commit/84acb8c20c24c173cd905aba5c74babfc5559024)) + +* Add files via upload + +Initial release ([`3eca944`](https://github.com/NIDAP-Community/SCWorkflow/commit/3eca9442a8052cdcd7fb0ab3c235131554599f07)) + +* Add files via upload + +Initial release ([`deafd1c`](https://github.com/NIDAP-Community/SCWorkflow/commit/deafd1c68aa51d08d1ce31096597b54d19fe242d)) + +* Add files via upload + +Initial release ([`77b96a6`](https://github.com/NIDAP-Community/SCWorkflow/commit/77b96a63255f02296966776814613107c526f6b9)) + +* Add files via upload + +Initial release ([`91b7594`](https://github.com/NIDAP-Community/SCWorkflow/commit/91b7594d10c679ae36365b8b35a7a87662b8248c)) + +* Add files via upload + +Initial commit ([`4a74c89`](https://github.com/NIDAP-Community/SCWorkflow/commit/4a74c8944da17a9ae6833b7ffaf715314b9bc755)) + +* Add files via upload + +Initial commit ([`9d694ae`](https://github.com/NIDAP-Community/SCWorkflow/commit/9d694aec07737fa1ad276b7badfe02e6cf29002f)) + +* Add files via upload + +Initial release ([`fa2e7c3`](https://github.com/NIDAP-Community/SCWorkflow/commit/fa2e7c3e6da290fdcf5147066d0bfb403ff23441)) + +* Add files via upload + +Initial release ([`25d5857`](https://github.com/NIDAP-Community/SCWorkflow/commit/25d58577aeca4133e9cb762466c70cf97082f3eb)) + +* Add files via upload + +Initial release ([`69d1dcf`](https://github.com/NIDAP-Community/SCWorkflow/commit/69d1dcf1bc510a337d10d51b217de9292c144717)) + +* Add files via upload + +Initial release ([`900ab4c`](https://github.com/NIDAP-Community/SCWorkflow/commit/900ab4cc16feda4611768571df27e397f0050bdf)) + +* Delete DEG_Gene_Expression_Markers.R ([`5496f85`](https://github.com/NIDAP-Community/SCWorkflow/commit/5496f850e45eef13a887f4ffa25ff34b76df9b22)) + +* Delete DEG_Gene_Expression_Markers.R ([`fe406ea`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe406eaed3e3d73bd2c9f207f6512476df62effc)) + +* Add files via upload + +Initial release ([`ea9b264`](https://github.com/NIDAP-Community/SCWorkflow/commit/ea9b2641eabb2c0e02d7fc03c1d218695b45d8c5)) + +* Add files via upload + +Initial release ([`45fd8d2`](https://github.com/NIDAP-Community/SCWorkflow/commit/45fd8d23fff162becb7afac8fd32bc9d56286cae)) + +* Add files via upload + +Initial release ([`c2e8e8c`](https://github.com/NIDAP-Community/SCWorkflow/commit/c2e8e8c6a47acdece3f05ad4b6d075fabd8d0d3d)) + +* Add files via upload + +Initial release ([`fee817b`](https://github.com/NIDAP-Community/SCWorkflow/commit/fee817b21251e692b9ebf1cd44dc397b7b8e76e6)) + +* Add files via upload + +Initial release ([`55fd6c9`](https://github.com/NIDAP-Community/SCWorkflow/commit/55fd6c9c0681ae4b3f6cc4b36a873088217d7eae)) + +* Add files via upload + +Initial release ([`a59a2bc`](https://github.com/NIDAP-Community/SCWorkflow/commit/a59a2bc900425384aee680aa5895f99d336fb208)) + +* Add files via upload + +Initial release ([`ad72a95`](https://github.com/NIDAP-Community/SCWorkflow/commit/ad72a95aae5f2d5646ff306b8dba3299484b9764)) + +* Add files via upload + +Initial release ([`aac8353`](https://github.com/NIDAP-Community/SCWorkflow/commit/aac83538b3fbc01af9b69f16debbd52d06ac9d2d)) + +* Add files via upload + +Initial release ([`a0c5606`](https://github.com/NIDAP-Community/SCWorkflow/commit/a0c56067f73391378da18a3d40f200e2c10b3e96)) + +* Add files via upload + +Initial release ([`c31a9f2`](https://github.com/NIDAP-Community/SCWorkflow/commit/c31a9f280f666d97c1524a234981dabc0dc38af5)) + +* Delete DeletMeAgain ([`d2436b6`](https://github.com/NIDAP-Community/SCWorkflow/commit/d2436b64b0c24c3fb1b403cd4ee0950fed9f18a8)) + +* Delete DeletMeAgain ([`4514dae`](https://github.com/NIDAP-Community/SCWorkflow/commit/4514dae49f2177072b72ed79a1cf87a7e8facadf)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`9ce4628`](https://github.com/NIDAP-Community/SCWorkflow/commit/9ce46281a467869a5633b6240388f2cb75545836)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`2a53ebc`](https://github.com/NIDAP-Community/SCWorkflow/commit/2a53ebc3a9a3a6bb289550d2da9b9b9cba71e153)) + +* CommLine Test ([`82aa0fa`](https://github.com/NIDAP-Community/SCWorkflow/commit/82aa0fa562626f6bc34f647624d339a6832c661f)) + +* CommLine Test ([`811846c`](https://github.com/NIDAP-Community/SCWorkflow/commit/811846c1d86d6affe8d198b97e37b49d98971af9)) + +* Delete Delete.Me + +Following the orders ([`6b41c15`](https://github.com/NIDAP-Community/SCWorkflow/commit/6b41c15496785b6e39fc6d395206d3843efa147b)) + +* Delete Delete.Me + +Following the orders ([`1f82ca7`](https://github.com/NIDAP-Community/SCWorkflow/commit/1f82ca7bc7db32b35f541bd5b538ff8b53761378)) + +* Add files via upload + +DELETE IMMEDIATELY!!! ([`986326c`](https://github.com/NIDAP-Community/SCWorkflow/commit/986326c1d89ce65f337723bfb2621b77f853b513)) + +* Add files via upload + +DELETE IMMEDIATELY!!! ([`ea68f0a`](https://github.com/NIDAP-Community/SCWorkflow/commit/ea68f0a9ea7cdd7382b690b17c52ffdf5bbf1e09)) + +* Initial release ([`2c12ea5`](https://github.com/NIDAP-Community/SCWorkflow/commit/2c12ea58907fef9c5ea641631f4f7a98d3d08e0f)) + +* Initial release ([`a294bd3`](https://github.com/NIDAP-Community/SCWorkflow/commit/a294bd3671532e66a9b04f24b48504ecdb0e90eb)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`a276a80`](https://github.com/NIDAP-Community/SCWorkflow/commit/a276a80f40c5344329a4d9186c5ab1b515e332ae)) + +* Recover code from past commit ([`184c917`](https://github.com/NIDAP-Community/SCWorkflow/commit/184c91734456842af2f2635e4c9e6137f4e02c05)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +update function and parameter names. ([`83fbdd1`](https://github.com/NIDAP-Community/SCWorkflow/commit/83fbdd1b7b90a690b6d2c07a5f4932f2dace89c6)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +update function and parameter names. ([`6f46e6e`](https://github.com/NIDAP-Community/SCWorkflow/commit/6f46e6e99ba0b2d5961262d4d21f21a22137c847)) + +* reformat function and parameter names ([`0dfca6c`](https://github.com/NIDAP-Community/SCWorkflow/commit/0dfca6c9ccece6f8c5dd25736ae5e10dfd95c914)) + +* reformat function and parameter names ([`c81712f`](https://github.com/NIDAP-Community/SCWorkflow/commit/c81712f1d4bbea2d95356da1529745ec3d318e5e)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`eac38ce`](https://github.com/NIDAP-Community/SCWorkflow/commit/eac38ce7e8bce8dcb8d590412d38495127376ab6)) + +* Merge pull request #9 from NIDAP-Community/Rui_resolve_conflict + +Resolve conflicts ([`7fa7db9`](https://github.com/NIDAP-Community/SCWorkflow/commit/7fa7db9e67394fcbe625b6dc5b92f31019f08900)) + +* Merge pull request #9 from NIDAP-Community/Rui_resolve_conflict + +Resolve conflicts ([`7839aba`](https://github.com/NIDAP-Community/SCWorkflow/commit/7839abad2bcb681fabdb146d938585d1bed15d35)) + +* Resolve conflicts ([`d516cd2`](https://github.com/NIDAP-Community/SCWorkflow/commit/d516cd2e37ed5c69b046a3cb1b849d7cf9978749)) + +* Resolve conflicts ([`8c776b1`](https://github.com/NIDAP-Community/SCWorkflow/commit/8c776b16ef9bfc0adff27fa2b7be3d3b3eac6f69)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`0a5942a`](https://github.com/NIDAP-Community/SCWorkflow/commit/0a5942a2caf774b36b3126327ce7bee1c098cbac)) + +* Update main on local branch ([`b27d7af`](https://github.com/NIDAP-Community/SCWorkflow/commit/b27d7af7b9af24e8dc0fcda214991b9b233cf7c3)) + +* Merge pull request #8 from NIDAP-Community/phi_test + +Phi test ([`2d5e7ec`](https://github.com/NIDAP-Community/SCWorkflow/commit/2d5e7ec6918f07a2193c06570705c71b6063a45e)) + +* Merge pull request #8 from NIDAP-Community/phi_test + +Phi test ([`87fdb1a`](https://github.com/NIDAP-Community/SCWorkflow/commit/87fdb1a55950e2fc40646cfd93aa819a79191672)) + +* resolve conflict ([`b4d8548`](https://github.com/NIDAP-Community/SCWorkflow/commit/b4d8548a7c8f28b0e8c590739401d739361b0aba)) + +* resolve conflict ([`a3ddae1`](https://github.com/NIDAP-Community/SCWorkflow/commit/a3ddae14cb2045f2a7e44621df63726a3c89bd46)) + +* Merge branch 'main' into phi_test ([`e22b5e6`](https://github.com/NIDAP-Community/SCWorkflow/commit/e22b5e658d8395ead902213a80514de0d7a3ac0f)) + +* Add ignore h5 files in gitignore ([`55c3167`](https://github.com/NIDAP-Community/SCWorkflow/commit/55c3167d6b21caa20616baa9156e23df589b784a)) + +* resolve conflicts ([`43976ba`](https://github.com/NIDAP-Community/SCWorkflow/commit/43976babe27a51247f14236a6a9cd2f6aa5b7d0e)) + +* resolve error ([`d59173b`](https://github.com/NIDAP-Community/SCWorkflow/commit/d59173b5dd947d4826fdac5c6dbc014056983004)) + +* Update current directory ([`f7e242b`](https://github.com/NIDAP-Community/SCWorkflow/commit/f7e242baf32ff46592d94e682de67c23024acc37)) + +* Downsampled CITEseq ([`bdfa1f3`](https://github.com/NIDAP-Community/SCWorkflow/commit/bdfa1f363e094ed088aff3f3609eb51f0dd08a25)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main +Correct CITEseq Downsmple ([`4d643f4`](https://github.com/NIDAP-Community/SCWorkflow/commit/4d643f48f658432e0f32967f21277150d0077193)) + +* correct CITEseq Downsample ([`3f032fd`](https://github.com/NIDAP-Community/SCWorkflow/commit/3f032fdc01d59663fd6d2b83acc095ed96f53525)) + +* helper script for 3D-tsne ([`12ee9f3`](https://github.com/NIDAP-Community/SCWorkflow/commit/12ee9f37e7cefbb16d9a2b32eaaab58bc691f8a6)) + +* helper script for 3D-tsne ([`30b7146`](https://github.com/NIDAP-Community/SCWorkflow/commit/30b7146f0a89f5ab7f8ae790ea33038fe5ca58de)) + +* helper script for 3D-tsne ([`a901830`](https://github.com/NIDAP-Community/SCWorkflow/commit/a9018306ec29931da2cf3caad933529cc2ed515b)) + +* new tests ([`1ce5664`](https://github.com/NIDAP-Community/SCWorkflow/commit/1ce5664562688138f348cf33aa639b99502aaa73)) + +* new tests ([`29d75bc`](https://github.com/NIDAP-Community/SCWorkflow/commit/29d75bc52ed7f4e77073937c2ec4f148555e1e43)) + +* new tests ([`9cb29d2`](https://github.com/NIDAP-Community/SCWorkflow/commit/9cb29d2c6df12638204e92947459cdda8fd04a13)) + +* unit test Jing templates ([`bb48481`](https://github.com/NIDAP-Community/SCWorkflow/commit/bb48481b4adf445da388275df9ccb101af84a39c)) + +* unit test Jing templates ([`63a6636`](https://github.com/NIDAP-Community/SCWorkflow/commit/63a6636e1fa96f94e0f22a7eec11c0a257693d70)) + +* unit test Jing templates ([`97d74ca`](https://github.com/NIDAP-Community/SCWorkflow/commit/97d74cabeb40579e18f7b12d4ade47c4a9940add)) + +* NSCLCmulti SO ([`3d42d4a`](https://github.com/NIDAP-Community/SCWorkflow/commit/3d42d4ac18e0d4878523daea5f8e3e7b2dc4401d)) + +* NSCLCmulti SO ([`540bdf3`](https://github.com/NIDAP-Community/SCWorkflow/commit/540bdf3058aa47200ed12b25f844c5bb256e13d3)) + +* NSCLCmulti SO ([`6e8e596`](https://github.com/NIDAP-Community/SCWorkflow/commit/6e8e5964a642435360691632a86a4483b5ae9240)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Update Chariou Single R SO and BRCA combin and Renormalize ([`e851077`](https://github.com/NIDAP-Community/SCWorkflow/commit/e8510773daba3c1b16530e7b56fe7b9928e128d9)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Update Chariou Single R SO and BRCA combin and Renormalize ([`072096f`](https://github.com/NIDAP-Community/SCWorkflow/commit/072096f591db76fd8eeaf4c2633924569f781f1e)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Update Chariou Single R SO and BRCA combin and Renormalize ([`1a8fbf8`](https://github.com/NIDAP-Community/SCWorkflow/commit/1a8fbf863209682227e2eb8de8f6db7faa5e0700)) + +* BRCA comb_Renorm ([`5e3985b`](https://github.com/NIDAP-Community/SCWorkflow/commit/5e3985bc35966d496444733a65f971b63c05bb92)) + +* BRCA comb_Renorm ([`9fb63a3`](https://github.com/NIDAP-Community/SCWorkflow/commit/9fb63a3908a7ca45c90987eba91f642dbb79070a)) + +* BRCA comb_Renorm ([`6d4c05a`](https://github.com/NIDAP-Community/SCWorkflow/commit/6d4c05a4ea32f4eb7cfe2af65c5bf0f47cea9f2f)) + +* unit tests for Name Clusters ([`95cf6f5`](https://github.com/NIDAP-Community/SCWorkflow/commit/95cf6f53ccfdb526ee8ba9f62c55c3169b830af8)) + +* unit tests for Name Clusters ([`c7ed110`](https://github.com/NIDAP-Community/SCWorkflow/commit/c7ed110cede7462336a192a703117a62e45509d3)) + +* unit tests for Name Clusters ([`43859bd`](https://github.com/NIDAP-Community/SCWorkflow/commit/43859bd30ca808dd822d3eab7899c34caa411b6e)) + +* unit test for dual labeling ([`46dd45e`](https://github.com/NIDAP-Community/SCWorkflow/commit/46dd45e1180449b5d8857c7d0ac66b30c6f13d2d)) + +* unit test for dual labeling ([`3f07269`](https://github.com/NIDAP-Community/SCWorkflow/commit/3f072694d62436c9f7dc52cad4eb7c981ae04b4e)) + +* unit test for dual labeling ([`5c85127`](https://github.com/NIDAP-Community/SCWorkflow/commit/5c85127e7b3928d518f613f0de04982019e41493)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +merging new changes ([`b8b1eda`](https://github.com/NIDAP-Community/SCWorkflow/commit/b8b1edab05cbb3d7baf2e1ccc13e1c0ae040d492)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +merging new changes ([`09c8f46`](https://github.com/NIDAP-Community/SCWorkflow/commit/09c8f466f2e9043e98328897e55cbb363ec8f56f)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +merging new changes ([`729b051`](https://github.com/NIDAP-Community/SCWorkflow/commit/729b05109f59c50a851806f533c3f530d4be8f34)) + +* unit tests for heatmap, dotplot ([`7659b83`](https://github.com/NIDAP-Community/SCWorkflow/commit/7659b83043c3ead872c5f04ebfdebaa03ea86a87)) + +* unit tests for heatmap, dotplot ([`b81287c`](https://github.com/NIDAP-Community/SCWorkflow/commit/b81287c931937f667ca21eba3a83fbf2b0fc6b36)) + +* unit tests for heatmap, dotplot ([`5414455`](https://github.com/NIDAP-Community/SCWorkflow/commit/5414455acd51cb5a6a4dfb019b78fd1dd3cd96c9)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +adding NSCLC_Single SOs ([`152cf11`](https://github.com/NIDAP-Community/SCWorkflow/commit/152cf11875bf6714a5b62a1cca9bddc2a857a06a)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +adding NSCLC_Single SOs ([`b0ea506`](https://github.com/NIDAP-Community/SCWorkflow/commit/b0ea50632ff271bb9ff61394ce2f5c7434e4687e)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +adding NSCLC_Single SOs ([`d83c561`](https://github.com/NIDAP-Community/SCWorkflow/commit/d83c5614ae7a0e7fbdbf0e34d86ebf57620661ea)) + +* NSCLC_single SO ([`df265cd`](https://github.com/NIDAP-Community/SCWorkflow/commit/df265cd5c669acfb630032a56b8244a1e5c09a53)) + +* NSCLC_single SO ([`ad62924`](https://github.com/NIDAP-Community/SCWorkflow/commit/ad6292416c773bb1448d2e4d951b58f24d415b20)) + +* NSCLC_single SO ([`7d0b242`](https://github.com/NIDAP-Community/SCWorkflow/commit/7d0b242cb7f3f4319bb352fbf349c98b0e5977cc)) + +* add dotplot tests ([`57166ba`](https://github.com/NIDAP-Community/SCWorkflow/commit/57166ba5d2165640fd37c9b9c28d56fba4f169b9)) + +* add dotplot tests ([`b2bd01e`](https://github.com/NIDAP-Community/SCWorkflow/commit/b2bd01ef5ed82fd3f72bb08bc2a0e40417067a1c)) + +* add dotplot tests ([`69fec28`](https://github.com/NIDAP-Community/SCWorkflow/commit/69fec28bc633cc8caa99016b58922dd876216b82)) + +* unit test for Dotplot ([`a94f7ba`](https://github.com/NIDAP-Community/SCWorkflow/commit/a94f7ba6a86a3719b8f3d6887050294b4e0605f0)) + +* unit test for Dotplot ([`13fb938`](https://github.com/NIDAP-Community/SCWorkflow/commit/13fb938a193a46d9dc8ddf94f8724798c8b94941)) + +* unit test for Dotplot ([`9c67e81`](https://github.com/NIDAP-Community/SCWorkflow/commit/9c67e81f790b6655047106487f04da17459ea6f3)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +new error messaging added ([`b09cb64`](https://github.com/NIDAP-Community/SCWorkflow/commit/b09cb64dcc45dbbc6912567b16ec1b13b18ec69f)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +new error messaging added ([`d266d5e`](https://github.com/NIDAP-Community/SCWorkflow/commit/d266d5e51ef323c3070828eab2f1d61f8e507ac5)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +new error messaging added ([`c0aaa1b`](https://github.com/NIDAP-Community/SCWorkflow/commit/c0aaa1b6f11e642388cc8e1ba0af8c676fe69e91)) + +* new error messaging to dotplot ([`9742c5f`](https://github.com/NIDAP-Community/SCWorkflow/commit/9742c5f72f93f3f0a802a7aa7c13988f51e25752)) + +* new error messaging to dotplot ([`a9bf495`](https://github.com/NIDAP-Community/SCWorkflow/commit/a9bf4959a2dabac1811208665a2b8eb809a72d13)) + +* new error messaging to dotplot ([`93a3a06`](https://github.com/NIDAP-Community/SCWorkflow/commit/93a3a068ec6e9b0db55a4d7172a0aaddccacef61)) + +* changes to dotplot ([`1849346`](https://github.com/NIDAP-Community/SCWorkflow/commit/18493467cd6873d473b5e6b69b536d0014a057a9)) + +* changes to dotplot ([`b52dc29`](https://github.com/NIDAP-Community/SCWorkflow/commit/b52dc2959157851259ac655609e644447e248375)) + +* changes to dotplot ([`d4c0824`](https://github.com/NIDAP-Community/SCWorkflow/commit/d4c0824c610c1488be10d4b07961d7108ded7a66)) + +* Charou SO ([`dccaf54`](https://github.com/NIDAP-Community/SCWorkflow/commit/dccaf544fc98732a12b4cce2985703f08e6f9ece)) + +* Charou SO ([`95b3421`](https://github.com/NIDAP-Community/SCWorkflow/commit/95b34211669fa50f868cb5d66979466b606a3fa8)) + +* Charou SO ([`1f3ca66`](https://github.com/NIDAP-Community/SCWorkflow/commit/1f3ca66c715d6b354aab468ab111a54a9110ef7b)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + .gitignore + DESCRIPTION + tests/testthat/test_Filter_and_QC.R ([`c58b92e`](https://github.com/NIDAP-Community/SCWorkflow/commit/c58b92e5ad41fca89b35884b241d2bdbbdd0cc54)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + .gitignore + DESCRIPTION + tests/testthat/test_Filter_and_QC.R ([`8a845be`](https://github.com/NIDAP-Community/SCWorkflow/commit/8a845be4ddca9d493671a82025812fa26ad8f12a)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main + +Conflicts: + .gitignore + DESCRIPTION + tests/testthat/test_Filter_and_QC.R ([`bb18f4c`](https://github.com/NIDAP-Community/SCWorkflow/commit/bb18f4cdf758d45395be6549d0b3b45bfc1de5f8)) + +* TEC SO ([`08d1f47`](https://github.com/NIDAP-Community/SCWorkflow/commit/08d1f47c111693910c38978e70b9b7c5a50bc95c)) + +* TEC SO ([`11f66b3`](https://github.com/NIDAP-Community/SCWorkflow/commit/11f66b31b0cf0c201d49fa2b2192aed659673edf)) + +* TEC SO ([`c40054d`](https://github.com/NIDAP-Community/SCWorkflow/commit/c40054da0e0c02830c920003481404e3b70c8b90)) + +* NAMESPACE removed from merge + +The conda package build requires a NAMESPACE file to be added, which is being ignored during the dev cycle. ([`e7ac125`](https://github.com/NIDAP-Community/SCWorkflow/commit/e7ac12564f12397792aaf2de764d9c8d7df43e2b)) + +* NAMESPACE removed from merge + +The conda package build requires a NAMESPACE file to be added, which is being ignored during the dev cycle. ([`0027492`](https://github.com/NIDAP-Community/SCWorkflow/commit/002749273e038009336e5a1f41e8ae5855f2b3f1)) + +* NAMESPACE removed from merge + +The conda package build requires a NAMESPACE file to be added, which is being ignored during the dev cycle. ([`4f3bbc8`](https://github.com/NIDAP-Community/SCWorkflow/commit/4f3bbc8a471d59cedb03b34f776bcc5fa366534a)) + +* Merge pull request #7 from NIDAP-Community/dev_release_dec_13_22 + +Dev release dec 13 22 ([`02999db`](https://github.com/NIDAP-Community/SCWorkflow/commit/02999db0f5638af7b48ce86507a11f867ab3ffcf)) + +* Merge pull request #7 from NIDAP-Community/dev_release_dec_13_22 + +Dev release dec 13 22 ([`6ec32fa`](https://github.com/NIDAP-Community/SCWorkflow/commit/6ec32faa7ed0fbfe64ff4fdad11678ef730308de)) + +* Merge pull request #7 from NIDAP-Community/dev_release_dec_13_22 + +Dev release dec 13 22 ([`2e0f434`](https://github.com/NIDAP-Community/SCWorkflow/commit/2e0f4340adb90acea67ee779247d33e9c7adedb5)) + +* Initial Commit for sprint 5 Functions. Including change to DESCRIPTION file ([`4384dd1`](https://github.com/NIDAP-Community/SCWorkflow/commit/4384dd10b65c004e21aa63b4b9ba2125baeb341d)) + +* Initial Commit for sprint 5 Functions. Including change to DESCRIPTION file ([`eeb7741`](https://github.com/NIDAP-Community/SCWorkflow/commit/eeb7741232b73ecda6cc42d333fbbbe4835737cf)) + +* Initial Commit for sprint 5 Functions. Including change to DESCRIPTION file ([`90120cb`](https://github.com/NIDAP-Community/SCWorkflow/commit/90120cbcbae446b01e15a44b6f6aac0576fb9c36)) + +* Minor fix for codes to pass Check ([`3b4f7ee`](https://github.com/NIDAP-Community/SCWorkflow/commit/3b4f7ee3981d421997d89fd37c19369d581c5814)) + +* Minor fix for codes to pass Check ([`29de7d6`](https://github.com/NIDAP-Community/SCWorkflow/commit/29de7d65cd67655795b4328aede4ac496f0109d2)) + +* Minor fix for codes to pass Check ([`b65e314`](https://github.com/NIDAP-Community/SCWorkflow/commit/b65e31479213ab0e9b616220c2bb11c7c79355cb)) + +* Updated tests ([`733e2ec`](https://github.com/NIDAP-Community/SCWorkflow/commit/733e2ec2b144dbad2c711d993f888a0343c15448)) + +* Updated tests ([`c9ed47b`](https://github.com/NIDAP-Community/SCWorkflow/commit/c9ed47b6bcec500e0b86b0ed4dbdbd385ed720e7)) + +* Updated tests ([`97e18e5`](https://github.com/NIDAP-Community/SCWorkflow/commit/97e18e54032fce431a78d409166270e127d37a07)) + +* update NameClusters function and test ([`128fbb4`](https://github.com/NIDAP-Community/SCWorkflow/commit/128fbb4181b9d610138871b086fa979eedba5c53)) + +* update NameClusters function and test ([`3f90257`](https://github.com/NIDAP-Community/SCWorkflow/commit/3f90257d06499293292551eddda7d2922af3a98a)) + +* update NameClusters function and test ([`c88161e`](https://github.com/NIDAP-Community/SCWorkflow/commit/c88161e30ff904881a5d89fbaac50363ae0e1168)) + +* update test-Metadata_Table.R ([`a37474b`](https://github.com/NIDAP-Community/SCWorkflow/commit/a37474b259a04cf12a9672731c2efdaec5218d4d)) + +* update test-Metadata_Table.R ([`4257cc6`](https://github.com/NIDAP-Community/SCWorkflow/commit/4257cc6709f0180f28deecf0cb81f33d7679e1a4)) + +* update test-Metadata_Table.R ([`7b2f599`](https://github.com/NIDAP-Community/SCWorkflow/commit/7b2f5995401bd99bd7a65db7356cdfdff6426d31)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`78fc249`](https://github.com/NIDAP-Community/SCWorkflow/commit/78fc249bfc4152d790d614dd87887b0b70dfa894)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`cce3673`](https://github.com/NIDAP-Community/SCWorkflow/commit/cce3673048bb4d3c2bc87862741e0babc08c5bbb)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`986e82b`](https://github.com/NIDAP-Community/SCWorkflow/commit/986e82b54e623e948111c89017ec8b18398a79a6)) + +* small changes in 3D plotter testing ([`74364db`](https://github.com/NIDAP-Community/SCWorkflow/commit/74364dbde68e6dce4ecc3e1d2d904d0fdbf6d7af)) + +* small changes in 3D plotter testing ([`a60aa38`](https://github.com/NIDAP-Community/SCWorkflow/commit/a60aa383f95c410c3227af5dbe5631066695b8bb)) + +* small changes in 3D plotter testing ([`7ac6a75`](https://github.com/NIDAP-Community/SCWorkflow/commit/7ac6a7569b03650cc22469ec19e24bd3d0d2ce2c)) + +* changed heatmap test and added library to heatmap ([`cb33cf2`](https://github.com/NIDAP-Community/SCWorkflow/commit/cb33cf25258a43c30d00fca51509c2d5059c68c4)) + +* changed heatmap test and added library to heatmap ([`bcab3c2`](https://github.com/NIDAP-Community/SCWorkflow/commit/bcab3c2898fc04637ff8a9206594720e4eaad370)) + +* changed heatmap test and added library to heatmap ([`20f7260`](https://github.com/NIDAP-Community/SCWorkflow/commit/20f72606c7955bdf6aaedc2b5fef9418a69b86af)) + +* revised test for dual labeling ([`b5caf02`](https://github.com/NIDAP-Community/SCWorkflow/commit/b5caf02a7086840e5c9beb04a4c176f8249fb600)) + +* revised test for dual labeling ([`0f39220`](https://github.com/NIDAP-Community/SCWorkflow/commit/0f39220815cb092d759fad82ad95f3028a0bbf0f)) + +* revised test for dual labeling ([`d1b47d6`](https://github.com/NIDAP-Community/SCWorkflow/commit/d1b47d66a244dfb6b9ec9a1df3abc023279c31c6)) + +* new doc for dotplot ([`b986ccc`](https://github.com/NIDAP-Community/SCWorkflow/commit/b986cccc6dbe7902710f77e127e2317db6657b4f)) + +* new doc for dotplot ([`800edc4`](https://github.com/NIDAP-Community/SCWorkflow/commit/800edc4c0c0e75be5656f37addfdc621d1cd11a0)) + +* new doc for dotplot ([`acd4514`](https://github.com/NIDAP-Community/SCWorkflow/commit/acd451477d367832c65f8886685b81b648d7306b)) + +* changes to test and added color option ([`493b745`](https://github.com/NIDAP-Community/SCWorkflow/commit/493b745067c74f15f94448da878e2a5be554dde9)) + +* changes to test and added color option ([`b66d7fa`](https://github.com/NIDAP-Community/SCWorkflow/commit/b66d7fa077a034dade7dacd7e59f9da337ff7fcc)) + +* changes to test and added color option ([`69c3c15`](https://github.com/NIDAP-Community/SCWorkflow/commit/69c3c15217edd8248664d035208dca5fe7e66df3)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8863d0d`](https://github.com/NIDAP-Community/SCWorkflow/commit/8863d0dd63f60971fa00595ea7ffce557e078e60)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`63fc3f6`](https://github.com/NIDAP-Community/SCWorkflow/commit/63fc3f62d3dd5e3d7c12ab1c9960eb1341482d06)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8fa25f6`](https://github.com/NIDAP-Community/SCWorkflow/commit/8fa25f603cf12e80cee0bfb660f36669f5c4df47)) + +* add original citation for Pseudobulk.R ([`4293f96`](https://github.com/NIDAP-Community/SCWorkflow/commit/4293f96b1ba14693905e854085270919b67eaa6c)) + +* add original citation for Pseudobulk.R ([`53add2e`](https://github.com/NIDAP-Community/SCWorkflow/commit/53add2eda421c84098a211a3f78365df66567024)) + +* add original citation for Pseudobulk.R ([`7b99980`](https://github.com/NIDAP-Community/SCWorkflow/commit/7b99980ef8056a07deb429f8ee5de973e8ac156e)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`9abcb98`](https://github.com/NIDAP-Community/SCWorkflow/commit/9abcb9827465872b8669b73efa1b8bcb7fe9bb8c)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`940e610`](https://github.com/NIDAP-Community/SCWorkflow/commit/940e6100e49bf82e68af29b397e8e55b48902664)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`fb13a18`](https://github.com/NIDAP-Community/SCWorkflow/commit/fb13a18901449ddcda07b613e522a3512ece99dd)) + +* add functions for heatmap, dotplot, 3d-tsne and dual-labeling ([`0ed4df7`](https://github.com/NIDAP-Community/SCWorkflow/commit/0ed4df7b93dc0ffdf2c7baabcda82be769852e7f)) + +* add functions for heatmap, dotplot, 3d-tsne and dual-labeling ([`74fe2ad`](https://github.com/NIDAP-Community/SCWorkflow/commit/74fe2ad0bba55119b85169f38e2acea5a7cb4c40)) + +* add functions for heatmap, dotplot, 3d-tsne and dual-labeling ([`44338d2`](https://github.com/NIDAP-Community/SCWorkflow/commit/44338d2ded7153f4225c291d4b6f6c3557d2264f)) + +* update ModScore Pseudobulk and DESCRIPTION ([`aefedde`](https://github.com/NIDAP-Community/SCWorkflow/commit/aefedde94a7c983749d46c192f00409d84316cdc)) + +* update ModScore Pseudobulk and DESCRIPTION ([`abe0919`](https://github.com/NIDAP-Community/SCWorkflow/commit/abe0919698d13b7ac858ddd722afd330b3fd4858)) + +* update ModScore Pseudobulk and DESCRIPTION ([`ec95f0c`](https://github.com/NIDAP-Community/SCWorkflow/commit/ec95f0c9e2c50256e3a1b2a6a0dde4e995289209)) + +* fix NAMESPACE @importFrom methods empty ([`756de4e`](https://github.com/NIDAP-Community/SCWorkflow/commit/756de4e20fc88460c89ee0d59ce122b9330a2e1a)) + +* fix NAMESPACE @importFrom methods empty ([`2f2bd5a`](https://github.com/NIDAP-Community/SCWorkflow/commit/2f2bd5ab73e1a38dc5a09ae15651f698624a5697)) + +* fix NAMESPACE @importFrom methods empty ([`5984060`](https://github.com/NIDAP-Community/SCWorkflow/commit/5984060019b07e56bbe4bb9f2cd670e1237e16ff)) + +* Update Description ([`3dcc872`](https://github.com/NIDAP-Community/SCWorkflow/commit/3dcc87260433eca1b5d3553fa8e254da4d2d419a)) + +* Update Description ([`968b204`](https://github.com/NIDAP-Community/SCWorkflow/commit/968b204b166a689dd589bd13b9996cb3bd7149d8)) + +* Update Description ([`1f05120`](https://github.com/NIDAP-Community/SCWorkflow/commit/1f05120590fb709128894a97d8c2ad073450c4ef)) + +* Merge pull request #6 from NIDAP-Community/rui + +Rui ([`c09fa3f`](https://github.com/NIDAP-Community/SCWorkflow/commit/c09fa3f116ae2088f1c988fab5bf6f833c04178f)) + +* Merge pull request #6 from NIDAP-Community/rui + +Rui ([`5d3d3b2`](https://github.com/NIDAP-Community/SCWorkflow/commit/5d3d3b2851d40be8459a19ce0a46978698a0c52a)) + +* Merge pull request #6 from NIDAP-Community/rui + +Rui ([`e71621d`](https://github.com/NIDAP-Community/SCWorkflow/commit/e71621da03673f89187f23461460af7ac6c12af6)) + +* update man docs ([`bf9fb25`](https://github.com/NIDAP-Community/SCWorkflow/commit/bf9fb252d5eb9aec7c40414d2bb6f037967b764b)) + +* update man docs ([`c08890f`](https://github.com/NIDAP-Community/SCWorkflow/commit/c08890fb35ce5d35355c7e3aa1e45546feb8e483)) + +* update man docs ([`98e86e3`](https://github.com/NIDAP-Community/SCWorkflow/commit/98e86e3d71fce87e71089045d7a1d23d93344bfa)) + +* add NameCluster function and tests ([`dbe4d15`](https://github.com/NIDAP-Community/SCWorkflow/commit/dbe4d157527f9ad86080d32dd035e83759ad3f95)) + +* add NameCluster function and tests ([`5812a98`](https://github.com/NIDAP-Community/SCWorkflow/commit/5812a98ceb77c5c8487eb094138fdff38cfca61a)) + +* add NameCluster function and tests ([`233dd75`](https://github.com/NIDAP-Community/SCWorkflow/commit/233dd75d62a3dcf6e9360909464f3712cb3e0b01)) + +* update MetadataTable & SampleNames ([`b3f19d8`](https://github.com/NIDAP-Community/SCWorkflow/commit/b3f19d8af1c99f4864ad8ed149621d8ceed1010a)) + +* update MetadataTable & SampleNames ([`175fa43`](https://github.com/NIDAP-Community/SCWorkflow/commit/175fa43fdd7623b8d6c698b96491b99b35f6863a)) + +* update MetadataTable & SampleNames ([`1d921a2`](https://github.com/NIDAP-Community/SCWorkflow/commit/1d921a2a3bf09cb7e1c59b3ad2b62de497591c1d)) + +* drop unused factor levels in SO_moduleScore.rds ([`3a39fcf`](https://github.com/NIDAP-Community/SCWorkflow/commit/3a39fcfb9293053ee59962dce4e8a91fda59bca8)) + +* drop unused factor levels in SO_moduleScore.rds ([`133d872`](https://github.com/NIDAP-Community/SCWorkflow/commit/133d872043b6676359159d6b307f9c58a515c010)) + +* drop unused factor levels in SO_moduleScore.rds ([`ea6df85`](https://github.com/NIDAP-Community/SCWorkflow/commit/ea6df85b1867fa8cea70c286b032933f3f6059dc)) + +* Jing templates and fixtures ([`08532bf`](https://github.com/NIDAP-Community/SCWorkflow/commit/08532bfc93143d9fd48487c8dd87b448d4d97c6d)) + +* Jing templates and fixtures ([`9f84531`](https://github.com/NIDAP-Community/SCWorkflow/commit/9f845317150e5b3dc59085e17818144a84c11f35)) + +* Jing templates and fixtures ([`150df39`](https://github.com/NIDAP-Community/SCWorkflow/commit/150df393b3018ca41f7cdfae523efb907d6a28f5)) + +* add SampleNames .R and .Rd files ([`9f16588`](https://github.com/NIDAP-Community/SCWorkflow/commit/9f165886a1cf416db814fcd88d5487ee86f7cd1e)) + +* add SampleNames .R and .Rd files ([`780b298`](https://github.com/NIDAP-Community/SCWorkflow/commit/780b2985674f5f119eebc2b30120df1fe385aaf2)) + +* add SampleNames .R and .Rd files ([`446d631`](https://github.com/NIDAP-Community/SCWorkflow/commit/446d631c35f7ca63b2803505b4c6c6b9ef7431db)) + +* update MetadataTable ([`615afdc`](https://github.com/NIDAP-Community/SCWorkflow/commit/615afdce9f8d8d1a9dc070e21ce4975276ff70e3)) + +* update MetadataTable ([`44abfce`](https://github.com/NIDAP-Community/SCWorkflow/commit/44abfcea9cc7582b34637c58ab7f52197374ca29)) + +* update MetadataTable ([`a27296a`](https://github.com/NIDAP-Community/SCWorkflow/commit/a27296a3be39b3e25c203f2d9a22040973c84542)) + +* Unit test added to 3d tsne function ([`3ab8d75`](https://github.com/NIDAP-Community/SCWorkflow/commit/3ab8d75ca1ea5cfaec1c6fda3e41af1394522653)) + +* Unit test added to 3d tsne function ([`6dc17bd`](https://github.com/NIDAP-Community/SCWorkflow/commit/6dc17bdf76c36ec13804d6046de3aaa74cb06464)) + +* Unit test added to 3d tsne function ([`e032618`](https://github.com/NIDAP-Community/SCWorkflow/commit/e0326186c1e4882477ae94e85834c2bb45555894)) + +* rui update 1 ([`9011356`](https://github.com/NIDAP-Community/SCWorkflow/commit/9011356ff61c4d1713180adcbef0e408ecef7046)) + +* rui update 1 ([`81793d8`](https://github.com/NIDAP-Community/SCWorkflow/commit/81793d8c68b73015716537f1923c0cb8b56e815f)) + +* rui update 1 ([`7006ac8`](https://github.com/NIDAP-Community/SCWorkflow/commit/7006ac871a85864940ca008397d1b51ae2486df6)) + +* add man/MetadataTable.Rd ([`af8eedf`](https://github.com/NIDAP-Community/SCWorkflow/commit/af8eedf3672eb4b69f15b5251ad42ab443acfd5a)) + +* add man/MetadataTable.Rd ([`7830b05`](https://github.com/NIDAP-Community/SCWorkflow/commit/7830b05a93b78a204328f4426784e5cc50f42a12)) + +* add man/MetadataTable.Rd ([`61457e8`](https://github.com/NIDAP-Community/SCWorkflow/commit/61457e8c329bfdd07d31532d1978866f935db54b)) + +* upload fixtures/SO_moduleScore.rds ([`78caf56`](https://github.com/NIDAP-Community/SCWorkflow/commit/78caf561adf9ce57256ae4fd9d9a4ddd8dc9b23b)) + +* upload fixtures/SO_moduleScore.rds ([`07bc42d`](https://github.com/NIDAP-Community/SCWorkflow/commit/07bc42db837a92e55e14fd45d67187217970e3ab)) + +* upload fixtures/SO_moduleScore.rds ([`b3b3dc4`](https://github.com/NIDAP-Community/SCWorkflow/commit/b3b3dc4a9f3437f4b7662f8ab8675bbb012716be)) + +* correct DESCRIPTION tibble ([`57847f5`](https://github.com/NIDAP-Community/SCWorkflow/commit/57847f5d9ca233632efd382154383fb90b482f24)) + +* correct DESCRIPTION tibble ([`fe89882`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe89882b524a7eeb7ba39009128e579416d53b04)) + +* correct DESCRIPTION tibble ([`90dd394`](https://github.com/NIDAP-Community/SCWorkflow/commit/90dd39442f6d12af2fa1810f11d2034a176b640e)) + +* update DESCRIPTION ([`f55cf25`](https://github.com/NIDAP-Community/SCWorkflow/commit/f55cf252e73562c1da7aae589671753462963c21)) + +* update DESCRIPTION ([`fcf6d26`](https://github.com/NIDAP-Community/SCWorkflow/commit/fcf6d26b3c281849998bfb9d4bbc13b8db0e0874)) + +* update DESCRIPTION ([`7d3e4ef`](https://github.com/NIDAP-Community/SCWorkflow/commit/7d3e4ef16035e0aa40771c634aee60440155aab5)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`be5cff8`](https://github.com/NIDAP-Community/SCWorkflow/commit/be5cff8ac182dcc78792bb69362f366298b9aeb3)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`0d74815`](https://github.com/NIDAP-Community/SCWorkflow/commit/0d748157c5c8a4f07a33c4f962e90899d482df45)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`58aa02a`](https://github.com/NIDAP-Community/SCWorkflow/commit/58aa02a6e36d5a028e98f10fed18e2dcba1df4dd)) + +* add MetadataTable function ([`42c3569`](https://github.com/NIDAP-Community/SCWorkflow/commit/42c3569db6e71563a56387ac78876dcd4a42a347)) + +* add MetadataTable function ([`50e3af0`](https://github.com/NIDAP-Community/SCWorkflow/commit/50e3af032482b02ec164b77bbc166629d124caae)) + +* add MetadataTable function ([`09b995d`](https://github.com/NIDAP-Community/SCWorkflow/commit/09b995d8e4ed091cf14ba0c46a4a7e8495555b4b)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`01921d5`](https://github.com/NIDAP-Community/SCWorkflow/commit/01921d5766dcdbbefe7f0a74115b1da8660444d9)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`795043f`](https://github.com/NIDAP-Community/SCWorkflow/commit/795043f8a453c157a4e8738cf4b238e6c17a2a64)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`70082b0`](https://github.com/NIDAP-Community/SCWorkflow/commit/70082b01b29cb8c2036cf12abc7f345d2a019bfd)) + +* removed NAMESPACE from repo ([`dc422fa`](https://github.com/NIDAP-Community/SCWorkflow/commit/dc422fad9cc298f3c1d1b3bc2ea8aaab561f4f60)) + +* removed NAMESPACE from repo ([`d528f76`](https://github.com/NIDAP-Community/SCWorkflow/commit/d528f76a2c6a47010600a494f7e1fabc6684750f)) + +* removed NAMESPACE from repo ([`f7f5da5`](https://github.com/NIDAP-Community/SCWorkflow/commit/f7f5da594a29bb7fbd21d75abf2ec5f03403ce45)) + +* removed Rcheck.txt ([`8b70481`](https://github.com/NIDAP-Community/SCWorkflow/commit/8b70481a79e6f299c5e15a997695dfba0b758871)) + +* removed Rcheck.txt ([`e0a6384`](https://github.com/NIDAP-Community/SCWorkflow/commit/e0a6384d75fc13da916973ed856bccde54fca286)) + +* removed Rcheck.txt ([`e23003a`](https://github.com/NIDAP-Community/SCWorkflow/commit/e23003acd3b065b94580ee60c3428a8a6c08c10d)) + +* Added Git ignore and update R check results, 11_16_2022 ([`ce18e14`](https://github.com/NIDAP-Community/SCWorkflow/commit/ce18e14e0a4797ad1e47c0bb7f18b679d3f4cb1c)) + +* Added Git ignore and update R check results, 11_16_2022 ([`e705893`](https://github.com/NIDAP-Community/SCWorkflow/commit/e705893d3b3628d6f55274c53f27cef2d404f756)) + +* Added Git ignore and update R check results, 11_16_2022 ([`1d8a95c`](https://github.com/NIDAP-Community/SCWorkflow/commit/1d8a95c43bb48a0a2eccc3025b3c1e080d66d5b6)) + +* Update DESCRIPTION ([`7fdea8e`](https://github.com/NIDAP-Community/SCWorkflow/commit/7fdea8e7bfa52f3831576ff219049f74e79a6949)) + +* Update DESCRIPTION ([`0d266f4`](https://github.com/NIDAP-Community/SCWorkflow/commit/0d266f4f61b4bb908766c89cbc8fa98350cec4e5)) + +* Update DESCRIPTION ([`5effd23`](https://github.com/NIDAP-Community/SCWorkflow/commit/5effd237fe7b473c21616c8354dfa94554eb9361)) + +* Update cc.genes calls ([`797aca1`](https://github.com/NIDAP-Community/SCWorkflow/commit/797aca16c7da61a0af131138f90075e88c3f69f8)) + +* Update cc.genes calls ([`3db02b2`](https://github.com/NIDAP-Community/SCWorkflow/commit/3db02b2be43067e8c2c4ceb6a4ee740448680b7b)) + +* Update cc.genes calls ([`65f805b`](https://github.com/NIDAP-Community/SCWorkflow/commit/65f805b4a128780c045e5054db540cb5bd5264dd)) + +* Update cc.genes calls ([`8cd8b03`](https://github.com/NIDAP-Community/SCWorkflow/commit/8cd8b03d7f06ba56abcd9ce600bfc50e94209fbf)) + +* Update cc.genes calls ([`82a4244`](https://github.com/NIDAP-Community/SCWorkflow/commit/82a424407d2ea1939a0cdc58b5f574a3f6c4ea5b)) + +* Update cc.genes calls ([`ea8e671`](https://github.com/NIDAP-Community/SCWorkflow/commit/ea8e671f0ac11552e37829886f747e89c9de2e04)) + +* Update library call ([`423fbe9`](https://github.com/NIDAP-Community/SCWorkflow/commit/423fbe9341319db03f67fcc9ae2e24d8c29faeb4)) + +* Update library call ([`f52a89c`](https://github.com/NIDAP-Community/SCWorkflow/commit/f52a89c3ef7f5220a43f356aebd0cdf57abd824e)) + +* Update library call ([`a3d302b`](https://github.com/NIDAP-Community/SCWorkflow/commit/a3d302b738954178150c7bcff6a050da907ddf7e)) + +* Update namespace ([`a4230b7`](https://github.com/NIDAP-Community/SCWorkflow/commit/a4230b7a520235dc8438d47ebdbbc28b27525984)) + +* Update namespace ([`d35dc0e`](https://github.com/NIDAP-Community/SCWorkflow/commit/d35dc0e23e4b23c0609980ca3c7d3f138adb9749)) + +* Update namespace ([`0a8e2a9`](https://github.com/NIDAP-Community/SCWorkflow/commit/0a8e2a909a9c3b453d4f125eec7a1febee2a3004)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`272c0ec`](https://github.com/NIDAP-Community/SCWorkflow/commit/272c0ecf5438146f12fcb5d9ac62ee45b7f6af95)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`8558d4f`](https://github.com/NIDAP-Community/SCWorkflow/commit/8558d4f120cd9bdd430960be4aea2b2c436f627a)) + +* Merge branch 'main' of https://github.com/NIDAP-Community/SCWorkflow into main ([`83f6f23`](https://github.com/NIDAP-Community/SCWorkflow/commit/83f6f234d5457e8ea82050046b2fe66ceb619ded)) + +* Update namespace ([`9960214`](https://github.com/NIDAP-Community/SCWorkflow/commit/9960214b52c6c69772dfa2feef6b7605aa19afc8)) + +* Update namespace ([`3d85b8d`](https://github.com/NIDAP-Community/SCWorkflow/commit/3d85b8d9f0c5e9be110effafe7cffa881c442a69)) + +* Update namespace ([`b8c8b0e`](https://github.com/NIDAP-Community/SCWorkflow/commit/b8c8b0e78e3bed534aac2581194a13587bce1c38)) + +* Merge pull request #5 from NIDAP-Community/initial_filter_qc + +Adjusted png render method for NIDAP display ([`33820ce`](https://github.com/NIDAP-Community/SCWorkflow/commit/33820ceb1c88fa52488bd76c84c202fff58b5dc0)) + +* Merge pull request #5 from NIDAP-Community/initial_filter_qc + +Adjusted png render method for NIDAP display ([`770cb6a`](https://github.com/NIDAP-Community/SCWorkflow/commit/770cb6a8f25af7245fa79822b1ef404c80b64a7f)) + +* Merge pull request #5 from NIDAP-Community/initial_filter_qc + +Adjusted png render method for NIDAP display ([`12b4ce3`](https://github.com/NIDAP-Community/SCWorkflow/commit/12b4ce35e719a0ab78983aafec64f6dc45905de4)) + +* Adjusted png render method for NIDAP display ([`0b9e4d2`](https://github.com/NIDAP-Community/SCWorkflow/commit/0b9e4d28e2e764c85135caada0075521320549ed)) + +* Adjusted png render method for NIDAP display ([`9968f1f`](https://github.com/NIDAP-Community/SCWorkflow/commit/9968f1f9af705991029bf4daacb030490f5ec398)) + +* Adjusted png render method for NIDAP display ([`747b89a`](https://github.com/NIDAP-Community/SCWorkflow/commit/747b89aa52c656ccaa3cee1c485f318260583a4a)) + +* Merge pull request #4 from NIDAP-Community/initial_filter_qc + +Update namespace ([`bcc1c7f`](https://github.com/NIDAP-Community/SCWorkflow/commit/bcc1c7f203a4ed80ca21a936955994dad0acc5a8)) + +* Merge pull request #4 from NIDAP-Community/initial_filter_qc + +Update namespace ([`61952ec`](https://github.com/NIDAP-Community/SCWorkflow/commit/61952ec7eec1564feabdf1134ef0338cde9864f9)) + +* Merge pull request #4 from NIDAP-Community/initial_filter_qc + +Update namespace ([`ac05afc`](https://github.com/NIDAP-Community/SCWorkflow/commit/ac05afc660372b1b9f8ddf9f53c3203c862f5681)) + +* Update namespace ([`fdcfd52`](https://github.com/NIDAP-Community/SCWorkflow/commit/fdcfd52f896a059e74f579224918a06fcef88d6f)) + +* Update namespace ([`f070d8e`](https://github.com/NIDAP-Community/SCWorkflow/commit/f070d8e2290b62f3b28a3e1cd523b3963bcb5958)) + +* Update namespace ([`fd74f19`](https://github.com/NIDAP-Community/SCWorkflow/commit/fd74f193f923774e1a27f5994b63b33aa34ae5ae)) + +* Merge pull request #3 from NIDAP-Community/initial_filter_qc + +Added license file ([`a3a99b6`](https://github.com/NIDAP-Community/SCWorkflow/commit/a3a99b6bacf5c78affe38c4b5d81ec1aa863b23f)) + +* Merge pull request #3 from NIDAP-Community/initial_filter_qc + +Added license file ([`5c508c3`](https://github.com/NIDAP-Community/SCWorkflow/commit/5c508c3337b6aad855c1e113ea28b9e7f7ec180d)) + +* Merge pull request #3 from NIDAP-Community/initial_filter_qc + +Added license file ([`d5113f3`](https://github.com/NIDAP-Community/SCWorkflow/commit/d5113f3a1c8665eef93d86f9ce9517f0cb2544ed)) + +* Added license file ([`186d183`](https://github.com/NIDAP-Community/SCWorkflow/commit/186d183f2401c8ee3d318660ade08f4aeb3239dc)) + +* Added license file ([`a8bd74c`](https://github.com/NIDAP-Community/SCWorkflow/commit/a8bd74c2c4c2db90a7b589216b576e25821aef51)) + +* Added license file ([`1d7ed13`](https://github.com/NIDAP-Community/SCWorkflow/commit/1d7ed139d0cc576c7630dc3a96f4b431652cd02a)) + +* Merge pull request #2 from NIDAP-Community/initial_filter_qc + +remove GenomeInfoDb ([`fe8164b`](https://github.com/NIDAP-Community/SCWorkflow/commit/fe8164b10d9b0409f507d8cbf66db2696bbbc5bf)) + +* Merge pull request #2 from NIDAP-Community/initial_filter_qc + +remove GenomeInfoDb ([`75ae5fd`](https://github.com/NIDAP-Community/SCWorkflow/commit/75ae5fd35438d99b42898e92eb67d96505777ca0)) + +* Merge pull request #2 from NIDAP-Community/initial_filter_qc + +remove GenomeInfoDb ([`8908e24`](https://github.com/NIDAP-Community/SCWorkflow/commit/8908e24ad88478c5ff7151a4f4ed7f482e466e61)) + +* remove GenomeInfoDb ([`f3bb0e6`](https://github.com/NIDAP-Community/SCWorkflow/commit/f3bb0e6b68cfdfc770ffea2d6bd7ea5904d8fd58)) + +* remove GenomeInfoDb ([`2b32d4e`](https://github.com/NIDAP-Community/SCWorkflow/commit/2b32d4ea6bc47340e8e4ee42023d2383eda284d7)) + +* remove GenomeInfoDb ([`b27279e`](https://github.com/NIDAP-Community/SCWorkflow/commit/b27279ed1ad367b543f941ce0fe4d225794c9c60)) + +* Merge pull request #1 from NIDAP-Community/initial_filter_qc + +Initial push with filter and qc, demo ([`866a648`](https://github.com/NIDAP-Community/SCWorkflow/commit/866a648750526245e924a5d5ff0d5307405de253)) + +* Merge pull request #1 from NIDAP-Community/initial_filter_qc + +Initial push with filter and qc, demo ([`a30130b`](https://github.com/NIDAP-Community/SCWorkflow/commit/a30130b1bfd3caacb99fceb1ce82852c77a35478)) + +* Merge pull request #1 from NIDAP-Community/initial_filter_qc + +Initial push with filter and qc, demo ([`b627f06`](https://github.com/NIDAP-Community/SCWorkflow/commit/b627f063b3f429da2d0a64d77016a30873f454b1)) + +* Initial push with filter and qc, demo ([`a843d4d`](https://github.com/NIDAP-Community/SCWorkflow/commit/a843d4dd33ea83edabb71f441e2cfa04788b67ba)) + +* Initial push with filter and qc, demo ([`dcd9fef`](https://github.com/NIDAP-Community/SCWorkflow/commit/dcd9fef1d3b7da2890eca3fd60fbf3b6400f8601)) + +* Initial push with filter and qc, demo ([`462a39d`](https://github.com/NIDAP-Community/SCWorkflow/commit/462a39d3f83a78829bf4dee0b890567a9743a8b1)) + +* Update README.md + +Changed package name ([`acb154c`](https://github.com/NIDAP-Community/SCWorkflow/commit/acb154cfb3524c4e4ea3081b75f674286c6de07a)) + +* Update README.md + +Changed package name ([`fdffdf4`](https://github.com/NIDAP-Community/SCWorkflow/commit/fdffdf4e2084a137fd4594ebd5c9937489a6b40d)) + +* Initial commit ([`6f6b791`](https://github.com/NIDAP-Community/SCWorkflow/commit/6f6b79152756bdfb9381efea5d1024be66c39853)) + +* Initial commit ([`7a2591a`](https://github.com/NIDAP-Community/SCWorkflow/commit/7a2591af73564fee4e1f0a404d465098ef79b76a)) diff --git a/Conda_Recipe/meta.yaml b/Conda_Recipe/meta.yaml new file mode 100644 index 0000000..5860c63 --- /dev/null +++ b/Conda_Recipe/meta.yaml @@ -0,0 +1,163 @@ +{% set version = '' %} + +{% set posix = 'm2-' if win else '' %} +{% set native = 'm2w64-' if win else '' %} + +package: + name: r-scworkflow + version: {{ version|replace("-", "_") }} + +channels: + - conda-forge + - bioconda + +source: + + git_url: https://github.com/NIDAP-Community/SCWorkflow + git_tag: continuous_deployment + +build: + merge_build_host: True # [win] + # If this is a new build for the same version, increment the build number. + number: 0 + # no skip + + # This is required to make R link correctly on Linux. + rpaths: + - lib/R/lib/ + - lib/ + +# Suggests: testthat (>= 3.0.0) +requirements: + build: + - {{ posix }}filesystem # [win] + - {{ posix }}git + - {{ posix }}zip # [win] + + host: + - r-base ==4.1.3 + - r-biocmanager + - r-gdata + - bioconductor-complexheatmap >=2.10.0 + - bioconductor-mast >=1.20.0 + - r-rcolorbrewer >=1.1_3 + - r-seurat >=4.1.1 + - bioconductor-singler >=1.8.1 + - r-anndata >=0.7.5.2 + - r-callr >=3.7.1 + - r-colorspace + - r-cowplot >=1.1.1 + - r-data.table >=1.14.2 + - r-dendextend + - r-dendsort + - r-dplyr >=1.0.9 + - bioconductor-edger >=3.36.0 + - r-future >=1.27.0 + - r-future.apply >=1.9.0 + - r-gargle >=1.2.0 + - r-ggplot2 >=3.3.6 + - r-ggpubr >=0.4.0 + - r-globals >=0.16.1 + - r-gridbase >=0.4_7 + - r-gridextra >=2.3 + - r-harmony >=0.1 + - r-hdf5r >=1.3.5 + - r-httpuv >=1.6.5 + - r-httr + - r-jsonlite + - r-leiden >=0.4.2 + - bioconductor-limma >=3.50.3 + - r-magrittr >=2.0.3 + - r-markdown >=1.1 + - r-pheatmap + - r-plotly >=4.10.0 + - r-plyr + - r-png + - r-progressr >=0.10.1 + - r-pryr >=0.1.5 + - r-purrr >=0.3.4 + - r-quantmod >=0.4.20 + - r-reshape2 >=1.4.4 + - r-reticulate >=1.25 + - r-rlang >=1.0.6 + - r-scales + - bioconductor-scdblfinder + - r-statmod >=1.4.37 + - r-stringr >=1.4.1 + - r-svglite >=2.1.0 + - r-tibble >=3.1.8 + - r-tidyverse >=1.3.2 + - r-viridislite >=0.4.0 + - r-xfun >=0.32 + - r-zip >=2.2.0 + - r-harmony >=1.1.0 + - bioconductor-celldex=1.4.1 + run: + - r-base ==4.1.3 + - r-biocmanager + - r-gdata + - bioconductor-complexheatmap >=2.10.0 + - bioconductor-mast >=1.20.0 + - bioconductor-scdblfinder + - bioconductor-celldex=1.4.1 + - r-rcolorbrewer >=1.1_3 + - r-seurat >=4.1.1 + - bioconductor-singler >=1.8.1 + - r-anndata >=0.7.5.2 + - r-callr >=3.7.1 + - r-colorspace + - r-cowplot >=1.1.1 + - r-data.table >=1.14.2 + - r-dendextend + - r-dendsort + - r-dplyr >=1.0.9 + - bioconductor-edger >=3.36.0 + - r-future >=1.27.0 + - r-future.apply >=1.9.0 + - r-gargle >=1.2.0 + - r-ggplot2 >=3.3.6 + - r-ggpubr >=0.4.0 + - r-globals >=0.16.1 + - r-gridbase >=0.4_7 + - r-gridextra >=2.3 + - r-harmony >=0.1 + - r-hdf5r >=1.3.5 + - r-httpuv >=1.6.5 + - r-httr + - r-jsonlite + - r-leiden >=0.4.2 + - bioconductor-limma >=3.50.3 + - r-magrittr >=2.0.3 + - r-markdown >=1.1 + - r-pheatmap + - r-plotly >=4.10.0 + - r-plyr + - r-png + - r-progressr >=0.10.1 + - r-pryr >=0.1.5 + - r-purrr >=0.3.4 + - r-quantmod >=0.4.20 + - r-reshape2 >=1.4.4 + - r-reticulate >=1.25 + - r-rlang >=1.0.6 + - r-scales + - r-statmod >=1.4.37 + - r-stringr >=1.4.1 + - r-svglite >=2.1.0 + - r-tibble >=3.1.8 + - r-tidyverse >=1.3.2 + - r-viridislite >=0.4.0 + - r-xfun >=0.32 + - r-zip >=2.2.0 + - r-harmony >=1.1.0 +test: + commands: + # You can put additional test commands to be run here. + - $R -e "library('SCWorkflow')" # [not win] + - "\"%R%\" -e \"library('SCWorkflow')\"" # [win] + + # You can also put a file called run_test.py, run_test.sh, or run_test.bat + # in the recipe that will be run at test time. + + # requires: + # Put any additional test requirements here. diff --git a/DESCRIPTION b/DESCRIPTION index 5ce07f2..cdf6c35 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: SCWorkflow Title: SCWorkflow from NIDAP -Version: 1.0.0.0 +Version: 1.0.2 Authors@R: c(person("Maggie", "Cam", email = "maggie.cam@nih.gov", role = "aut", comment = c(ORCID = "0000-0001-8190-9766")), person("Thomas", "Meyer", email = "thomas.meyer@nih.gov", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7185-5597")), person("Jing", "Bian", email = "bianjh@nih.gov", role = "aut", comment = c(ORCID = "0000-0001-7109-716X")), diff --git a/NAMESPACE b/NAMESPACE index 3c0b3fc..76e94f7 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -73,6 +73,7 @@ importFrom(dplyr,mutate) importFrom(dplyr,mutate_if) importFrom(dplyr,pull) importFrom(dplyr,select) +importFrom(dplyr,summarise) importFrom(ggplot2,aes) importFrom(ggplot2,coord_fixed) importFrom(ggplot2,geom_hline) @@ -113,4 +114,5 @@ importFrom(stringr,str_wrap) importFrom(tibble,deframe) importFrom(tibble,rownames_to_column) importFrom(tibble,tibble) +importFrom(tidyr,fill) importFrom(tidyr,pivot_wider) diff --git a/R/Filter_QC.R b/R/Filter_QC.R index 5b51ea0..2c1d116 100755 --- a/R/Filter_QC.R +++ b/R/Filter_QC.R @@ -199,11 +199,11 @@ filterQC <- function(object, ### Plotting Functions #### + #### Filter QC plots #### .plotViolin2=function(count.df,value){ - col1 <- brewer.pal(8, "Set3")[-2] - col2 <- c(col1,brewer.pal(8,"Set2")[3:6]) + g <- ggplot(count.df, aes_string(x='filt', y=value)) + # ggtitle(paste(name,count.df$variable[1])) + theme(panel.grid.major = element_blank(), @@ -634,9 +634,49 @@ filterQC <- function(object, function(x){so.f.out[[x]][['FilteringMeta']]}) names(so.nf.list.meta)=names(so.f.out) + ### Collect QC figures #### - col1 <- brewer.pal(8, "Set3")[-2] - col2 <- c(col1,brewer.pal(8,"Set2")[3:6]) + + ##Polychorme will create a palette of random colores based on a few seed + ## colors. Here i used RcolorBrewer set1 color palette as the seed. Can not + ## Reproduce exact pallet each time so creating 1 pallet that will be + ## hardcoded in the Filter_QC and Combine_Normalize functions + + # library(Polychrome) + # P100 = createPalette(100, brewer.pal(5, "Set1"), target = 'normal') + # swatch(P100) + + col2=c("#E6161C","#2E7AB6","#53B251","#9A53A6","#FC7800","#FFDA16","#FC00B2", + "#7622FE","#7D532E","#00FBF4","#F126FE","#DCDEE6","#22FD0D","#FD839B", + "#005D51","#E2E19E","#C6F022","#FBAD70","#008AFE","#F8AED8","#A5001C", + "#B42685","#5835B4","#CEC0FF","#654B63","#FF7DF1","#F91C7F","#5C6D16", + "#16FABB","#7DCCAF","#8CD7F4","#C86EFC","#FFCDBD","#882632","#B0921C", + "#B65500","#FD0DDB","#65FE84","#9F9CFF","#948C7E","#8FAA00","#758EA1", + "#C5166C","#93456A","#0DC4FB","#AF0DB9","#F5AAFD","#554984","#C57A7A", + "#0D9D9E","#B7EEAD","#FD7168","#B700FB","#85EC00","#3B8655","#AE8EB5", + "#E7E965","#FE87D2","#FC9B16","#AFF27A","#8876FF","#C3D2B4","#FBD092", + "#1626DB","#FE5ACD","#E4AA0D","#A96A0D","#B3966A","#00E5FD","#004F6E", + "#7D00A3","#FE947F","#BC87E9","#4F4726","#ED3D5A","#C79BA5","#5CA8FD", + "#005FBF","#1CBB84","#B2EDED","#FD5C32","#FCD6FF","#F668AB","#97C1FB", + "#7F1CD7","#94AF66","#BE16A7","#DE78A1","#22B80D","#7568BB","#82F4A3", + "#709686","#FC6086","#BB60A3","#9F1658","#EE6CFF","#2E8BA8","#47E9C8", + "#8387BA","#BCCDEC" ) + # swatch(col2) + + ##Alternative is to combine RcolorBrewer palettes to create larger palette + ## More limited on number of colors (61) + + # display.brewer.all() + # col2 <- c(brewer.pal(8, "Set1"), + # brewer.pal(12, "Paired"), + # brewer.pal(7, "Dark2"), + # brewer.pal(6, "Accent"), + # brewer.pal(12, "Set3"), + # brewer.pal(8,"Set2"), + # brewer.pal(11, "Spectral") + # )%>%unique + + features=c("orig.ident", "nCount_RNA","nFeature_RNA", diff --git a/R/Process_Raw_Data.R b/R/Process_Raw_Data.R index bc31352..1ad15ba 100755 --- a/R/Process_Raw_Data.R +++ b/R/Process_Raw_Data.R @@ -7,7 +7,9 @@ #' Seurat Single Cell analysis. #' #' @param input Input can be a vector of scRNA-Seq .h5 files, or a list of -#' seurat objects for each sample. vector should include file path. +#' seurat objects for each sample. TCRseq Metadata .csv files can also be +#' included and will be added to the corrisponding sample seurat object. +#' Vector of files should include entire file path. #' @param sample.metadata.table A table of sample metadata that you want to #' append to the already-existing metadata within the input Seurat Object(s). #' (optional) @@ -21,10 +23,9 @@ #' @param keep If TRUE, keep files when pattern is found in sample name. #' If FALSE, remove files when pattern is found in sample name. #' The pattern is set in the file.filter.regex parameter (below). -#' @param file.filter.regex Pattern or regular expression in file -#' name. Use the keep parameter (above) to keep or remove files -#' that contain pattern. If samples have been renamed set -#' regular expression based on new names +#' @param file.filter.regex Pattern or regular expression in sample +#' name. Use the 'keep' parameter to keep or remove files that contain pattern. +#' If samples have been renamed set regular expression based on new names #' @param split.h5 If TRUE, split H5 into individual files. (Default: FALSE) #' @param cell.hash If TRUE, dataset contains cell hashtags. (Default: FALSE) #' @param do.normalize.data If TRUE counts table will be log2 normalized. If @@ -32,10 +33,14 @@ #' (Default: TRUE) #' #' -#' @importFrom Seurat CreateAssayObject Idents as.SingleCellExperiment AddMetaData +#' @importFrom Seurat CreateAssayObject Idents as.SingleCellExperiment +#' @importFrom Seurat AddMetaData #' @importFrom reshape2 melt #' @importFrom magrittr %>% #' @importFrom stringr str_to_title +#' @importFrom dplyr summarise filter arrange select mutate desc +#' @importFrom dplyr if_else row_number relocate +#' @importFrom tidyr fill #' @importFrom ggplot2 ggplot #' @importFrom RColorBrewer brewer.pal #' @importFrom ggpubr annotate_figure get_legend ggarrange @@ -62,6 +67,7 @@ processRawData <- function(input, ## Functions #### ## --------- ## library(Seurat) + # library(stringr) # Cell Cycle Scoring and Find Variable Features CC_FVF_so <- function(so){ so <- CellCycleScoring(object = so, @@ -164,7 +170,164 @@ processRawData <- function(input, return(so.nf) } - + ### process and add TCRdata + .addTCR <- function(x) { + # x=sample.names[1] + so=so.orig.nf[[x]] + df=tcr.list[[x]] + df$sample_name <- x + + df$is_cell <- as.logical(df$is_cell) + df$productive <- as.logical(df$productive) + df$high_confidence <- as.logical(df$high_confidence) + df$full_length <- as.logical(df$high_confidence) + + + #filter down to only high confidence,productive contigs with + #sequencable proteins + df <- df[which(df$high_confidence==T & df$cdr3!="None" & df$productive==T ),] + + #collapse beta reads + betaSeq <- df %>% + group_by(barcode) %>% + filter(chain == "TRB") %>% + summarise(cell_beta_seq_list = toString((unique(cdr3))), + cell_beta_reads_list = toString(list(reads)), + cell_unique_betas = n_distinct(c(cdr3)), + cell_TRBV_list =toString(unique(v_gene)), + cell_TRBJ_list =toString(unique(j_gene)) + ) + + #collapse alpha reads + alphaSeq <- df %>% + group_by(barcode) %>% + filter(chain == "TRA") %>% + summarise(cell_alpha_seq_list = toString(unique(cdr3)), + cell_alpha_reads_list = toString(list(reads)), + cell_unique_alphas =n_distinct(c(cdr3)), + cell_TRAV_list =paste(c(v_gene),collapse = ", "), + cell_TRAJ_list =paste(c(j_gene),collapse = ", ") + ) + + outdf <- merge(betaSeq,alphaSeq,by = "barcode") + + #add marker columns for cells with multiple alpha or beta sequence + outdf <- outdf %>% + group_by(barcode) %>% + mutate(isPolyAlphaCell = if_else(cell_unique_alphas >1,TRUE,FALSE), + isPolyBetaCell = if_else(cell_unique_betas >1,TRUE,FALSE) + ) + + + #get the top beta sequence by read + topBetadf <- df %>% + group_by(barcode) %>% + filter(chain == "TRB") %>% + arrange(desc(reads)) %>% + mutate(cell_top_beta = if_else((row_number()== 1L),cdr3,NA), + cell_TRBV = if_else((row_number()== 1L),v_gene,NA), + cell_TRBJ = if_else((row_number()== 1L),j_gene,NA)) %>% + select(barcode, cell_top_beta,cell_TRBV,cell_TRBJ) %>% + fill(cell_top_beta,.direction = "updown") %>% + fill(cell_TRBV,.direction = "updown") %>% + fill(cell_TRBJ,.direction = "updown") + + + outdf <- merge(outdf,topBetadf,by = "barcode") + + #get top alpha + topAlphadf <- df %>% + group_by(barcode) %>% + filter(chain == "TRA") %>% + arrange(desc(reads)) %>% + mutate(cell_top_alpha = if_else((row_number()== 1L),cdr3,NA), + cell_TRAV = if_else((row_number()== 1L),v_gene,NA), + cell_TRAJ = if_else((row_number()== 1L),j_gene,NA)) %>% + select(barcode, cell_top_alpha,cell_TRAV,cell_TRAJ) %>% + fill(cell_top_alpha,.direction = "updown") %>% + fill(cell_TRAV,.direction = "updown") %>% + fill(cell_TRAJ,.direction = "updown") + + + outdf <- merge(outdf,topAlphadf,by = "barcode") %>% + select(barcode, everything()) %>% + distinct() + + + df <- outdf + + #reannotate clonotypes as distinct ab_pairs + df <- df %>% + mutate(ab_pair = paste(cell_top_alpha,cell_top_beta,sep="&")) + + ab_pair_df <- df %>% + select(ab_pair) %>% + distinct() %>% + mutate(clonotype_id = paste("clonotype",row_number(),sep="")) + + #merge this back into the data frame + df = merge(df,ab_pair_df, by = "ab_pair") + + #summarize cell level data if you have not called Integrate + #TCR cluster template + colsToSummarize <- c("cell_top_alpha", + "cell_top_beta", + "clonotype_id", + "vdj_clonotype_id") + summarizeCutOff <- min(10,18) + + for (i in colsToSummarize) { + col <- df[[i]] + valCount <- length(unique(col)) + + if ((valCount >=summarizeCutOff) & + (!is.element(class(df[[i]][1]),c("numeric","integer")))) + { + freqVals <- as.data.frame(-sort(-table(col)))$col[1:summarizeCutOff] + summarized_col = list() + count <- 0 + for (j in col) { + + if (is.na(j) || is.null(j) || (j =="None")) { + count <- count + 1 + summarized_col[count] <- "NULLorNA" + #print("NULLorNA") + } else if (j %in% freqVals){ + count <- count + 1 + summarized_col[count] <- j + #print("valid") + } else { + count <- count + 1 + summarized_col[count] <- "Other" + #print("Other") + } + } + newName = paste("summarized_",i,sep="") + df[[newName]] <- unlist(summarized_col) + } + print("Passed all filters...") + } + df <- df %>% select(barcode,everything()) + df <- as.data.frame(df) + + df <- df %>% mutate_if(is.list, as.character) + + + ### Add Metadata to SO + + if (FALSE%in%grepl('G|T|C|A',unique(df$barcode))>1) { + stop("Error Processing TCR data: TCR metadata is empty") + } + + rownames(df)=df$barcode + df=df[,!colnames(df)%in%'barcode'] + + so=AddMetaData(so,df) + # so.orig.nf3=so.orig.nf + so@meta.data=replace(so@meta.data, is.na(so@meta.data), "Not captured") + + return(so) + } ## --------------- ## ## Main Code Block #### @@ -186,31 +349,60 @@ processRawData <- function(input, ### Create SO object depending on class of input SOs. if(class(input)=='RFilePaths'){ print(paste0('File Type: ',class(input))) - input <- input$value[grepl(".h5",input$value)] + input.dat <- input$value[grepl("*h5$",input$value)] + input.tcr <- input$value[grepl("*csv$",input$value)] + + obj.list = lapply(input.dat, + function(x){ return(Read10X_h5(x, use.names=TRUE)) }) + tcr.list = lapply(input.tcr, + function(x){return(read.csv(x, header = T))}) - obj.list <- lapply(input, - function(x) { return(Read10X_h5(x, use.names=TRUE)) }) }else if(class(input)=='FoundryTransformInput'){ print(paste0('File Type: ',class(input))) - input=nidapGetFiles(input,'h5') + input.dat=nidapGetFiles(input,'*h5$') + input.tcr=nidapGetFiles(input,'*csv$') - obj.list <- lapply(input, + obj.list <- lapply(input.dat, function(x) { return(Read10X_h5(x, use.names=TRUE)) }) + if (length(input.tcr)>0) { + tcr.list = lapply(input.tcr, + function(x){return(read.csv(x, header = T))}) + } + } else if(class(input)=='character'){ - if (sum(grepl('.rds',input))==1) { + if (sum(grepl('*rds$',input))==1) { ## Log output. cat("1. Reading Seurat Object from dataset: seurat_object.rds\n\n") - obj.list <- readRDS(input) + input.dat=input[grepl('*rds$',input)] + input.tcr=input[grepl('*csv$',input)] + + + obj.list <- lapply(input.dat, + function(x) { return(readRDS(x)) }) + if (length(input.tcr)>0) { + tcr.list = lapply(input.tcr, + function(x){return(read.delim(x,sep=",", header = T))}) + } + - } else if (sum(grepl('.h5',input))>0){ + } else if (sum(grepl('*h5$',input))>0){ ## Log output. cat("1. Processing .h5 files from dataset \n\n") - obj.list <- lapply(input, + input.dat=input[grepl('*h5$',input)] + input.tcr=input[grepl('*csv$',input)] + + + obj.list <- lapply(input.dat, function(x) { return(Read10X_h5(x, use.names=TRUE)) }) + if (length(input.tcr)>0) { + tcr.list = lapply(input.tcr, + function(x){return(read.delim(x,sep=",", header = T))}) + } + }else { stop("Incorrect input format") @@ -220,26 +412,28 @@ processRawData <- function(input, } + ## Clean up sample names - names(obj.list) <- lapply(input, basename) + names(obj.list) <- lapply(input.dat, basename) names(obj.list) <- sapply(names(obj.list), function(x) gsub("_filtered(\\w+)?.h5","", x)) names(obj.list) <- sapply(names(obj.list), function(x) gsub("\\.(\\w+)?","", x)) - ### Process Metadata table #### - if(is.null(sample.metadata.table)==F){ - meta_class <- getClass(class(sample.metadata.table)) - if (meta_class@className=='character'){ - - meta.table=read.delim(file = sample.metadata.table, - header = T,sep = '\t')%>% - suppressWarnings() - - } else { - meta.table=sample.metadata.table - } - } else { print("No Metadata provided")} + + if (length(input.tcr)>0) { + names(tcr.list) <- lapply(input.tcr, basename) + names(tcr.list) <- sapply(names(tcr.list), + function(x) gsub("_filtered(\\w+)?.csv","", x)) + names(tcr.list) <- sapply(names(tcr.list), + function(x) gsub("\\.(\\w+)?","", x)) + + + if (setequal(names(obj.list),names(tcr.list))==F){ + stop("Names from sequencing files do not match TCR metadata files") + } + } + ### Create Seurat Object #### so.orig.nf <- list() @@ -307,42 +501,7 @@ processRawData <- function(input, } sample.names=names(so.orig.nf) - - ### Rename Samples #### - if(is.null(sample.metadata.table)==F&is.null(rename.col)==F){ - if(sample.name.column!=rename.col){ - if(identical(sort(names(so.orig.nf)), - sort(meta.table[[sample.name.column]]))){ - for (i in names(so.orig.nf)) { - - nname=meta.table[meta.table[,sample.name.column]%in%i,] - ## add original name to metadata table - so.orig.nf[[i]]@meta.data[,sample.name.column]= - nname[,sample.name.column] - ## change orig.ident col to new name - so.orig.nf[[i]]@meta.data$orig.ident=nname[,rename.col] - - names(so.orig.nf)[names(so.orig.nf)%in%i]=nname[,rename.col] - } - ## remove original sample names from meta.data table - meta.table=meta.table[,!colnames(meta.table)%in% - sample.name.column,drop=F] - sample.name.column=rename.col - sample.names=names(so.orig.nf) - cat("Renamed Samples:\n",paste(names(so.orig.nf),collapse = '\n')) - - - }else { - stop("ERROR: Your metadata sample names do not mach the sample - names of your samples") - } - }else{ - cat("Sample Names:\n",paste(names(so.orig.nf),collapse = '\n')) - } - }else{ - cat("Sample Names:\n",paste(names(so.orig.nf),collapse = '\n')) - } - + cat("Sample Names:\n",paste(names(so.orig.nf),collapse = '\n')) @@ -361,6 +520,39 @@ processRawData <- function(input, ### add cell cycle information so.orig.nf <- lapply(so.orig.nf, CC_FVF_so) %>%suppressWarnings() + + ### Process Metadata table #### + if(is.null(sample.metadata.table)==F){ + meta_class <- getClass(class(sample.metadata.table)) + if (meta_class@className=='character'){ + + meta.table=read.delim(file = sample.metadata.table, + header = T,sep = '\t')%>% + suppressWarnings() + + } else { + meta.table=sample.metadata.table + } + if (length(setdiff(meta.table[,sample.name.column],names(so.orig.nf)))>0) { + stop(paste0(" + Names in the sample metadata column: '",sample.name.column, + "' do not match sample names taken from .h5 files. + Possible reasons could be misspelled names, or spaces in table. + Check sample names: + ", + paste( + paste0("'",setdiff(meta.table[,sample.name.column],names(so.orig.nf)),"'"), + sep="", + collapse = "\n" + ), + " + in Metadata table" + )) + } + } else { print("No Metadata provided")} + + + ### Add Metadata #### if(is.null(sample.metadata.table)==F ){ metacols <- colnames(meta.table) @@ -377,9 +569,61 @@ processRawData <- function(input, } else { print("No Metadata table was supplied")} + ### Add TCR Metadata #### + if (length(input.tcr)>0) { + print("Processing TCRseq metadata tables") + + so.orig.nf=lapply(sample.names,FUN = .addTCR) + names(so.orig.nf)=sample.names + } + + ### Rename Samples #### + if(is.null(sample.metadata.table)==F&is.null(rename.col)==F){ + if(sample.name.column!=rename.col){ + if(identical(sort(names(so.orig.nf)), + sort(meta.table[[sample.name.column]]))){ + for (i in names(so.orig.nf)) { + + nname=meta.table[meta.table[,sample.name.column]%in%i,] + ## add original name to metadata table + so.orig.nf[[i]]@meta.data[,sample.name.column]= + nname[,sample.name.column] + + ## Move original sample name column to second position in so metadata + so.orig.nf[[i]]@meta.data=relocate(so.orig.nf[[i]]@meta.data, + {{sample.name.column}}, + .after = orig.ident) + + ## change orig.ident col to new name + so.orig.nf[[i]]@meta.data$orig.ident=nname[,rename.col] + + names(so.orig.nf)[names(so.orig.nf)%in%i]=nname[,rename.col] + + + } + ## remove original sample names from meta.data table + meta.table=meta.table[,!colnames(meta.table)%in% + sample.name.column,drop=F] + sample.name.column=rename.col + sample.names=names(so.orig.nf) + cat("Renamed Samples:\n",paste(names(so.orig.nf),collapse = '\n'),'\n') + + + }else { + stop("ERROR: Your metadata sample names do not mach the sample + names of your samples") + } + }else{ + cat("Sample Names:\n",paste(names(so.orig.nf),collapse = '\n'),"\n") + } + }else{ + cat("Sample Names:\n",paste(names(so.orig.nf),collapse = '\n'),"\n") + } + + ### Remove Sample files #### subsetRegex <- file.filter.regex if (length(subsetRegex) > 0) { @@ -395,9 +639,49 @@ processRawData <- function(input, } + + ### Create QC figure #### - col1 <- brewer.pal(8, "Set3")[-2] - col2 <- c(col1,brewer.pal(8,"Set2")[3:6]) + ##Polychorme will create a palette of random colores based on a few seed + ## colors. Here i used RcolorBrewer set1 color palette as the seed. Can not + ## Reproduce exact pallet each time so creating 1 pallet that will be + ## hardcoded in the Filter_QC and Combine_Normalize functions + + # library(Polychrome) + # P100 = createPalette(100, brewer.pal(5, "Set1"), target = 'normal') + # swatch(P100) + + col2=c("#E6161C","#2E7AB6","#53B251","#9A53A6","#FC7800","#FFDA16","#FC00B2", + "#7622FE","#7D532E","#00FBF4","#F126FE","#DCDEE6","#22FD0D","#FD839B", + "#005D51","#E2E19E","#C6F022","#FBAD70","#008AFE","#F8AED8","#A5001C", + "#B42685","#5835B4","#CEC0FF","#654B63","#FF7DF1","#F91C7F","#5C6D16", + "#16FABB","#7DCCAF","#8CD7F4","#C86EFC","#FFCDBD","#882632","#B0921C", + "#B65500","#FD0DDB","#65FE84","#9F9CFF","#948C7E","#8FAA00","#758EA1", + "#C5166C","#93456A","#0DC4FB","#AF0DB9","#F5AAFD","#554984","#C57A7A", + "#0D9D9E","#B7EEAD","#FD7168","#B700FB","#85EC00","#3B8655","#AE8EB5", + "#E7E965","#FE87D2","#FC9B16","#AFF27A","#8876FF","#C3D2B4","#FBD092", + "#1626DB","#FE5ACD","#E4AA0D","#A96A0D","#B3966A","#00E5FD","#004F6E", + "#7D00A3","#FE947F","#BC87E9","#4F4726","#ED3D5A","#C79BA5","#5CA8FD", + "#005FBF","#1CBB84","#B2EDED","#FD5C32","#FCD6FF","#F668AB","#97C1FB", + "#7F1CD7","#94AF66","#BE16A7","#DE78A1","#22B80D","#7568BB","#82F4A3", + "#709686","#FC6086","#BB60A3","#9F1658","#EE6CFF","#2E8BA8","#47E9C8", + "#8387BA","#BCCDEC" ) + # swatch(col2) + + ##Alternative is to combine RcolorBrewer palettes to create larger palette + ## More limited on number of colors (61) + + # display.brewer.all() + # col2 <- c(brewer.pal(8, "Set1"), + # brewer.pal(12, "Paired"), + # brewer.pal(7, "Dark2"), + # brewer.pal(6, "Accent"), + # brewer.pal(12, "Set3"), + # brewer.pal(8,"Set2"), + # brewer.pal(11, "Spectral") + # )%>%unique + + features=c("orig.ident", "nCount_RNA", @@ -426,7 +710,7 @@ processRawData <- function(input, ### Post Filter Summary - Scatter scatter.allsamples=lapply(v, - function(y){.plotScatterPost2(table.meta,'nCount_RNA',y)}) + function(y){.plotScatterPost2(table.meta,'nCount_RNA',y)}) names(scatter.allsamples)=v scatter.allsamples.grob=ggarrange(plotlist=scatter.allsamples, @@ -457,8 +741,8 @@ processRawData <- function(input, legend = 'right') violin.allsamples.grob=annotate_figure(violin.allsamples.grob, - top = text_grob("", - face = "bold", size = 14)) + top = text_grob("", + face = "bold", size = 14)) ### Post Filter Summary - combined Scatter + Histogram @@ -497,3 +781,4 @@ processRawData <- function(input, + diff --git a/tests/testthat/helper-Process_Raw_Data.R b/tests/testthat/helper-Process_Raw_Data.R index 2ed9419..65d2174 100755 --- a/tests/testthat/helper-Process_Raw_Data.R +++ b/tests/testthat/helper-Process_Raw_Data.R @@ -18,6 +18,7 @@ getParamRaw <- function(data){ test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")) sample.name.column='Sample_Name' rename.col="Rename" + split.h5=F @@ -31,12 +32,15 @@ getParamRaw <- function(data){ sep = '\t') input=list.files( - test_path(paste0("fixtures/",data,"/h5files")),".h5",full.names = T) + test_path(paste0("fixtures/",data,"/h5files")),"",full.names = T) + # input=list.files( + # test_path(paste0("fixtures/",data,"/h5files")),".h5",full.names = T) organism = "Mouse" sample.metadata.table= test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")) sample.name.column='Sample_Name' rename.col="Rename" + split.h5=F @@ -55,7 +59,8 @@ getParamRaw <- function(data){ test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")) sample.name.column='Sample_Name' rename.col="Rename" - + split.h5=F + } else if (data == "NSCLC_Multi") { @@ -80,18 +85,48 @@ getParamRaw <- function(data){ test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")) sample.name.column='Sample_Name' rename.col="Rename" + split.h5=F } else if (data == "BRCA") { + h5= '/rstudio-files/ccbr-data/data/singlecell/BRCA/NG.h5' + fixture=test_path(paste0("fixtures/",data,"/h5files/NG.h5")) + if(file.exists(fixture)==F){ + file.copy(h5,fixture) + } + + data.table(My_Sample_Names= + c('CID3586','CID3921','CID45171','CID3838','CID4066','CID44041', + 'CID4465','CID4495','CID44971','CID44991','CID4513','CID4515', + 'CID4523','CID3946','CID3963','CID4461','CID4463','CID4471', + 'CID4530N','CID4535','CID4040','CID3941','CID3948','CID4067', + 'CID4290A','CID4398'), + My_Renamed_Samples= + c('CID3586','CID3921','CID45171','CID3838','CID4066','CID44041', + 'CID4465','CID4495','CID44971','CID44991','CID4513','CID4515', + 'CID4523','CID3946','CID3963','CID4461','CID4463','CID4471', + 'CID4530N','CID4535','CID4040','CID3941','CID3948','CID4067', + 'CID4290A','CID4398'), + My_Variable_1= + c('M','F','M','F','F','F','M','M','F','M','M','M','M','F','F', + 'M','F','F','M','F','F','F','M','M','F',NA), + My_Variable_2= + c(1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,0,1,1,1,0,0,1,0,1,0,NA) + )%>% + write.table( + test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")), + sep = '\t') + input=list.files( test_path(paste0("fixtures/",data,"/h5files")),".h5",full.names = T) organism = "Human" sample.metadata.table= test_path(paste0("fixtures/",data,"/",data,"_metadata.txt")) - sample.name.column=NULL - rename.col=NULL + sample.name.column='My_Sample_Names' + rename.col='My_Renamed_Samples' + split.h5=T } @@ -100,7 +135,9 @@ getParamRaw <- function(data){ "organism"=organism, "sample.metadata.table"=sample.metadata.table, 'sample.name.column'=sample.name.column, - "rename.col"=rename.col + "rename.col"=rename.col, + "split.h5"=split.h5 + )) } diff --git a/tests/testthat/test-Annotate_Cell_Types.R b/tests/testthat/test-Annotate_Cell_Types.R index 39aa87f..e133f20 100644 --- a/tests/testthat/test-Annotate_Cell_Types.R +++ b/tests/testthat/test-Annotate_Cell_Types.R @@ -1,7 +1,7 @@ test_that("Annotate_Cell_Types run with normal parameters - Mouse TEC Data", { tec.data <- getParamACT("TEC") - output <- do.call(annotateCellTypes, tec.data) + output <- suppressWarnings(do.call(annotateCellTypes, tec.data)) ggsave( "output/TEC_annotateCellTypes.p1.png", @@ -27,7 +27,7 @@ test_that("Annotate_Cell_Types run with reduction type TSNE - Mouse TEC Data", { tec.data <- getParamACT("TEC") tec.data$reduction.type <- "tsne" - output <- do.call(annotateCellTypes, tec.data) + output <- suppressWarnings(do.call(annotateCellTypes, tec.data)) ggsave( "output/TEC_annotateCellTypes.tsne.p1.png", @@ -53,7 +53,7 @@ test_that("Annotate_Cell_Types run with reduction type TSNE - Mouse TEC Data", test_that("Test Annotate Cell Types with FineTuning - Mouse TEC dataset", { tec.data <- getParamACT("TEC") tec.data$do.finetuning <- TRUE - output <- do.call(annotateCellTypes, tec.data) + output <- suppressWarnings(do.call(annotateCellTypes, tec.data)) ggsave( "output/TEC_annotateCellTypes.fine.p1.png", @@ -78,7 +78,7 @@ test_that("Test Annotate Cell Types with FineTuning - Mouse TEC dataset", { test_that("Annotate_Cell_Types run with normal parameters - Chariou Data", { chariou_data <- getParamACT("Chariou") - output <- do.call(annotateCellTypes, chariou_data) + output <- suppressWarnings(do.call(annotateCellTypes, chariou_data)) ggsave( "output/Chariou_annotateCellTypes.p1.png", @@ -104,7 +104,7 @@ test_that("Annotate_Cell_Types run with normal parameters - Chariou Data", { test_that("Annotate_Cell_Types run with normal parameters - PBMC-single Data", { pbmc.single.data <- getParamACT("pbmc-single") - output <- do.call(annotateCellTypes, pbmc.single.data) + output <- suppressWarnings(do.call(annotateCellTypes, pbmc.single.data)) ggsave( "output/PBMCsinlge_annotateCellTypes.p1.png", @@ -129,7 +129,7 @@ test_that("Annotate_Cell_Types run with normal parameters - PBMC-single Data", test_that("Annotate_Cell_Types run with normal parameters - NSCLC-multi Data", { nsclc.multi.data <- getParamACT("nsclc-multi") - output <- do.call(annotateCellTypes, nsclc.multi.data) + output <- suppressWarnings(do.call(annotateCellTypes, nsclc.multi.data)) ggsave( "output/NSCLCmulti_annotateCellTypes.p1.png", @@ -153,7 +153,7 @@ test_that("Annotate_Cell_Types run with normal parameters - NSCLC-multi Data", test_that("Annotate_Cell_Types run with normal parameters - BRCA Data", { brca.data <- getParamACT("BRCA") - output <- do.call(annotateCellTypes, brca.data) + output <- suppressWarnings(do.call(annotateCellTypes, brca.data)) ggsave( "output/BRCA_annotateCellTypes.p1.png", diff --git a/tests/testthat/test-Harmony.R b/tests/testthat/test-Harmony.R index 5283790..10706b1 100755 --- a/tests/testthat/test-Harmony.R +++ b/tests/testthat/test-Harmony.R @@ -1,11 +1,12 @@ test_that("Harmony returns seurat object with adjusted embeddings for TEC data", { + skip_on_ci() tec = getHarmonyParam("TEC") object.harmonized = do.call(harmonyBatchCorrect, tec) - skip_on_ci() + expect_snapshot_file( .drawHarmonyFig(object.harmonized$adj.tsne), "tec_harm.png" @@ -20,12 +21,12 @@ test_that("Harmony returns seurat object with adjusted embeddings for test_that("Harmony returns seurat object with adjusted embeddings for Chariou data", { - + skip_on_ci() chariou = getHarmonyParam("Chariou") object.harmonized = do.call(harmonyBatchCorrect, chariou) - skip_on_ci() + expect_snapshot_file( .drawHarmonyFig(object.harmonized$adj.tsne), "char_harm.png" @@ -40,12 +41,12 @@ test_that("Harmony returns seurat object with adjusted embeddings for Chariou test_that("Harmony returns seurat object with adjusted embeddings for pbmc_single data", { - + skip_on_ci() pbmc.single = getHarmonyParam("pbmc_single") object.harmonized = do.call(harmonyBatchCorrect, pbmc.single) - skip_on_ci() + expect_snapshot_file( .drawHarmonyFig(object.harmonized$adj.tsne), "pbmc_single_harm.png" @@ -60,12 +61,11 @@ test_that("Harmony returns seurat object with adjusted embeddings for test_that("Harmony returns seurat object with adjusted embeddings for nsclc_multi data", { - + skip_on_ci() nsclc.multi = getHarmonyParam("nsclc_multi") object.harmonized = do.call(harmonyBatchCorrect, nsclc.multi) - skip_on_ci() expect_snapshot_file( .drawHarmonyFig(object.harmonized$adj.tsne), "nsclc_multi_harm.png" @@ -80,12 +80,12 @@ test_that("Harmony returns seurat object with adjusted embeddings for test_that("Harmony returns seurat object with adjusted embeddings for BRCA data", { - + skip_on_ci() + brca = getHarmonyParam("BRCA") object.harmonized = do.call(harmonyBatchCorrect, brca) - skip_on_ci() expect_snapshot_file( .drawHarmonyFig(object.harmonized$adj.tsne), "BRCA_harm.png" @@ -99,7 +99,7 @@ test_that("Harmony returns seurat object with adjusted embeddings for }) test_that("Harmony provides warning when genes are not found in the data", { - + skip_on_ci() tec = getHarmonyParam("TEC") expect_warning(harmonyBatchCorrect( @@ -113,7 +113,7 @@ test_that("Harmony provides warning when genes are not found in the data", { test_that("Harmony stops when variable features to subset by exceeds number of genes in the data", { - + skip_on_ci() tec = getHarmonyParam("TEC") expect_error(harmonyBatchCorrect( diff --git a/tests/testthat/test-Process_Raw_Data.R b/tests/testthat/test-Process_Raw_Data.R index 5bc375c..acd30ad 100755 --- a/tests/testthat/test-Process_Raw_Data.R +++ b/tests/testthat/test-Process_Raw_Data.R @@ -1,5 +1,10 @@ +<<<<<<< HEAD for (data in c('TEC','Chariou','NSCLC_Multi')) {#,'PBMC_Single')) { +======= +for (data in c('TEC','NSCLC_Multi')) {#,'PBMC_Single')) { + +>>>>>>> 76f4d4ff7d045fdb61d4369726c5da90ba3e3320 test_that(paste0("Test Filter and QC - Standard (",data," dataset)"), { @@ -73,6 +78,92 @@ for (data in c('BRCA')) { } +<<<<<<< HEAD +======= +for (data in c('BRCA')) { + + test_that(paste0("Test Split h5 (",data," dataset)"), { + + + data.run <- getParamRaw(data) + Raw.out <- do.call(processRawData, data.run) + + # create output + expected.elements = c("object","plots") + expect_setequal(names(Raw.out), expected.elements) + # SO contains object same length as input + expect_false(isTRUE(all.equal(length(Raw.out$object), + length(data.run$input)))) + # figure slot is a ggplot + expect_equal(class(Raw.out$plots[[1]])[2], 'ggplot') + # SO slot contains data + expect( object.size(Raw.out$object[[1]]@assays$RNA@counts),'> 0' ) + # plot slot contains data + expect( object.size(Raw.out$plots),'= 0' ) + + }) + +} + + +################################################################ +################################################################ + +for (data in c('Chariou')) { + + test_that(paste0("Test Filter and QC - TCR data for (",data," dataset)"), { + + + data.run <- getParamRaw(data) + Raw.out <- do.call(processRawData, data.run) + + # create output + expected.elements = c("object","plots") + expect_setequal(names(Raw.out), expected.elements) + # SO contains object same length as input + expect_equal(length(Raw.out$object),length(grep('\\.h5',data.run$input,value = T))) + # figure slot is a ggplot + expect_equal(class(Raw.out$plots[[1]])[2], 'ggplot') + # SO slot contains data + expect( object.size(Raw.out$object[[1]]@assays$RNA@counts),'> 0' ) + # plot slot contains data + expect( object.size(Raw.out$plots),'= 0' ) + + TCRmeta=c("ab_pair","cell_beta_seq_list","cell_beta_reads_list", + "cell_unique_betas","cell_TRBV_list", + "cell_TRBJ_list","cell_alpha_seq_list","cell_alpha_reads_list", + "cell_unique_alphas", "isPolyAlphaCell", + "isPolyBetaCell","cell_top_beta","cell_TRBV", + "cell_TRBJ","cell_top_alpha", + "cell_TRAV","cell_TRAJ","clonotype_id", + "summarized_cell_top_alpha", "summarized_cell_top_beta", + "summarized_clonotype_id") + for (n in names(Raw.out$object)) { + so=Raw.out$object[[n]] + # check if TCR metadata columns have been added + expect_true(all(TCRmeta%in%colnames(so@meta.data)), + label = paste0("Sample: ",n, + " Metadata table not updated with TCR data")) + # Check if TCR Metadata Columns contain data + + TCRtbl=so@meta.data[!is.na(so@meta.data[,TCRmeta[1]]),TCRmeta,drop=F] + # Check if TCR data is added + expect_gt(nrow(TCRtbl),0, + label = paste0("Sample: ",n, " TCR data Not Added")) + # Check if TCR data is added + expect_equal(nrow(TCRtbl[rowSums(is.na(TCRtbl))>0,]),0 , + label = paste0("Sample: ",n, + " TCR data contains missing values")) + + } + + }) + +} + + + +>>>>>>> 76f4d4ff7d045fdb61d4369726c5da90ba3e3320 ################################################################ for (data in c('TEC')) { @@ -89,7 +180,11 @@ for (data in c('TEC')) { expected.elements = c("object","plots") expect_setequal(names(Raw.out), expected.elements) # SO contains object same length as input +<<<<<<< HEAD expect_false(length(Raw.out$object)==length(data.run$input)) +======= + expect_equal(length(Raw.out$object),2) +>>>>>>> 76f4d4ff7d045fdb61d4369726c5da90ba3e3320 # figure slot is a ggplot expect_equal(class(Raw.out$plots[[1]])[2], 'ggplot') # SO slot contains data diff --git a/vignettes/scWorkflow_image.png b/vignettes/scWorkflow_image.png new file mode 100644 index 0000000..295195b Binary files /dev/null and b/vignettes/scWorkflow_image.png differ