Skip to content

Commit

Permalink
[add] split settings from metadata in lists
Browse files Browse the repository at this point in the history
  • Loading branch information
ibigen committed Jan 24, 2022
1 parent 138cb60 commit 81f4fb3
Show file tree
Hide file tree
Showing 36 changed files with 729 additions and 652 deletions.
6 changes: 5 additions & 1 deletion constants/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,11 @@ class Constants(object):
DATA_SET_GENERIC = "Generic" ## default name for a dataset

### NextClade link
NEXTCLADE_LINK = "https://clades.nextstrain.org/?input-fasta="
NEXTCLADE_LINK_sars_cov_2 = "https://clades.nextstrain.org/?dataset-name=sars-cov-2&input-fasta="
NEXTCLADE_LINK_A_H3N2 = "https://clades.nextstrain.org/?dataset-name=flu_h3n2_ha&input-fasta="
NEXTCLADE_LINK_A_H1N1 = "https://clades.nextstrain.org/?dataset-name=flu_h1n1pdm_ha&input-fasta="
NEXTCLADE_LINK_B_Yamagata = "https://clades.nextstrain.org/?dataset-name=flu_yam_ha&input-fasta="
NEXTCLADE_LINK_B_Victoria = "https://clades.nextstrain.org/?dataset-name=flu_vic_ha&input-fasta="
AUSPICE_LINK = "https://auspice.us/"

## NUMBER OF SETs to paginate
Expand Down
4 changes: 2 additions & 2 deletions constants/software_names.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,10 @@ class SoftwareNames(object):
"Number of reads R1", "Number of reads R2",
"Average read length R1", "Average read length R2",
"STDEV read length R1", "STDEV read length R2",
"Total bases",]
"Total reads",]
SOFTWARE_ILLUMINA_stat_collect_show_percentage = [
"Number of reads R1", "Number of reads R2",
"Total bases",]
"Total reads",]

SOFTWARE_RabbitQC = os.path.join(settings.DIR_SOFTWARE, "RabbitQC/rabbit_qc")
SOFTWARE_RabbitQC_name = "RabbitQC"
Expand Down
564 changes: 152 additions & 412 deletions deprecated_tests/tests_software_single.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions fluwebvirus/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,8 @@

DATE_FORMAT_FOR_TABLE = '%d-%m-%Y'
DATETIME_FORMAT_FOR_TABLE = '%d-%m-%Y %H:%M'
DATE_FORMAT_FOR_SHOW = '%Y-%m-%d'
DATETIME_FORMAT_FOR_TABLE_SHOW = '%Y-%m-%d %H:%M'
DATETIME_FORMAT = '%d-%m-%Y %H:%M'
DATETIME_INPUT_FORMATS = ['%d-%m-%Y', '%d/%m/%Y'] ## it's necessary to look which kind of date is returned from forms to correct the format

Expand Down
2 changes: 2 additions & 0 deletions fluwebvirus/settings_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,8 @@

DATE_FORMAT_FOR_TABLE = '%d-%m-%Y'
DATETIME_FORMAT_FOR_TABLE = '%d-%m-%Y %H:%M'
DATE_FORMAT_FOR_SHOW = '%Y-%m-%d'
DATETIME_FORMAT_FOR_TABLE_SHOW = '%Y-%m-%d %H:%M'
DATETIME_FORMAT = '%d-%m-%Y %H:%M'
DATETIME_INPUT_FORMATS = ['%d-%m-%Y', '%d/%m/%Y'] ## it's necessary to look which kind of date is returned from forms to correct the format

Expand Down
9 changes: 6 additions & 3 deletions managing_files/management/commands/collect_global_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from managing_files.models import Project
from utils.collect_extra_data import CollectExtraData
from django.contrib.auth.models import User
import logging
import logging, datetime

