Skip to content

Commit f980652

Browse files
committed
move func again
1 parent ae541e3 commit f980652

File tree

4 files changed

+39
-37
lines changed

4 files changed

+39
-37
lines changed

seqr/urls.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
edit_individuals_handler, \
4040
delete_individuals_handler, \
4141
import_gregor_metadata, \
42-
load_rna_seq_sample_data, \
4342
receive_individuals_table_handler, \
4443
save_individuals_table_handler, \
4544
receive_individuals_metadata_handler, \
@@ -147,7 +146,7 @@
147146
from seqr.views.apis.project_api import create_project_handler, update_project_handler, delete_project_handler, \
148147
project_page_data, project_families, project_overview, project_mme_submisssions, project_individuals, \
149148
project_analysis_groups, update_project_workspace, project_family_notes, project_collaborators, project_locus_lists, \
150-
project_samples, project_notifications, mark_read_project_notifications, subscribe_project_notifications
149+
project_samples, project_notifications, mark_read_project_notifications, subscribe_project_notifications, load_rna_seq_sample_data
151150
from seqr.views.apis.project_categories_api import update_project_categories_handler
152151
from seqr.views.apis.anvil_workspace_api import anvil_workspace_page, create_project_from_workspace, \
153152
grant_workspace_access, validate_anvil_vcf, add_workspace_data, get_anvil_vcf_list, get_anvil_igv_options

seqr/views/apis/individual_api.py

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@
99
from django.db.models import prefetch_related_objects
1010

1111
from reference_data.models import HumanPhenotypeOntology
12-
from seqr.models import Individual, Family, RnaSample, CAN_VIEW
12+
from seqr.models import Individual, Family, CAN_VIEW
1313
from seqr.utils.file_utils import file_iter
1414
from seqr.utils.gene_utils import get_genes, get_gene_ids_for_gene_symbols
15-
from seqr.utils.logging_utils import SeqrLogger
1615

1716
from seqr.views.utils.anvil_metadata_utils import PARTICIPANT_TABLE, PHENOTYPE_TABLE, EXPERIMENT_TABLE, \
1817
EXPERIMENT_LOOKUP_TABLE, FINDINGS_TABLE, FINDING_METADATA_COLUMNS, TRANSCRIPT_FIELDS, GENE_COLUMN, parse_population
19-
from seqr.views.utils.dataset_utils import post_process_rna_data, RNA_DATA_TYPE_CONFIGS
20-
from seqr.views.utils.file_utils import save_uploaded_file, load_uploaded_file, parse_file, get_temp_file_path
21-
from seqr.views.utils.json_to_orm_utils import update_individual_from_json, update_model_from_json
18+
from seqr.views.utils.file_utils import save_uploaded_file, load_uploaded_file, parse_file
19+
from seqr.views.utils.json_to_orm_utils import update_individual_from_json
2220
from seqr.views.utils.json_utils import create_json_response, _to_snake_case, _to_camel_case
2321
from seqr.views.utils.orm_to_json_utils import _get_json_for_model, _get_json_for_individuals, add_individual_hpo_details, \
2422
_get_json_for_families, get_json_for_rna_seq_outliers, get_project_collaborators_by_username, INDIVIDUAL_DISPLAY_NAME_EXPR, \
@@ -32,7 +30,6 @@
3230
from seqr.views.utils.individual_utils import delete_individuals, add_or_update_individuals_and_families
3331
from seqr.views.utils.variant_utils import bulk_create_tagged_variants
3432

35-
logger = SeqrLogger(__name__)
3633

3734
@login_and_policies_required
3835
def update_individual_handler(request, individual_guid):
@@ -948,30 +945,3 @@ def get_hpo_terms(request, hpo_parent_id):
948945
for hpo in HumanPhenotypeOntology.objects.filter(parent_id=hpo_parent_id)
949946
}
950947
})
951-
952-
953-
@pm_or_data_manager_required
954-
def load_rna_seq_sample_data(request, sample_guid):
955-
sample = RnaSample.objects.get(guid=sample_guid)
956-
logger.info(f'Loading outlier data for {sample.individual.individual_id}', request.user)
957-
958-
request_json = json.loads(request.body)
959-
file_name = request_json['fileName']
960-
data_type = request_json['dataType']
961-
config = RNA_DATA_TYPE_CONFIGS[data_type]
962-
963-
file_path = get_temp_file_path(f'{file_name}/{sample_guid}.json.gz')
964-
try:
965-
data_rows = [json.loads(line) for line in file_iter(file_path, user=request.user)]
966-
data_rows, error = post_process_rna_data(sample_guid, data_rows, **config.get('post_process_kwargs', {}))
967-
except FileNotFoundError:
968-
logger.error(f'No saved temp data found for {sample_guid} with file prefix {file_name}', request.user)
969-
error = 'Data for this sample was not properly parsed. Please re-upload the data'
970-
if error:
971-
return create_json_response({'error': error}, status=400)
972-
973-
model_cls = config['model_class']
974-
model_cls.bulk_create(request.user, [model_cls(sample=sample, **data) for data in data_rows], batch_size=1000)
975-
update_model_from_json(sample, {'is_active': True}, user=request.user)
976-
977-
return create_json_response({'success': True})

