apscale-gui 3.2.2__tar.gz → 3.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apscale_gui
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Advanced Pipeline for Simple yet Comprehensive AnaLysEs of DNA metabarcoding data - Graphical User Interface
5
5
  Home-page: https://github.com/TillMacher/apscale_gui
6
6
  Author: Till-Hendrik Macher
@@ -373,11 +373,32 @@ def update_settings_file(settings_xlsx, settings_dfs):
373
373
 
374
374
  st.success(f"Settings updated and saved to {settings_xlsx}")
375
375
 
376
- def run_apscale(task, project_folder):
376
+ def run_apscale(task, project_folder, modules_to_run):
377
377
 
378
378
  st.info('Starting apscale analysis! Please refer to the terminal for live outputs!')
379
379
  print('')
380
380
 
381
+ if modules_to_run != []:
382
+ for task in modules_to_run:
383
+ if task == "PE-merging":
384
+ b_pe_merging.main(project_folder)
385
+ elif task == "Primer-trimming":
386
+ c_primer_trimming.main(project_folder)
387
+ elif task == "Quality-filtering":
388
+ d_quality_filtering.main(project_folder)
389
+ elif task == "Dereplication":
390
+ e_dereplication.main(project_folder)
391
+ elif task == "Denoising":
392
+ f_denoising.main(project_folder)
393
+ elif task == "SWARM clustering":
394
+ g_swarm_clustering.main(project_folder)
395
+ elif task == "Replicate merging":
396
+ h_replicate_merging.main(project_folder)
397
+ elif task == "NC removal":
398
+ i_nc_removal.main(project_folder)
399
+ elif task == "Generate read table":
400
+ j_generate_read_table.main(project_folder)
401
+
381
402
  if task == "Run apscale (basic mode)":
382
403
  b_pe_merging.main(project_folder)
383
404
  c_primer_trimming.main(project_folder)
@@ -386,7 +407,7 @@ def run_apscale(task, project_folder):
386
407
  f_denoising.main(project_folder)
387
408
  g_swarm_clustering.main(project_folder)
388
409
  j_generate_read_table.main(project_folder)
389
- if task == "Run apscale (complete mode)":
410
+ elif task == "Run apscale (complete mode)":
390
411
  b_pe_merging.main(project_folder)
391
412
  c_primer_trimming.main(project_folder)
392
413
  d_quality_filtering.main(project_folder)
@@ -396,27 +417,29 @@ def run_apscale(task, project_folder):
396
417
  h_replicate_merging.main(project_folder)
397
418
  i_nc_removal.main(project_folder)
398
419
  j_generate_read_table.main(project_folder)
399
- if task == "PE-merging":
420
+ elif task == "PE-merging":
400
421
  b_pe_merging.main(project_folder)
401
- if task == "Primer-trimming":
422
+ elif task == "Primer-trimming":
402
423
  c_primer_trimming.main(project_folder)
403
- if task == "Quality-filtering":
424
+ elif task == "Quality-filtering":
404
425
  d_quality_filtering.main(project_folder)
405
- if task == "Dereplication":
426
+ elif task == "Dereplication":
406
427
  e_dereplication.main(project_folder)
407
- if task == "Denoising":
428
+ elif task == "Denoising":
408
429
  f_denoising.main(project_folder)
409
- if task == "SWARM clustering":
430
+ elif task == "SWARM clustering":
410
431
  g_swarm_clustering.main(project_folder)
411
- if task == "Replicate merging":
432
+ elif task == "Replicate merging":
412
433
  h_replicate_merging.main(project_folder)
413
- if task == "NC removal":
434
+ elif task == "NC removal":
414
435
  i_nc_removal.main(project_folder)
415
- if task == "Generate read table":
436
+ elif task == "Generate read table":
416
437
  j_generate_read_table.main(project_folder)
417
438
 
418
439
  st.success('Finished apscale analysis!')
419
440
  print('')
441
+ print('Finished apscale analysis!')
442
+ print('')
420
443
 
421
444
  def run_apscale_blast(project_folder, available_fasta_files, available_databases):
422
445
 