class Command(BaseCommand):
'''
Expand Down Expand Up @@ -38,12 +38,15 @@ def handle(self, *args, **options):
self.stdout.write("Starting for project_id: " + str(project_id))
self.logger_production.info("Starting for project_id: " + str(project_id))
self.logger_debug.info("Starting for project_id: " + str(project_id))

print(list(Project.objects.all()))
try:
project = Project.objects.get(pk=project_id)
if (user_id == None): user = project.owner
else: user = User.objects.get(pk=user_id)

### change date
project.last_change_date = datetime.datetime.now()
project.save()

collect_extra_data.collect_extra_data_for_project(project, user)
self.stdout.write("End")
except Project.DoesNotExist as e:
Expand Down
7 changes: 7 additions & 0 deletions managing_files/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,8 @@ class Project(models.Model):
PERCENTAGE_validated_minor_variants = 51 ## only pass <= 50
PROJECT_FILE_NAME_SAMPLE_RESULT_TSV = "Sample_list.tsv" ### first column ID instead of 'sample name' to be compatible with Phandango e Microreact
PROJECT_FILE_NAME_SAMPLE_RESULT_CSV = "Sample_list.csv" ### first column ID instead of 'sample name' to be compatible with Phandango e Microreact
PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_TSV = "Sample_list_settings.tsv" ### first column ID instead of 'sample name' to be compatible with Phandango e Microreact
PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_CSV = "Sample_list_settings.csv" ### first column ID instead of 'sample name' to be compatible with Phandango e Microreact
PROJECT_FILE_NAME_SAMPLE_RESULT_CSV_simple = "Sample_list_simple.csv" ### first column must be ID because of manging_files.ajax_views.show_phylo_canvas
### this file is only used for to show the manging_files.views.ShowSampleProjectsView
PROJECT_FILE_NAME_SAMPLE_RESULT_json = "Sample_list_simple.json" ### first column ID instead of 'sample name' to be compatible with Phandango e Microreact, to download to
Expand All @@ -796,6 +798,8 @@ class Project(models.Model):

PROJECT_FILE_NAME_Pangolin_lineage = "PangolinLineage.csv" ### has the result of pangolin lineage

PROJECT_FILE_NAME_all_files_zipped = "AllFiles.zip" ### Several files zipped

## put the type file here to clean if there isn't enough sequences to create the trees and alignments
vect_clean_file = [PROJECT_FILE_NAME_MAFFT, PROJECT_FILE_NAME_FASTTREE,\
PROJECT_FILE_NAME_FASTTREE_tree,\
Expand Down Expand Up @@ -877,6 +881,9 @@ def _clean_name(self, name_to_clean, dict_to_clean = { ' ' : '_', '(' : '', ')'
name_to_clean = name_to_clean.replace(key, dict_to_clean[key])
return name_to_clean

def get_clean_project_name(self):
return self._clean_name(self.name)

def get_global_file_by_project(self, type_path, file_name):
"""
type_path: constants.TypePath -> MEDIA_ROOT, MEDIA_URL
Expand Down
118 changes: 86 additions & 32 deletions managing_files/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Create your views here.

import ntpath, os, logging, sys
from datetime import datetime
from django.views import generic
from braces.views import LoginRequiredMixin, FormValidMessageMixin
from django.urls import reverse_lazy
Expand Down Expand Up @@ -41,6 +42,7 @@
from django.template.defaultfilters import filesizeformat
from settings.constants_settings import ConstantsSettings
from settings.models import Software as SoftwareSettings
from utils.support_django_template import get_link_for_dropdown_item

# http://www.craigderington.me/generic-list-view-with-django-tables/

Expand Down Expand Up @@ -254,16 +256,12 @@ def get_context_data(self, **kwargs):
## list of all samples in CSV and TSV
csv_file = self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_ROOT", FileExtensions.FILE_CSV)
if os.path.exists(csv_file):
context['list_samples_file_csv'] = mark_safe('<a rel="nofollow" href="' + \
self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_URL", FileExtensions.FILE_CSV) +\
'" download="' + os.path.basename(csv_file) + '" class="dropdown-item"> Download - ' +\
os.path.basename(csv_file) + '</a>')
context['list_samples_file_csv'] = get_link_for_dropdown_item(
self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_URL", FileExtensions.FILE_CSV))
tsv_file = self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_ROOT", FileExtensions.FILE_TSV)
if os.path.exists(tsv_file):
context['list_samples_file_tsv'] = mark_safe('<a rel="nofollow" href="' + \
self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_URL", FileExtensions.FILE_TSV) +\
'" download="' + os.path.basename(tsv_file) + '" class="dropdown-item"> Download - ' +\
os.path.basename(tsv_file) + '</a>')
context['list_samples_file_tsv'] = get_link_for_dropdown_item(
self.utils.get_sample_list_by_user(self.request.user.id, "MEDIA_URL", FileExtensions.FILE_TSV))

context['table'] = table
context['nav_sample'] = True
Expand Down Expand Up @@ -1020,7 +1018,7 @@ def get_context_data(self, **kwargs):
context['href_trimmonatic_quality_2'] = "Not available"

#### data from illumina stat
stat_data = self.software.get_stats_from_sample_reads(sample)
stat_data, total_reads = self.software.get_stats_from_sample_reads(sample)
if not stat_data is None: context['data_illuminastat'] = stat_data

else: ### other like Minion
Expand All @@ -1036,7 +1034,7 @@ def get_context_data(self, **kwargs):
else: context['href_trimmonatic_quality_1'] = "Not available"

#### data from nanoStat
stat_data = self.software.get_stats_from_sample_reads(sample)
stat_data, total_reads = self.software.get_stats_from_sample_reads(sample)
if not stat_data is None: context['data_nanostat'] = stat_data

### software
Expand Down Expand Up @@ -1598,9 +1596,43 @@ def get_context_data(self, **kwargs):
## Files
context['coverage_file'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_COVERAGE)
context['main_variations_snippy_file'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_TAB_VARIATIONS_SNIPPY)
context['sample_file_result_csv'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_SAMPLE_RESULT_CSV)
context['sample_file_result_tsv'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_SAMPLE_RESULT_TSV)
context['sample_file_all_consensus'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus)

## coverage
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_COVERAGE)):
context['samples_file_coverage'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_COVERAGE))
## variants
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_TAB_VARIATIONS_SNIPPY)):
context['samples_file_variants'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_TAB_VARIATIONS_SNIPPY))
## minor intra host
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_TAB_VARIATIONS_FREEBAYES)):
context['samples_file_minor_intra_host'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_TAB_VARIATIONS_FREEBAYES))
## all files zipped
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_all_files_zipped)):
context['download_all_files'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_all_files_zipped),
"{}_{}_{}".format(os.path.splitext(Project.PROJECT_FILE_NAME_all_files_zipped)[0],
project.get_clean_project_name(), datetime.now().strftime(settings.DATE_FORMAT_FOR_SHOW)))


if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_CSV)):
context['sample_file_result_csv'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_CSV))
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_TSV)):
context['sample_file_result_tsv'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_TSV))
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_CSV)):
context['samples_file_settings_statistics_csv'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_CSV))
if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_TSV)):
context['samples_file_settings_statistics_tsv'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_SETTINGS_TSV))

if os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus)):
context['sample_file_all_consensus'] = get_link_for_dropdown_item(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus))

### need to test because in the past this file was not created
context['freebays_variations_50_file'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_TAB_VARIATIONS_FREEBAYES)
Expand Down Expand Up @@ -1633,21 +1665,17 @@ def get_context_data(self, **kwargs):
(os.path.exists(file_pangolin_result) and software_pangolin.pangolin_results_out_date(project)) ):
context['update_pangolin'] = True
context['update_pangolin_message'] = mark_safe(software_pangolin.get_update_message(project))


## pangolin file
if (project.number_passed_sequences > 0 and os.path.exists(file_pangolin_result)):
context['pangolin_lineage'] = project.get_global_file_by_project_web(Project.PROJECT_FILE_NAME_Pangolin_lineage)
context['pangolin_lineage'] = get_link_for_dropdown_item(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_Pangolin_lineage))

#### nextclade link
# if (is_sars_cov_2 and \
# os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus)) and \
# settings.SHOW_NEXTCLADE_LINK): ## docker versions doesn't show NextClade link
if (os.path.exists(project.get_global_file_by_project(TypePath.MEDIA_ROOT, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus)) and \
settings.SHOW_NEXTCLADE_LINK): ## docker versions doesn't show NextClade link
context['nextclade_link'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK,
settings.WEB_SITE_HTTP_NAME,
get_current_site(self.request),
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus))
context = _get_constext_nextclade(
project.get_global_file_by_project(TypePath.MEDIA_URL, Project.PROJECT_FILE_NAME_SAMPLE_RESULT_all_consensus),
context, get_current_site(self.request), is_sars_cov_2)

return context

Expand Down Expand Up @@ -1959,22 +1987,48 @@ def get_context_data(self, **kwargs):
context['software_used'] = software_used

#### nextclade link
# software_pangolin = SoftwarePangolin()
# if (software_pangolin.is_ref_sars_cov_2(project_sample.project.reference.get_reference_fasta(TypePath.MEDIA_ROOT)) and \
# os.path.exists(project_sample.get_consensus_file(TypePath.MEDIA_ROOT)) and \
# settings.SHOW_NEXTCLADE_LINK): ## docker versions doesn't show NextClade link
software_pangolin = SoftwarePangolin()
is_sars_cov_2 = software_pangolin.is_ref_sars_cov_2(project_sample.project.reference.get_reference_fasta(TypePath.MEDIA_ROOT))
if (os.path.exists(project_sample.get_consensus_file(TypePath.MEDIA_ROOT)) and \
settings.SHOW_NEXTCLADE_LINK): ## docker versions doesn't show NextClade link
context['nextclade_link'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK,
settings.WEB_SITE_HTTP_NAME,
get_current_site(self.request),
project_sample.get_consensus_file(TypePath.MEDIA_URL))
context = _get_constext_nextclade(project_sample.get_consensus_file(TypePath.MEDIA_URL),
context, get_current_site(self.request), is_sars_cov_2)

except ProjectSample.DoesNotExist:
context['error_cant_see'] = 1
return context

def _get_constext_nextclade(media_url_path, context, current_site, is_sars_cov_2):

## sarscov 2
if (is_sars_cov_2):
context['nextclade_link_covid'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK_sars_cov_2,
settings.WEB_SITE_HTTP_NAME,
current_site,
media_url_path)
else:
context['nextclade_link_a_h3n2'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK_A_H3N2,
settings.WEB_SITE_HTTP_NAME,
current_site,
media_url_path)
context['nextclade_link_a_h1n1'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK_A_H1N1,
settings.WEB_SITE_HTTP_NAME,
current_site,
media_url_path)
context['nextclade_link_b_yamagata'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK_B_Yamagata,
settings.WEB_SITE_HTTP_NAME,
current_site,
media_url_path)
context['nextclade_link_b_victoria'] = "{}{}://{}{}".format(
Constants.NEXTCLADE_LINK_B_Victoria,
settings.WEB_SITE_HTTP_NAME,
current_site,
media_url_path)
return context

def is_all_check_box_in_session(vect_check_to_test, request):
"""
Expand Down
2 changes: 1 addition & 1 deletion static/tests/global_project/AllProjects_1.csv
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Name,#samples,Reference,Last access,Created
several_names_test_create_tree_6000,4,second_stage_2_ test_create_tree,14-12-2002 20:30
several_names_test_create_tree_6000,4,second_stage_2_ test_create_tree,2002-12-14 20:30
Total Projects,1
2 changes: 1 addition & 1 deletion static/tests/global_project/AllProjects_1.tsv
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"Name" "#samples" "Reference" "Last access" "Created"
"several_names_test_create_tree_6000" "4" "second_stage_2_ test_create_tree" "14-12-2002 20:30"
"several_names_test_create_tree_6000" "4" "second_stage_2_ test_create_tree" "2002-12-14 20:30"
"Total Projects" "1"
10 changes: 5 additions & 5 deletions static/tests/global_project/AllSamples_1.csv
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
,,,,,,,,,,,,,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,,,,,
sample,fastq1,fastq2,data set,vaccine status,week,onset date,collection date,lab reception date,latitude,longitude,type-subtype,xpto_1,Technology,Sample Down sized,Input Read Pairs,Both Surviving,Forward Only Surviving,Reverse Only Surviving,Dropped,FastQC,Trimmomatic,Uploaded Date,#Projects,Project Names
,,,,,,,,,,,,,,,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,Trimmo. stats.,,,,,
sample,fastq1,fastq2,data set,vaccine status,week,onset date,collection date,lab reception date,latitude,longitude,classification,xpto_1,Technology,Sample Down sized,Input Read Pairs,Both Surviving,Forward Only Surviving,Reverse Only Surviving,Dropped,FastQC,Trimmomatic,Uploaded Date,#Projects,Project Names
EVA011_S54,EVA011_S54_L001_R1_001.fastq.gz,EVA011_S54_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,,,,,,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA003_S91,EVA003_S91_L001_R1_001.fastq.gz,EVA003_S91_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,xpto,xpto1,xpto2,,xpto4,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA002_S52,EVA002_S52_L001_R1_001.fastq.gz,EVA002_S52_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,xpto,xpto1,xpto2,,xpto4,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA001_S66,EVA001_S66_L001_R1_001.fastq.gz,EVA001_S66_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,xpto,xpto1,xpto2,xpto3,xpto4,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA003_S91,EVA003_S91_L001_R1_001.fastq.gz,EVA003_S91_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,10,5,2,,44,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA002_S52,EVA002_S52_L001_R1_001.fastq.gz,EVA002_S52_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,10,5,2,,44,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
EVA001_S66,EVA001_S66_L001_R1_001.fastq.gz,EVA001_S66_L001_R2_001.fastq.gz,,,,,,,,,"xpto, zpto",xpto_1 xpto_1,Illumina,False,10,5,2,33,44,FastQC-0.11.9; (let's go again),Trimmomatic-0.39; (let's go again)/Trimmomatic-0.39; (let's go againsecond version trimmomatic),Date,1,several_names_test_create_tree_6000
Total Samples,4
Loading

0 comments on commit 81f4fb3

Please sign in to comment.