seqr/views/apis/individual_api_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from seqr.views.apis.individual_api import edit_individuals_handler, update_individual_handler, \
1717
delete_individuals_handler, receive_individuals_table_handler, save_individuals_table_handler, \
1818
receive_individuals_metadata_handler, save_individuals_metadata_table_handler, update_individual_hpo_terms, \
19-
get_hpo_terms, get_individual_rna_seq_data, import_gregor_metadata, load_rna_seq_sample_data
19+
get_hpo_terms, get_individual_rna_seq_data, import_gregor_metadata
2020
from seqr.views.apis.data_manager_api_tests import RNA_DATA_TYPE_PARAMS
2121
from seqr.views.apis.report_api_tests import PARTICIPANT_TABLE, PHENOTYPE_TABLE, EXPERIMENT_TABLE, EXPERIMENT_LOOKUP_TABLE, GENETIC_FINDINGS_TABLE
2222
from seqr.views.utils.test_utils import AuthenticationTestCase, AnvilAuthenticationTestCase, INDIVIDUAL_FIELDS, \

seqr/views/apis/project_api.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313

1414
from matchmaker.models import MatchmakerSubmission
1515
from seqr.models import Project, Family, Individual, Sample, RnaSample, FamilyNote, PhenotypePrioritization, CAN_EDIT
16+
from seqr.utils.file_utils import file_iter
17+
from seqr.utils.logging_utils import SeqrLogger
1618
from seqr.views.utils.airtable_utils import AirtableSession, ANVIL_REQUEST_TRACKING_TABLE
19+
from seqr.views.utils.dataset_utils import post_process_rna_data, RNA_DATA_TYPE_CONFIGS
20+
from seqr.views.utils.file_utils import get_temp_file_path
1721
from seqr.views.utils.individual_utils import delete_individuals
1822
from seqr.views.utils.json_utils import create_json_response, _to_snake_case, _to_camel_case
1923
from seqr.views.utils.json_to_orm_utils import update_project_from_json, create_model_from_json, update_model_from_json
@@ -23,12 +27,14 @@
2327
FAMILY_ADDITIONAL_VALUES
2428
from seqr.views.utils.permissions_utils import get_project_and_check_permissions, check_project_permissions, \
2529
check_user_created_object_permissions, pm_required, user_is_pm, login_and_policies_required, \
26-
has_workspace_perm, has_case_review_permissions, is_internal_anvil_project
30+
has_workspace_perm, has_case_review_permissions, is_internal_anvil_project, pm_or_data_manager_required
2731
from seqr.views.utils.project_context_utils import families_discovery_tags, \
2832
add_project_tag_type_counts, get_project_analysis_groups, get_project_locus_lists
2933
from seqr.views.utils.terra_api_utils import is_anvil_authenticated, anvil_enabled
3034
from settings import BASE_URL
3135

36+
logger = SeqrLogger(__name__)
37+
3238

3339
@pm_required
3440
def create_project_handler(request):
@@ -456,3 +462,30 @@ def _delete_project(project_guid, user):
456462
record_and_filters={'AnVIL Project URL': f'{BASE_URL}project/{project_guid}/project_page'},
457463
update={'Status': 'Project Deleted'},
458464
)
465+
466+
467+
@pm_or_data_manager_required
468+
def load_rna_seq_sample_data(request, sample_guid):
469+
sample = RnaSample.objects.get(guid=sample_guid)
470+
logger.info(f'Loading outlier data for {sample.individual.individual_id}', request.user)
471+
472+
request_json = json.loads(request.body)
473+
file_name = request_json['fileName']
474+
data_type = request_json['dataType']
475+
config = RNA_DATA_TYPE_CONFIGS[data_type]
476+
477+
file_path = get_temp_file_path(f'{file_name}/{sample_guid}.json.gz')
478+
try:
479+
data_rows = [json.loads(line) for line in file_iter(file_path, user=request.user)]
480+
data_rows, error = post_process_rna_data(sample_guid, data_rows, **config.get('post_process_kwargs', {}))
481+
except FileNotFoundError:
482+
logger.error(f'No saved temp data found for {sample_guid} with file prefix {file_name}', request.user)
483+
error = 'Data for this sample was not properly parsed. Please re-upload the data'
484+
if error:
485+
return create_json_response({'error': error}, status=400)
486+
487+
model_cls = config['model_class']
488+
model_cls.bulk_create(request.user, [model_cls(sample=sample, **data) for data in data_rows], batch_size=1000)
489+
update_model_from_json(sample, {'is_active': True}, user=request.user)
490+
491+
return create_json_response({'success': True})

0 commit comments

Comments
 (0)