-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add multiprocessing #92
Open
LFT18
wants to merge
99
commits into
RasmussenLab:developer
Choose a base branch
from
LFT18:main
base: developer
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 23 commits
Commits
Show all changes
99 commits
Select commit
Hold shift + click to select a range
0e2242e
Add files for multiprocessing
2add9b9
Update identify_associations_multiprocess.py
LFT18 f645ea4
Clean multiprocessing script
LFT18 f471704
Update __main__.py multiprocessing
LFT18 85c28e5
Update schema.py multiprocessing
LFT18 6330e92
Update __init__.py multiprocessing
LFT18 bbe1b4e
Update preprocessing.py
LFT18 820c554
:fire: clean-up duplicated src/move files (pkg was in main folder)
ce9a9dc
:sparkles: add identify_associations_multiprocess to src/move/tasks
5327223
:bug: make mutliprocessing not stale: assign # of threads for each pr…
eaa858a
Merge pull request #1 from enryH/main
LFT18 5ab5e59
Updated identify_associations_multiprocess.py
33f565a
Update config files for small tries
63f128b
Multiprocessing for analyze_latent
ca389d2
Analyze latent multiprocessing
e08a94b
Analyze latent multiprocessing
e94ef90
Fix bayes_k calculation
f4f0aa3
Fix analyze_latent_multiprocessing
6a0b665
Update and new functions
a5310a6
Delete files and fix multiloop
e67bb75
Clean identify_association_multiprocess.py
86bfed5
Clean analyze_latent multiprocessing.py
f9d4961
Update perturbations.py
LFT18 c2c49e8
Update perturbations.py
LFT18 0a4bcae
Delete src/move/tasks/analyze_latent_efficient.py
LFT18 ce20dac
Delete src/move/tasks/analyze_latent_multiprocessing.py
LFT18 4a72842
Delete src/move/tasks/identify_associations_multiprocess_loop.py
LFT18 f537d21
Delete src/move/tasks/identify_associations_multiprocess_may.py
LFT18 568aaa8
Delete src/move/tasks/identify_associations_selected.py
LFT18 ede3707
Delete src/move/tasks/analyze_latent_original.py
LFT18 5df8a01
Remove multiprocess_loop
LFT18 52c37fd
Remove multiprocess_loop
LFT18 2e29f23
:art: format with black
13678cb
Merge branch 'main' into LFT18-main
f92a862
Merge branch 'developer' into LFT18-main
b7824f7
:art: add trigger of actions from PR
e5253a2
:art: format with black
d4118a3
:fire: remove duplicated code and intermediate scripts
3e19e24
Merge branch 'developer' into LFT18-main
dbc0238
:bug: fix f-string formatting errors
80352e6
:bug: remove unused imports
488b4a4
:rewind: add configuration files back in from developer branch
9b3a27e
:art: isort imports
05d4c34
:construction: see if this advances CI to the next step
ebb72ad
:fire: remove intermediate files of development
efbfd5c
:construction: multiprocess only defined for bayes factors
fbbeb19
:bug: remove non-existing, intermediate tasks (used for developing), …
cb3ad30
:bug: also deactivate mutliprocessing for KS as it's not implemented
8c61d35
:art: fix flake8-bugbear issues except missing multiprocessing of t-t…
5aa03ff
:bug: format and fix import
8b06298
:bug: use perturb_continuous_data_extended from perturbations
6cfd1f8
:fire: comments and old configurations; format
8277891
:fire: remove duplicated functionality
44802eb
:sparkles: integrate multiprocessing into analyze_latent.py
f64d779
:sparkles: merge multiprocessing bayes factors into identify_associat…
6a17110
:fire: remove old schema entries, increase run time
b8b4769
:zip: do no save intermediate files for single-process bayes_approach
2927d3f
:fire: remove comments
202eb74
:fire: remove unused code
d6bc896
:art: reorder functions
b99ce97
:construction: move bayes_parallel to own module
171c915
:construction: unify interface
95c9f40
:fire: remove not-used code
e556fae
:art: start separating recurrent code into fcts
1a2774d
:art: adapt to look more similar to single-core bayes factor fct
680c164
:sparkles: add back masking of self-perturbed feat.
8f43c90
:art: initiailize logger at the top of the module
6178c8f
:sparkles: pass feature_mask to bayes_parallell
60ed227
:bug: add condition for masking
f5da671
:art: align masking strategies
7eae82d
:bug: fix cont perturbation
50a623e
:bug: remove redefintion of nan_mask
2df057b
:art: only define logger once in module
2e87e12
:art: align single process bayes and multiprocess bayes fct
aa2e5d9
:art: just document in code that this cannot happen
4041fcb
:zap: improve CI speed, reduce stability (-> one refit only)
2d004e0
:bug: use default no. of epochs + t-test needs 4 refits
8d65528
:zap: do not run t-test check (for now)
1dd6788
:zap: bump up bayes factor training
dc9020e
:art: train both refits with 100 epochs
9cd2a7b
:sparkles: add log2 option
a4911d7
:art: document some more
e0421bd
:zap: test multiprocess on continuous tutorial
c70d328
:bug: remove non-exisitng key
1c72316
:sparkles: build dataloader fct
58f08e4
:bug: fix minor bug (wrongly assigned feat)
f895237
:zap: move masking code into main fct of module
5eb7954
:art: move feat_mask creation out
8c4e53b
:ambulance: temp. fix of CI
49a93d0
:zap: do not build dataloaders for multiprocessing
709c674
:construction: test t-test again, re-run pert. w/o model training
6e65cc6
:sparkles: add categorical pert. to multiprocessing
4efbdd9
:fire: remove unused code
dab767a
:art: remove unused argument
980bbce
:rewind: checkout developer version
c26b2dd
:art: move shared key to base class
05c1735
:fire: remove comments and code duplications
c5002cd
:art: update type hints, remove unused import
fe8c48b
Merge branch 'developer' into main
enryH File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
__all__ = ["calculate_accuracy", "calculate_cosine_similarity"] | ||
|
||
from move.analysis.metrics import ( | ||
calculate_accuracy, | ||
calculate_cosine_similarity, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
__all__ = ["calculate_accuracy", "calculate_cosine_similarity"] | ||
|
||
import numpy as np | ||
|
||
from move.core.typing import FloatArray | ||
|
||
|
||
def calculate_accuracy( | ||
original_input: FloatArray, reconstruction: FloatArray | ||
) -> FloatArray: | ||
"""Compute accuracy per sample. | ||
|
||
Args: | ||
original_input: Original labels (one-hot encoded as a 3D array). | ||
reconstruction: Reconstructed labels (2D array). | ||
|
||
Returns: | ||
Array of accuracy scores. | ||
""" | ||
if original_input.ndim != 3: | ||
raise ValueError("Expected original input to have three dimensions.") | ||
if reconstruction.ndim != 2: | ||
raise ValueError("Expected reconstruction to have two dimensions.") | ||
if original_input[:, :, 0].shape != reconstruction.shape: | ||
raise ValueError( | ||
f"Original input {original_input.shape} and reconstruction " | ||
f"{reconstruction.shape} shapes do not match." | ||
) | ||
|
||
is_nan = original_input.sum(axis=2) == 0 | ||
original_input = np.argmax(original_input, axis=2) # 3D => 2D | ||
y_true = np.ma.masked_array(original_input, mask=is_nan) | ||
y_pred = np.ma.masked_array(reconstruction, mask=is_nan) | ||
|
||
num_features = np.ma.count(y_true, axis=1) | ||
scores = np.sum(y_true == y_pred, axis=1) / num_features | ||
|
||
return np.ma.filled(scores, 0) | ||
|
||
|
||
def calculate_cosine_similarity( | ||
original_input: FloatArray, reconstruction: FloatArray | ||
) -> FloatArray: | ||
"""Compute cosine similarity per sample. | ||
|
||
Args: | ||
original_input: Original values (2D array). | ||
reconstruction: Reconstructed values (2D array). | ||
|
||
Returns: | ||
Array of similarities. | ||
""" | ||
if any((original_input.ndim != 2, reconstruction.ndim != 2)): | ||
raise ValueError("Expected both inputs to have two dimensions.") | ||
if original_input.shape != reconstruction.shape: | ||
raise ValueError( | ||
f"Original input {original_input.shape} and reconstruction " | ||
f"{reconstruction.shape} shapes do not match." | ||
) | ||
|
||
is_nan = original_input == 0 | ||
x = np.ma.masked_array(original_input, mask=is_nan) | ||
y = np.ma.masked_array(reconstruction, mask=is_nan) | ||
|
||
# Equivalent to `np.diag(sklearn.metrics.pairwise.cosine_similarity(x, y))` | ||
# But can handle masked arrays | ||
scores = np.sum(x * y, axis=1) / (norm(x) * norm(y)) | ||
|
||
return np.ma.filled(scores, 0) | ||
|
||
|
||
def norm(x: np.ma.MaskedArray, axis: int = 1) -> np.ma.MaskedArray: | ||
"""Return Euclidean norm. This function is equivalent to `np.linalg.norm`, | ||
but it can handle masked arrays. | ||
|
||
Args: | ||
x: 2D masked array | ||
axis: Axis along which to the operation is performed. Defaults to 1. | ||
|
||
Returns: | ||
1D array with the specified axis removed. | ||
""" | ||
return np.sqrt(np.sum(x**2, axis=axis)) | ||
|
||
|
||
def get_2nd_order_polynomial(x_array, y_array, n_points=100): | ||
""" | ||
Given a set of x an y values, find the 2nd oder polynomial fitting best the data. | ||
|
||
Returns: | ||
x_pol: x coordinates for the polynomial function evaluation. | ||
y_pol: y coordinates for the polynomial function evaluation. | ||
""" | ||
a2, a1, a = np.polyfit(x_array, y_array, deg=2) | ||
|
||
x_pol = np.linspace(np.min(x_array), np.max(x_array), n_points) | ||
y_pol = np.array([a2 * x * x + a1 * x + a for x in x_pol]) | ||
|
||
return x_pol, y_pol, (a2, a1, a) |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will create an extra branch with your analysis scripts/configs - and then merge the core functionality to the developer branch. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
defaults: | ||
- base_data | ||
|
||
raw_data_path: data/ | ||
interim_data_path: interim_data/ | ||
results_path: results/ | ||
|
||
sample_names: common_samples_500 | ||
|
||
categorical_inputs: | ||
- name: OS | ||
- name: DSS | ||
- name: PFI | ||
- name: DFI | ||
- name: ajcc_pathologic_tumor_stage | ||
- name: gender | ||
- name: cancer_type_abbreviation | ||
- name: histological_type | ||
- name: vital_status | ||
|
||
continuous_inputs: | ||
- name: pheno_continuous_float | ||
- name: iso_IF_100 | ||
- name: iso_tpm_100 | ||
- name: gene_tpm_100 |
24 changes: 24 additions & 0 deletions
24
isoforms_first_try/config/task/isoforms__id_assoc_bayes.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
defaults: | ||
- identify_associations_bayes | ||
|
||
multiprocess: True | ||
|
||
batch_size: 250 | ||
|
||
num_refits: 2 | ||
|
||
target_dataset: iso_tpm_100 # Dataset to perturb | ||
target_value: maximum # We perturb in all samples for the maximum value of that feature across all samples | ||
save_refits: True | ||
|
||
model: | ||
num_hidden: | ||
- 150 | ||
num_latent: 10 | ||
beta: 0.001 | ||
dropout: .1 | ||
cuda: false | ||
|
||
training_loop: | ||
lr: 1e-4 | ||
num_epochs: 20 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
from move.tasks import encode_data | ||
from move.data import io | ||
from move.data import preprocessing | ||
|
||
config = io.read_config("isoforms", "encode_data") | ||
encode_data(config.data) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/bash | ||
|
||
# The following are commonly used options for running jobs. Remove one | ||
# "#" from the "##SBATCH" lines (changing them to "#SBATCH") to enable | ||
# a given option. | ||
|
||
#SBATCH --job-name=encode500 | ||
# The number of CPUs (cores) used by your task. Defaults to 1. | ||
###SBATCH --cpus-per-task=10 | ||
# The amount of RAM used by your task. Tasks are automatically assigned 15G | ||
# per CPU (set above) if this option is not set. | ||
#SBATCH --mem=800G | ||
# Request a GPU on the GPU code. Use `--gres=gpu:a100:2` to request both GPUs. | ||
##SBATCH --partition=gpuqueue --gres=gpu:a100:1 | ||
# Send notifications when job ends. Remember to update the email address! | ||
##SBATCH [email protected] --mail-type=END,FAIL | ||
# Set an error file | ||
#SBATCH --error=encode_iso.err | ||
#SBATCH --out=encode_iso.log | ||
|
||
|
||
module load python/3.11.3 | ||
python encode_data_iso.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
[INFO - encode_data]: Beginning task: encode data | ||
[INFO - encode_data]: Encoding 'OS' | ||
[INFO - encode_data]: Encoding 'DSS' | ||
[INFO - encode_data]: Encoding 'PFI' | ||
[INFO - encode_data]: Encoding 'DFI' | ||
[INFO - encode_data]: Encoding 'ajcc_pathologic_tumor_stage' | ||
[INFO - encode_data]: Encoding 'gender' | ||
[INFO - encode_data]: Encoding 'cancer_type_abbreviation' | ||
[INFO - encode_data]: Encoding 'histological_type' | ||
[INFO - encode_data]: Encoding 'vital_status' | ||
[INFO - encode_data]: Encoding 'pheno_continuous_float' | ||
[INFO - encode_data]: Encoding 'iso_IF_2000_data' | ||
[INFO - encode_data]: Encoding 'iso_tpm_2000_data' | ||
[INFO - encode_data]: Encoding 'gene_tpm_2000_data' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from move.tasks import identify_associations_multiprocess | ||
from move.data import io | ||
|
||
config = io.read_config("isoforms", "isoforms__id_assoc_bayes") | ||
identify_associations_multiprocess(config) | ||
|
23 changes: 23 additions & 0 deletions
23
isoforms_first_try/identify_assoc_bayes_iso_multiprocess.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/bash | ||
|
||
# The following are commonly used options for running jobs. Remove one | ||
# "#" from the "##SBATCH" lines (changing them to "#SBATCH") to enable | ||
# a given option. | ||
|
||
#SBATCH --job-name=500multi | ||
|
||
# The number of CPUs (cores) used by your task. Defaults to 1. | ||
#SBATCH --cpus-per-task=50 | ||
# The amount of RAM used by your task. Tasks are automatically assigned 15G | ||
# per CPU (set above) if this option is not set. | ||
#SBATCH --mem=1000G | ||
# Request a GPU on the GPU code. Use `--gres=gpu:a100:2` to request both GPUs. | ||
##SBATCH --partition=gpuqueue --gres=gpu:a100:1 | ||
# Send notifications when job ends. Remember to update the email address! | ||
##SBATCH [email protected] --mail-type=END,FAIL | ||
# Set an error file | ||
#SBATCH --error=multi_bayes_iso.err | ||
|
||
|
||
module load python/3.11.3 | ||
python identify_assoc_bayes_iso_multiprocess.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from move.tasks import identify_associations | ||
from move.data import io | ||
|
||
config = io.read_config("isoforms", "isoforms__id_assoc_bayes") | ||
identify_associations(config) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/bash | ||
|
||
# The following are commonly used options for running jobs. Remove one | ||
# "#" from the "##SBATCH" lines (changing them to "#SBATCH") to enable | ||
# a given option. | ||
|
||
#SBATCH --job-name=500notmulti_bayes | ||
|
||
# The number of CPUs (cores) used by your task. Defaults to 1. | ||
###SBATCH --cpus-per-task=1 | ||
# The amount of RAM used by your task. Tasks are automatically assigned 15G | ||
# per CPU (set above) if this option is not set. | ||
#SBATCH --mem=1000G | ||
# Request a GPU on the GPU code. Use `--gres=gpu:a100:2` to request both GPUs. | ||
##SBATCH --partition=gpuqueue --gres=gpu:a100:1 | ||
# Send notifications when job ends. Remember to update the email address! | ||
###SBATCH [email protected] --mail-type=END,FAIL | ||
# Set an error file | ||
#SBATCH --error=normal_bayes.err | ||
|
||
|
||
module load python/3.11.3 | ||
python identify_assoc_bayes_iso_notmulti.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DFI |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DSS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
OS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
PFI |
1 change: 1 addition & 0 deletions
1
isoforms_first_try/interim_data/ajcc_pathologic_tumor_stage.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ajcc_pathologic_tumor_stage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
cancer type abbreviation |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
gender |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
ENSG00000005302.17 | ||
ENSG00000006327.13 | ||
ENSG00000006432.15 | ||
ENSG00000017260.19 | ||
ENSG00000018699.11 | ||
ENSG00000026508.16 | ||
ENSG00000047249.16 | ||
ENSG00000051180.16 | ||
ENSG00000052841.14 | ||
ENSG00000060069.16 | ||
ENSG00000064666.14 | ||
ENSG00000065457.10 | ||
ENSG00000066044.13 | ||
ENSG00000066136.19 | ||
ENSG00000066468.20 | ||
ENSG00000069345.11 | ||
ENSG00000073605.18 | ||
ENSG00000074054.17 | ||
ENSG00000075415.12 | ||
ENSG00000075702.16 | ||
ENSG00000078747.12 | ||
ENSG00000080845.17 | ||
ENSG00000084636.17 | ||
ENSG00000090266.12 | ||
ENSG00000099899.14 | ||
ENSG00000099917.17 | ||
ENSG00000100129.17 | ||
ENSG00000100142.14 | ||
ENSG00000100599.15 | ||
ENSG00000100731.15 | ||
ENSG00000102226.9 | ||
ENSG00000104517.12 | ||
ENSG00000104613.11 | ||
ENSG00000104814.12 | ||
ENSG00000104824.16 | ||
ENSG00000105245.9 | ||
ENSG00000105323.16 | ||
ENSG00000106392.10 | ||
ENSG00000106665.15 | ||
ENSG00000110700.6 | ||
ENSG00000110719.9 | ||
ENSG00000117151.12 | ||
ENSG00000117394.19 | ||
ENSG00000117640.17 | ||
ENSG00000122482.20 | ||
ENSG00000122484.8 | ||
ENSG00000123352.17 | ||
ENSG00000124444.15 | ||
ENSG00000125122.14 | ||
ENSG00000125779.21 | ||
ENSG00000125962.14 | ||
ENSG00000125967.16 | ||
ENSG00000125991.18 | ||
ENSG00000130305.16 | ||
ENSG00000132199.18 | ||
ENSG00000132300.18 | ||
ENSG00000132600.16 | ||
ENSG00000133641.17 | ||
ENSG00000134013.15 | ||
ENSG00000135127.11 | ||
ENSG00000135801.9 | ||
ENSG00000135845.9 | ||
ENSG00000137817.16 | ||
ENSG00000137821.11 | ||
ENSG00000138399.17 | ||
ENSG00000139620.12 | ||
ENSG00000140598.13 | ||
ENSG00000140650.11 | ||
ENSG00000141252.19 | ||
ENSG00000143554.13 | ||
ENSG00000149016.15 | ||
ENSG00000149218.4 | ||
ENSG00000152240.12 | ||
ENSG00000153147.5 | ||
ENSG00000156261.12 | ||
ENSG00000156508.17 | ||
ENSG00000157106.16 | ||
ENSG00000157978.11 | ||
ENSG00000158863.21 | ||
ENSG00000159111.12 | ||
ENSG00000160298.17 | ||
ENSG00000160570.13 | ||
ENSG00000160691.18 | ||
ENSG00000161513.11 | ||
ENSG00000163110.14 | ||
ENSG00000163521.15 | ||
ENSG00000165526.8 | ||
ENSG00000165637.13 | ||
ENSG00000166797.10 | ||
ENSG00000166949.15 | ||
ENSG00000166971.16 | ||
ENSG00000168575.9 | ||
ENSG00000168646.12 | ||
ENSG00000169249.12 | ||
ENSG00000169925.16 | ||
ENSG00000169967.16 | ||
ENSG00000170142.11 | ||
ENSG00000170310.14 | ||
ENSG00000171617.13 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reminder to me: Check folder and most likely delete entire folder as duplicate.