@@ -449,8 +472,7 @@ def run_apscale_blast(project_folder, available_fasta_files, available_databases
449
472
 
450
473
  categories = ['t_species', 't_genus', 't_family', 't_order', 't_class']
451
474
  thresholds = ','.join([str(st.session_state[i]) for i in categories])
452
- filter_mode = 1
453
- b_filter(output_folder, database, thresholds, str(st.session_state['n_cores']), filter_mode, st.session_state['rating_range'])
475
+ b_filter(output_folder, database, thresholds, str(st.session_state['n_cores']), st.session_state["filter_mode"], st.session_state['rating_range'], st.session_state['sim_range'])
454
476
 
455
477
  st.success('Finished blastn!')
456
478
  print('')
@@ -938,12 +960,28 @@ def main():
938
960
  ############################################################################################################
939
961
  st.subheader('Run apscale')
940
962
  options = ['Run apscale (basic mode)', 'Run apscale (complete mode)', 'PE-merging', 'Primer-trimming', 'Quality-filtering', 'Dereplication', 'Denoising', 'SWARM clustering', 'Replicate merging', 'NC removal', 'Generate read table']
941
- st.selectbox(label='Select module to run', options=options, index=0, key='run_apscale_mode')
963
+ col1, col2 = st.columns(2)
964
+ with col1:
965
+ run_mode = st.selectbox(label='Select module to run', options=options, index=0, key='run_apscale_mode')
966
+ with col2:
967
+ selected_module = False
968
+ modules_to_run = []
969
+ if run_mode not in ['Run apscale (basic mode)', 'Run apscale (complete mode)']:
970
+ selected_module = st.selectbox(label='Select module(s) to run', options=['Run all following modules', 'Run selected module only'], key='run_apscale_mode_continous')
971
+ if selected_module == 'Run all following modules':
972
+ selected_module_basic = st.selectbox(label='Run in basic mode', options=['Yes', 'No'], key='selected_module_basic')
973
+ if selected_module == 'Run all following modules':
974
+ module_loc = options.index(run_mode)
975
+ modules_to_run = options[module_loc:]
976
+ if selected_module_basic == 'Yes':
977
+ modules_to_run = [i for i in modules_to_run if i not in ['Replicate merging', 'NC removal']]
978
+ modules_disp = ' -> '.join(modules_to_run)
979
+ st.info(f'All following modules will be run:\n\n{modules_disp}')
942
980
 
943
981
  if st.session_state["P5 Primer (5' - 3')"] == '' or st.session_state["P7 Primer (5' - 3')"] == '' or st.session_state['min length'] == '' or st.session_state['max length'] =='':
944
982
  st.error('Please fill out all required fields!')
945
983
  elif float(st.session_state["sequence group threshold"]) >= 1:
946
- st.error('Please choose a sequence group threshold > 1.\n\nESVs are generated seperately!')
984
+ st.error('Please choose a sequence group threshold between 0 and 0.99.\n\nESVs are generated seperately!')
947
985
  else:
948
986
  if st.session_state['run_apscale_mode'] == 'Run apscale (basic mode)':
949
987
  st.info('The "Basic mode" mode skips "Replicate merging" and "NC removal".')
@@ -951,7 +989,7 @@ def main():
951
989
  st.info('The "Complete mode" runs all modules (except specifically disabled above).')
952
990
  if st.button('Start raw data analysis'):
953
991
  update_settings_file(settings_xlsx, settings_dfs)
954
- run_apscale(st.session_state['run_apscale_mode'], project_folder)
992
+ run_apscale(st.session_state['run_apscale_mode'], project_folder, modules_to_run)
955
993
 
956
994
 
957
995
  ############################################################################################################
@@ -965,7 +1003,7 @@ def main():
965
1003
  st.text_input(label='n_cores', key='n_cores', value=multiprocessing.cpu_count()-2)
966
1004
  st.text_input(label='subset_size', key='subset_size', value=100)
967
1005
  with col2:
968
- st.selectbox(label='Task', key='task', options=['blastn', 'megablast', 'dc-megablast'])
1006
+ st.selectbox(label='Task', key='task', options=['blastn', 'megablast', 'dc-megablast'], index=1)
969
1007
  st.text_input(label='max_target_seqs', key='max_target_seqs', value=20)
970
1008
  # Database & query
971
1009
  available_databases = {Path(i).name:Path(i) for i in glob.glob(str(path_to_projects / 'APSCALE_databases' / '*'))}
@@ -984,7 +1022,11 @@ def main():
984
1022
  st.text_input(label='Order (%)', key='t_order', value=87)
985
1023
  with col2:
986
1024
  st.selectbox(label='Masking', key='masking', options=[True, False], index=0)
987
- st.text_input(label='Rating range', key='rating_range', value=10)
1025
+ filter_mode_dict = {'similarity -> e-value -> rating (optional)':"1", 'e-value -> similarity -> rating (optional)':"2", 'similarity -> rating (optional)':"3"}
1026
+ filter_mode_key = st.selectbox(label='Filter mode', key='filter_mode_key', options=filter_mode_dict.keys())
1027
+ st.session_state["filter_mode"] = filter_mode_dict[filter_mode_key]
1028
+ st.selectbox(label='Rating range', key='rating_range', options=[i for i in range(0, 11)], index=5)
1029
+ st.selectbox(label='Similarity range', key='sim_range', options=[i for i in range(0, 11)], index=0)
988
1030
  # Run blast
989
1031
  st.subheader('Run apscale-blast')
990
1032
  if st.button(f'Start taxonomic assignment'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apscale_gui
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Advanced Pipeline for Simple yet Comprehensive AnaLysEs of DNA metabarcoding data - Graphical User Interface
5
5
  Home-page: https://github.com/TillMacher/apscale_gui
6
6
  Author: Till-Hendrik Macher
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="apscale_gui",
8
- version="3.2.2",
8
+ version="3.2.4",
9
9
  author="Till-Hendrik Macher",
10
10
  author_email="macher@uni-trier.de",
11
11
  description="Advanced Pipeline for Simple yet Comprehensive AnaLysEs of DNA metabarcoding data - Graphical User Interface",
File without changes
File without changes
File without changes
File without changes