ena-upload-cli 0.7.1__tar.gz → 0.7.2__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.
- {ena-upload-cli-0.7.1/ena_upload_cli.egg-info → ena_upload_cli-0.7.2}/PKG-INFO +1 -1
- ena_upload_cli-0.7.2/ena_upload/_version.py +1 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/ena_upload.py +7 -1
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000012.xml +164 -165
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000013.xml +226 -167
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000014.xml +208 -183
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000015.xml +196 -171
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000016.xml +199 -168
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000017.xml +196 -171
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000018.xml +203 -171
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000019.xml +191 -192
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000020.xml +320 -183
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000021.xml +260 -182
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000022.xml +288 -268
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000023.xml +199 -179
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000024.xml +216 -189
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000025.xml +185 -186
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000027.xml +183 -184
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000029.xml +23 -22
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000030.xml +33 -25
- ena_upload_cli-0.7.2/ena_upload/templates/ENA_template_samples_ERC000031.xml +1437 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000032.xml +13 -12
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000033.xml +13 -12
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000035.xml +24 -24
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000036.xml +50 -51
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000037.xml +204 -211
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000038.xml +63 -69
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000039.xml +19 -18
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000040.xml +30 -28
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000041.xml +44 -45
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000043.xml +48 -49
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000044.xml +7 -6
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000047.xml +98 -104
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000048.xml +128 -134
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000049.xml +149 -155
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000050.xml +87 -93
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000051.xml +27 -27
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000052.xml +41 -47
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000053.xml +55 -55
- ena_upload_cli-0.7.2/ena_upload/templates/ENA_template_samples_ERC000055.xml +1135 -0
- ena_upload_cli-0.7.2/ena_upload/templates/ENA_template_samples_ERC000056.xml +1796 -0
- ena_upload_cli-0.7.2/ena_upload/templates/ENA_template_samples_ERC000057.xml +746 -0
- ena_upload_cli-0.7.2/ena_upload/templates/ENA_template_samples_ERC000058.xml +1009 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2/ena_upload_cli.egg-info}/PKG-INFO +1 -1
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload_cli.egg-info/SOURCES.txt +4 -0
- ena-upload-cli-0.7.1/ena_upload/_version.py +0 -1
- ena-upload-cli-0.7.1/ena_upload/templates/ENA_template_samples_ERC000031.xml +0 -533
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/LICENSE +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/MANIFEST.in +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/README.md +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/__init__.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/check_remote.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/__init__.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/characteristic.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_experiment.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_run.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_sample.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_std_lib.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_study.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/ena_submission.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/assay_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/comment_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/data_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/factor_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/factor_value_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/investigation_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/material_attribute_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/material_attribute_value_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/material_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/ontology_annotation_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/ontology_source_reference_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/organization_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/person_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/process_parameter_value_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/process_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/protocol_parameter_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/protocol_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/publication_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/sample_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/source_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/json_schemas/study_schema.json +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/json_parsing/other_material.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA.project.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_FILE.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_LIBRARY_SELECTION.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_LIBRARY_SOURCE.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_LIBRARY_STRATEGY.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_PLATFORM.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_experiments.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_runs.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000011.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000028.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000034.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_samples_ERC000045.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_studies.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/ENA_template_submission.xml +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.common.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.experiment.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.run.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.sample.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.study.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload/templates/SRA.submission.xsd +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload_cli.egg-info/dependency_links.txt +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload_cli.egg-info/entry_points.txt +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload_cli.egg-info/requires.txt +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/ena_upload_cli.egg-info/top_level.txt +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/requirements.txt +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/setup.cfg +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/setup.py +0 -0
- {ena-upload-cli-0.7.1 → ena_upload_cli-0.7.2}/tests/test_ena_objects.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.7.2"
|
|
@@ -39,6 +39,12 @@ class MyFTP_TLS(ftplib.FTP_TLS):
|
|
|
39
39
|
conn = self.context.wrap_socket(conn,
|
|
40
40
|
server_hostname=self.host,
|
|
41
41
|
session=self.sock.session)
|
|
42
|
+
# fix reuse of ssl socket:
|
|
43
|
+
# https://stackoverflow.com/a/53456626/10971151 and
|
|
44
|
+
# https://stackoverflow.com/a/70830916/10971151
|
|
45
|
+
def custom_unwrap():
|
|
46
|
+
pass
|
|
47
|
+
conn.unwrap = custom_unwrap
|
|
42
48
|
return conn, size
|
|
43
49
|
|
|
44
50
|
|
|
@@ -407,7 +413,7 @@ def submit_data(file_paths, password, webin_id):
|
|
|
407
413
|
|
|
408
414
|
print("\nConnecting to ftp.webin2.ebi.ac.uk....")
|
|
409
415
|
try:
|
|
410
|
-
ftps = MyFTP_TLS(timeout=
|
|
416
|
+
ftps = MyFTP_TLS(timeout=120)
|
|
411
417
|
ftps.context.set_ciphers('HIGH:!DH:!aNULL')
|
|
412
418
|
ftps.connect(ftp_host, port=21)
|
|
413
419
|
ftps.auth()
|
|
@@ -33,101 +33,95 @@ def mandatorytest(row, column, index):
|
|
|
33
33
|
<DESCRIPTION>${row.sample_description}</DESCRIPTION>
|
|
34
34
|
</py:if>
|
|
35
35
|
<SAMPLE_ATTRIBUTES>
|
|
36
|
-
<py:if test="
|
|
37
|
-
<SAMPLE_ATTRIBUTE>
|
|
38
|
-
<TAG>project name</TAG>
|
|
39
|
-
<VALUE>${row['project name']}</VALUE>
|
|
40
|
-
</SAMPLE_ATTRIBUTE>
|
|
41
|
-
</py:if>
|
|
42
|
-
<py:if test="attributetest(row, 'experimental factor')">
|
|
36
|
+
<py:if test="attributetest(row, 'trophic level')">
|
|
43
37
|
<SAMPLE_ATTRIBUTE>
|
|
44
|
-
<TAG>
|
|
45
|
-
<VALUE>${row['
|
|
38
|
+
<TAG>trophic level</TAG>
|
|
39
|
+
<VALUE>${row['trophic level']}</VALUE>
|
|
46
40
|
</SAMPLE_ATTRIBUTE>
|
|
47
41
|
</py:if>
|
|
48
|
-
<py:if test="attributetest(row, '
|
|
42
|
+
<py:if test="attributetest(row, 'observed biotic relationship')">
|
|
49
43
|
<SAMPLE_ATTRIBUTE>
|
|
50
|
-
<TAG>
|
|
51
|
-
<VALUE>${row['
|
|
44
|
+
<TAG>observed biotic relationship</TAG>
|
|
45
|
+
<VALUE>${row['observed biotic relationship']}</VALUE>
|
|
52
46
|
</SAMPLE_ATTRIBUTE>
|
|
53
47
|
</py:if>
|
|
54
|
-
<py:if test="attributetest(row, '
|
|
48
|
+
<py:if test="attributetest(row, 'known pathogenicity')">
|
|
55
49
|
<SAMPLE_ATTRIBUTE>
|
|
56
|
-
<TAG>
|
|
57
|
-
<VALUE>${row['
|
|
50
|
+
<TAG>known pathogenicity</TAG>
|
|
51
|
+
<VALUE>${row['known pathogenicity']}</VALUE>
|
|
58
52
|
</SAMPLE_ATTRIBUTE>
|
|
59
53
|
</py:if>
|
|
60
|
-
<py:if test="attributetest(row, '
|
|
54
|
+
<py:if test="attributetest(row, 'relationship to oxygen')">
|
|
61
55
|
<SAMPLE_ATTRIBUTE>
|
|
62
|
-
<TAG>
|
|
63
|
-
<VALUE>${row['
|
|
56
|
+
<TAG>relationship to oxygen</TAG>
|
|
57
|
+
<VALUE>${row['relationship to oxygen']}</VALUE>
|
|
64
58
|
</SAMPLE_ATTRIBUTE>
|
|
65
59
|
</py:if>
|
|
66
|
-
<py:if test="attributetest(row, '
|
|
60
|
+
<py:if test="attributetest(row, 'propagation')">
|
|
67
61
|
<SAMPLE_ATTRIBUTE>
|
|
68
|
-
<TAG>
|
|
69
|
-
<VALUE>${row['
|
|
62
|
+
<TAG>propagation</TAG>
|
|
63
|
+
<VALUE>${row['propagation']}</VALUE>
|
|
70
64
|
</SAMPLE_ATTRIBUTE>
|
|
71
65
|
</py:if>
|
|
72
|
-
<py:if test="attributetest(row, '
|
|
66
|
+
<py:if test="attributetest(row, 'sample collection device')">
|
|
73
67
|
<SAMPLE_ATTRIBUTE>
|
|
74
|
-
<TAG>
|
|
75
|
-
<VALUE>${row['
|
|
68
|
+
<TAG>sample collection device</TAG>
|
|
69
|
+
<VALUE>${row['sample collection device']}</VALUE>
|
|
76
70
|
</SAMPLE_ATTRIBUTE>
|
|
77
71
|
</py:if>
|
|
78
|
-
<py:if test="attributetest(row, '
|
|
72
|
+
<py:if test="attributetest(row, 'sample collection method')">
|
|
79
73
|
<SAMPLE_ATTRIBUTE>
|
|
80
|
-
<TAG>
|
|
81
|
-
<VALUE>${row['
|
|
74
|
+
<TAG>sample collection method</TAG>
|
|
75
|
+
<VALUE>${row['sample collection method']}</VALUE>
|
|
82
76
|
</SAMPLE_ATTRIBUTE>
|
|
83
77
|
</py:if>
|
|
84
|
-
<py:if test="attributetest(row, 'sample
|
|
78
|
+
<py:if test="attributetest(row, 'sample storage temperature')">
|
|
85
79
|
<SAMPLE_ATTRIBUTE>
|
|
86
|
-
<TAG>sample
|
|
87
|
-
<VALUE>${row['sample
|
|
88
|
-
<UNITS
|
|
80
|
+
<TAG>sample storage temperature</TAG>
|
|
81
|
+
<VALUE>${row['sample storage temperature']}</VALUE>
|
|
82
|
+
<UNITS>°C</UNITS>
|
|
89
83
|
</SAMPLE_ATTRIBUTE>
|
|
90
84
|
</py:if>
|
|
91
|
-
<py:if test="attributetest(row, '
|
|
85
|
+
<py:if test="attributetest(row, 'sample storage location')">
|
|
92
86
|
<SAMPLE_ATTRIBUTE>
|
|
93
|
-
<TAG>
|
|
94
|
-
<VALUE>${row['
|
|
87
|
+
<TAG>sample storage location</TAG>
|
|
88
|
+
<VALUE>${row['sample storage location']}</VALUE>
|
|
95
89
|
</SAMPLE_ATTRIBUTE>
|
|
96
90
|
</py:if>
|
|
97
|
-
<py:if test="attributetest(row, '
|
|
91
|
+
<py:if test="attributetest(row, 'oxygenation status of sample')">
|
|
98
92
|
<SAMPLE_ATTRIBUTE>
|
|
99
|
-
<TAG>
|
|
100
|
-
<VALUE>${row['
|
|
93
|
+
<TAG>oxygenation status of sample</TAG>
|
|
94
|
+
<VALUE>${row['oxygenation status of sample']}</VALUE>
|
|
101
95
|
</SAMPLE_ATTRIBUTE>
|
|
102
96
|
</py:if>
|
|
103
|
-
<py:if test="
|
|
97
|
+
<py:if test="mandatorytest(row, 'project name', index)">
|
|
104
98
|
<SAMPLE_ATTRIBUTE>
|
|
105
|
-
<TAG>
|
|
106
|
-
<VALUE>${row['
|
|
99
|
+
<TAG>project name</TAG>
|
|
100
|
+
<VALUE>${row['project name']}</VALUE>
|
|
107
101
|
</SAMPLE_ATTRIBUTE>
|
|
108
102
|
</py:if>
|
|
109
|
-
<py:if test="attributetest(row, '
|
|
103
|
+
<py:if test="attributetest(row, 'ploidy')">
|
|
110
104
|
<SAMPLE_ATTRIBUTE>
|
|
111
|
-
<TAG>
|
|
112
|
-
<VALUE>${row['
|
|
105
|
+
<TAG>ploidy</TAG>
|
|
106
|
+
<VALUE>${row['ploidy']}</VALUE>
|
|
113
107
|
</SAMPLE_ATTRIBUTE>
|
|
114
108
|
</py:if>
|
|
115
|
-
<py:if test="attributetest(row, '
|
|
109
|
+
<py:if test="attributetest(row, 'number of replicons')">
|
|
116
110
|
<SAMPLE_ATTRIBUTE>
|
|
117
|
-
<TAG>
|
|
118
|
-
<VALUE>${row['
|
|
111
|
+
<TAG>number of replicons</TAG>
|
|
112
|
+
<VALUE>${row['number of replicons']}</VALUE>
|
|
119
113
|
</SAMPLE_ATTRIBUTE>
|
|
120
114
|
</py:if>
|
|
121
|
-
<py:if test="attributetest(row, '
|
|
115
|
+
<py:if test="attributetest(row, 'extrachromosomal elements')">
|
|
122
116
|
<SAMPLE_ATTRIBUTE>
|
|
123
|
-
<TAG>
|
|
124
|
-
<VALUE>${row['
|
|
117
|
+
<TAG>extrachromosomal elements</TAG>
|
|
118
|
+
<VALUE>${row['extrachromosomal elements']}</VALUE>
|
|
125
119
|
</SAMPLE_ATTRIBUTE>
|
|
126
120
|
</py:if>
|
|
127
|
-
<py:if test="attributetest(row, '
|
|
121
|
+
<py:if test="attributetest(row, 'estimated size')">
|
|
128
122
|
<SAMPLE_ATTRIBUTE>
|
|
129
|
-
<TAG>
|
|
130
|
-
<VALUE>${row['
|
|
123
|
+
<TAG>estimated size</TAG>
|
|
124
|
+
<VALUE>${row['estimated size']}</VALUE>
|
|
131
125
|
</SAMPLE_ATTRIBUTE>
|
|
132
126
|
</py:if>
|
|
133
127
|
<py:if test="attributetest(row, 'target gene')">
|
|
@@ -142,36 +136,12 @@ def mandatorytest(row, column, index):
|
|
|
142
136
|
<VALUE>${row['target subfragment']}</VALUE>
|
|
143
137
|
</SAMPLE_ATTRIBUTE>
|
|
144
138
|
</py:if>
|
|
145
|
-
<py:if test="attributetest(row, 'pcr primers')">
|
|
146
|
-
<SAMPLE_ATTRIBUTE>
|
|
147
|
-
<TAG>pcr primers</TAG>
|
|
148
|
-
<VALUE>${row['pcr primers']}</VALUE>
|
|
149
|
-
</SAMPLE_ATTRIBUTE>
|
|
150
|
-
</py:if>
|
|
151
139
|
<py:if test="attributetest(row, 'multiplex identifiers')">
|
|
152
140
|
<SAMPLE_ATTRIBUTE>
|
|
153
141
|
<TAG>multiplex identifiers</TAG>
|
|
154
142
|
<VALUE>${row['multiplex identifiers']}</VALUE>
|
|
155
143
|
</SAMPLE_ATTRIBUTE>
|
|
156
144
|
</py:if>
|
|
157
|
-
<py:if test="attributetest(row, 'adapters')">
|
|
158
|
-
<SAMPLE_ATTRIBUTE>
|
|
159
|
-
<TAG>adapters</TAG>
|
|
160
|
-
<VALUE>${row['adapters']}</VALUE>
|
|
161
|
-
</SAMPLE_ATTRIBUTE>
|
|
162
|
-
</py:if>
|
|
163
|
-
<py:if test="attributetest(row, 'pcr conditions')">
|
|
164
|
-
<SAMPLE_ATTRIBUTE>
|
|
165
|
-
<TAG>pcr conditions</TAG>
|
|
166
|
-
<VALUE>${row['pcr conditions']}</VALUE>
|
|
167
|
-
</SAMPLE_ATTRIBUTE>
|
|
168
|
-
</py:if>
|
|
169
|
-
<py:if test="attributetest(row, 'sequencing method')">
|
|
170
|
-
<SAMPLE_ATTRIBUTE>
|
|
171
|
-
<TAG>sequencing method</TAG>
|
|
172
|
-
<VALUE>${row['sequencing method']}</VALUE>
|
|
173
|
-
</SAMPLE_ATTRIBUTE>
|
|
174
|
-
</py:if>
|
|
175
145
|
<py:if test="attributetest(row, 'sequence quality check')">
|
|
176
146
|
<SAMPLE_ATTRIBUTE>
|
|
177
147
|
<TAG>sequence quality check</TAG>
|
|
@@ -196,18 +166,6 @@ def mandatorytest(row, column, index):
|
|
|
196
166
|
<VALUE>${row['relevant standard operating procedures']}</VALUE>
|
|
197
167
|
</SAMPLE_ATTRIBUTE>
|
|
198
168
|
</py:if>
|
|
199
|
-
<py:if test="attributetest(row, 'negative control type')">
|
|
200
|
-
<SAMPLE_ATTRIBUTE>
|
|
201
|
-
<TAG>negative control type</TAG>
|
|
202
|
-
<VALUE>${row['negative control type']}</VALUE>
|
|
203
|
-
</SAMPLE_ATTRIBUTE>
|
|
204
|
-
</py:if>
|
|
205
|
-
<py:if test="attributetest(row, 'positive control type')">
|
|
206
|
-
<SAMPLE_ATTRIBUTE>
|
|
207
|
-
<TAG>positive control type</TAG>
|
|
208
|
-
<VALUE>${row['positive control type']}</VALUE>
|
|
209
|
-
</SAMPLE_ATTRIBUTE>
|
|
210
|
-
</py:if>
|
|
211
169
|
<py:if test="mandatorytest(row, 'collection date', index)">
|
|
212
170
|
<SAMPLE_ATTRIBUTE>
|
|
213
171
|
<TAG>collection date</TAG>
|
|
@@ -285,30 +243,6 @@ def mandatorytest(row, column, index):
|
|
|
285
243
|
<VALUE>${row['ventilation type']}</VALUE>
|
|
286
244
|
</SAMPLE_ATTRIBUTE>
|
|
287
245
|
</py:if>
|
|
288
|
-
<py:if test="attributetest(row, 'source material identifiers')">
|
|
289
|
-
<SAMPLE_ATTRIBUTE>
|
|
290
|
-
<TAG>source material identifiers</TAG>
|
|
291
|
-
<VALUE>${row['source material identifiers']}</VALUE>
|
|
292
|
-
</SAMPLE_ATTRIBUTE>
|
|
293
|
-
</py:if>
|
|
294
|
-
<py:if test="attributetest(row, 'sample material processing')">
|
|
295
|
-
<SAMPLE_ATTRIBUTE>
|
|
296
|
-
<TAG>sample material processing</TAG>
|
|
297
|
-
<VALUE>${row['sample material processing']}</VALUE>
|
|
298
|
-
</SAMPLE_ATTRIBUTE>
|
|
299
|
-
</py:if>
|
|
300
|
-
<py:if test="attributetest(row, 'isolation and growth condition')">
|
|
301
|
-
<SAMPLE_ATTRIBUTE>
|
|
302
|
-
<TAG>isolation and growth condition</TAG>
|
|
303
|
-
<VALUE>${row['isolation and growth condition']}</VALUE>
|
|
304
|
-
</SAMPLE_ATTRIBUTE>
|
|
305
|
-
</py:if>
|
|
306
|
-
<py:if test="attributetest(row, 'propagation')">
|
|
307
|
-
<SAMPLE_ATTRIBUTE>
|
|
308
|
-
<TAG>propagation</TAG>
|
|
309
|
-
<VALUE>${row['propagation']}</VALUE>
|
|
310
|
-
</SAMPLE_ATTRIBUTE>
|
|
311
|
-
</py:if>
|
|
312
246
|
<py:if test="attributetest(row, 'amount or size of sample collected')">
|
|
313
247
|
<SAMPLE_ATTRIBUTE>
|
|
314
248
|
<TAG>amount or size of sample collected</TAG>
|
|
@@ -316,12 +250,6 @@ def mandatorytest(row, column, index):
|
|
|
316
250
|
<UNITS>m3</UNITS>
|
|
317
251
|
</SAMPLE_ATTRIBUTE>
|
|
318
252
|
</py:if>
|
|
319
|
-
<py:if test="attributetest(row, 'oxygenation status of sample')">
|
|
320
|
-
<SAMPLE_ATTRIBUTE>
|
|
321
|
-
<TAG>oxygenation status of sample</TAG>
|
|
322
|
-
<VALUE>${row['oxygenation status of sample']}</VALUE>
|
|
323
|
-
</SAMPLE_ATTRIBUTE>
|
|
324
|
-
</py:if>
|
|
325
253
|
<py:if test="attributetest(row, 'organism count')">
|
|
326
254
|
<SAMPLE_ATTRIBUTE>
|
|
327
255
|
<TAG>organism count</TAG>
|
|
@@ -332,32 +260,6 @@ def mandatorytest(row, column, index):
|
|
|
332
260
|
<SAMPLE_ATTRIBUTE>
|
|
333
261
|
<TAG>sample storage duration</TAG>
|
|
334
262
|
<VALUE>${row['sample storage duration']}</VALUE>
|
|
335
|
-
<UNITS>years</UNITS>
|
|
336
|
-
</SAMPLE_ATTRIBUTE>
|
|
337
|
-
</py:if>
|
|
338
|
-
<py:if test="attributetest(row, 'sample storage temperature')">
|
|
339
|
-
<SAMPLE_ATTRIBUTE>
|
|
340
|
-
<TAG>sample storage temperature</TAG>
|
|
341
|
-
<VALUE>${row['sample storage temperature']}</VALUE>
|
|
342
|
-
<UNITS>°C</UNITS>
|
|
343
|
-
</SAMPLE_ATTRIBUTE>
|
|
344
|
-
</py:if>
|
|
345
|
-
<py:if test="attributetest(row, 'sample storage location')">
|
|
346
|
-
<SAMPLE_ATTRIBUTE>
|
|
347
|
-
<TAG>sample storage location</TAG>
|
|
348
|
-
<VALUE>${row['sample storage location']}</VALUE>
|
|
349
|
-
</SAMPLE_ATTRIBUTE>
|
|
350
|
-
</py:if>
|
|
351
|
-
<py:if test="attributetest(row, 'sample collection device')">
|
|
352
|
-
<SAMPLE_ATTRIBUTE>
|
|
353
|
-
<TAG>sample collection device</TAG>
|
|
354
|
-
<VALUE>${row['sample collection device']}</VALUE>
|
|
355
|
-
</SAMPLE_ATTRIBUTE>
|
|
356
|
-
</py:if>
|
|
357
|
-
<py:if test="attributetest(row, 'sample collection method')">
|
|
358
|
-
<SAMPLE_ATTRIBUTE>
|
|
359
|
-
<TAG>sample collection method</TAG>
|
|
360
|
-
<VALUE>${row['sample collection method']}</VALUE>
|
|
361
263
|
</SAMPLE_ATTRIBUTE>
|
|
362
264
|
</py:if>
|
|
363
265
|
<py:if test="attributetest(row, 'host disease status')">
|
|
@@ -469,28 +371,34 @@ def mandatorytest(row, column, index):
|
|
|
469
371
|
<UNITS>psu</UNITS>
|
|
470
372
|
</SAMPLE_ATTRIBUTE>
|
|
471
373
|
</py:if>
|
|
472
|
-
<py:if test="attributetest(row, '
|
|
374
|
+
<py:if test="attributetest(row, 'source material identifiers')">
|
|
473
375
|
<SAMPLE_ATTRIBUTE>
|
|
474
|
-
<TAG>
|
|
475
|
-
<VALUE>${row['
|
|
376
|
+
<TAG>source material identifiers</TAG>
|
|
377
|
+
<VALUE>${row['source material identifiers']}</VALUE>
|
|
476
378
|
</SAMPLE_ATTRIBUTE>
|
|
477
379
|
</py:if>
|
|
478
|
-
<py:if test="attributetest(row, '
|
|
380
|
+
<py:if test="attributetest(row, 'perturbation')">
|
|
479
381
|
<SAMPLE_ATTRIBUTE>
|
|
480
|
-
<TAG>
|
|
481
|
-
<VALUE>${row['
|
|
382
|
+
<TAG>perturbation</TAG>
|
|
383
|
+
<VALUE>${row['perturbation']}</VALUE>
|
|
482
384
|
</SAMPLE_ATTRIBUTE>
|
|
483
385
|
</py:if>
|
|
484
|
-
<py:if test="attributetest(row, '
|
|
386
|
+
<py:if test="attributetest(row, 'negative control type')">
|
|
485
387
|
<SAMPLE_ATTRIBUTE>
|
|
486
|
-
<TAG>
|
|
487
|
-
<VALUE>${row['
|
|
388
|
+
<TAG>negative control type</TAG>
|
|
389
|
+
<VALUE>${row['negative control type']}</VALUE>
|
|
488
390
|
</SAMPLE_ATTRIBUTE>
|
|
489
391
|
</py:if>
|
|
490
|
-
<py:if test="attributetest(row, '
|
|
392
|
+
<py:if test="attributetest(row, 'positive control type')">
|
|
491
393
|
<SAMPLE_ATTRIBUTE>
|
|
492
|
-
<TAG>
|
|
493
|
-
<VALUE>${row['
|
|
394
|
+
<TAG>positive control type</TAG>
|
|
395
|
+
<VALUE>${row['positive control type']}</VALUE>
|
|
396
|
+
</SAMPLE_ATTRIBUTE>
|
|
397
|
+
</py:if>
|
|
398
|
+
<py:if test="attributetest(row, 'experimental factor')">
|
|
399
|
+
<SAMPLE_ATTRIBUTE>
|
|
400
|
+
<TAG>experimental factor</TAG>
|
|
401
|
+
<VALUE>${row['experimental factor']}</VALUE>
|
|
494
402
|
</SAMPLE_ATTRIBUTE>
|
|
495
403
|
</py:if>
|
|
496
404
|
<py:if test="attributetest(row, 'encoded traits')">
|
|
@@ -499,22 +407,113 @@ def mandatorytest(row, column, index):
|
|
|
499
407
|
<VALUE>${row['encoded traits']}</VALUE>
|
|
500
408
|
</SAMPLE_ATTRIBUTE>
|
|
501
409
|
</py:if>
|
|
502
|
-
<py:if test="attributetest(row, '
|
|
410
|
+
<py:if test="attributetest(row, 'subspecific genetic lineage')">
|
|
503
411
|
<SAMPLE_ATTRIBUTE>
|
|
504
|
-
<TAG>
|
|
505
|
-
<VALUE>${row['
|
|
412
|
+
<TAG>subspecific genetic lineage</TAG>
|
|
413
|
+
<VALUE>${row['subspecific genetic lineage']}</VALUE>
|
|
506
414
|
</SAMPLE_ATTRIBUTE>
|
|
507
415
|
</py:if>
|
|
508
|
-
<py:if test="attributetest(row, '
|
|
416
|
+
<py:if test="attributetest(row, 'taxonomic classification')">
|
|
509
417
|
<SAMPLE_ATTRIBUTE>
|
|
510
|
-
<TAG>
|
|
511
|
-
<VALUE>${row['
|
|
418
|
+
<TAG>taxonomic classification</TAG>
|
|
419
|
+
<VALUE>${row['taxonomic classification']}</VALUE>
|
|
512
420
|
</SAMPLE_ATTRIBUTE>
|
|
513
421
|
</py:if>
|
|
514
|
-
<py:if test="attributetest(row, '
|
|
422
|
+
<py:if test="attributetest(row, 'isolation and growth condition')">
|
|
515
423
|
<SAMPLE_ATTRIBUTE>
|
|
516
|
-
<TAG>
|
|
517
|
-
<VALUE>${row['
|
|
424
|
+
<TAG>isolation and growth condition</TAG>
|
|
425
|
+
<VALUE>${row['isolation and growth condition']}</VALUE>
|
|
426
|
+
</SAMPLE_ATTRIBUTE>
|
|
427
|
+
</py:if>
|
|
428
|
+
<py:if test="attributetest(row, 'annotation source')">
|
|
429
|
+
<SAMPLE_ATTRIBUTE>
|
|
430
|
+
<TAG>annotation source</TAG>
|
|
431
|
+
<VALUE>${row['annotation source']}</VALUE>
|
|
432
|
+
</SAMPLE_ATTRIBUTE>
|
|
433
|
+
</py:if>
|
|
434
|
+
<py:if test="attributetest(row, 'reference for biomaterial')">
|
|
435
|
+
<SAMPLE_ATTRIBUTE>
|
|
436
|
+
<TAG>reference for biomaterial</TAG>
|
|
437
|
+
<VALUE>${row['reference for biomaterial']}</VALUE>
|
|
438
|
+
</SAMPLE_ATTRIBUTE>
|
|
439
|
+
</py:if>
|
|
440
|
+
<py:if test="attributetest(row, 'sample material processing')">
|
|
441
|
+
<SAMPLE_ATTRIBUTE>
|
|
442
|
+
<TAG>sample material processing</TAG>
|
|
443
|
+
<VALUE>${row['sample material processing']}</VALUE>
|
|
444
|
+
</SAMPLE_ATTRIBUTE>
|
|
445
|
+
</py:if>
|
|
446
|
+
<py:if test="attributetest(row, 'sample volume or weight for DNA extraction')">
|
|
447
|
+
<SAMPLE_ATTRIBUTE>
|
|
448
|
+
<TAG>sample volume or weight for DNA extraction</TAG>
|
|
449
|
+
<VALUE>${row['sample volume or weight for DNA extraction']}</VALUE>
|
|
450
|
+
<UNITS>ng</UNITS>
|
|
451
|
+
</SAMPLE_ATTRIBUTE>
|
|
452
|
+
</py:if>
|
|
453
|
+
<py:if test="attributetest(row, 'nucleic acid extraction')">
|
|
454
|
+
<SAMPLE_ATTRIBUTE>
|
|
455
|
+
<TAG>nucleic acid extraction</TAG>
|
|
456
|
+
<VALUE>${row['nucleic acid extraction']}</VALUE>
|
|
457
|
+
</SAMPLE_ATTRIBUTE>
|
|
458
|
+
</py:if>
|
|
459
|
+
<py:if test="attributetest(row, 'nucleic acid amplification')">
|
|
460
|
+
<SAMPLE_ATTRIBUTE>
|
|
461
|
+
<TAG>nucleic acid amplification</TAG>
|
|
462
|
+
<VALUE>${row['nucleic acid amplification']}</VALUE>
|
|
463
|
+
</SAMPLE_ATTRIBUTE>
|
|
464
|
+
</py:if>
|
|
465
|
+
<py:if test="attributetest(row, 'library size')">
|
|
466
|
+
<SAMPLE_ATTRIBUTE>
|
|
467
|
+
<TAG>library size</TAG>
|
|
468
|
+
<VALUE>${row['library size']}</VALUE>
|
|
469
|
+
</SAMPLE_ATTRIBUTE>
|
|
470
|
+
</py:if>
|
|
471
|
+
<py:if test="attributetest(row, 'library reads sequenced')">
|
|
472
|
+
<SAMPLE_ATTRIBUTE>
|
|
473
|
+
<TAG>library reads sequenced</TAG>
|
|
474
|
+
<VALUE>${row['library reads sequenced']}</VALUE>
|
|
475
|
+
</SAMPLE_ATTRIBUTE>
|
|
476
|
+
</py:if>
|
|
477
|
+
<py:if test="attributetest(row, 'library construction method')">
|
|
478
|
+
<SAMPLE_ATTRIBUTE>
|
|
479
|
+
<TAG>library construction method</TAG>
|
|
480
|
+
<VALUE>${row['library construction method']}</VALUE>
|
|
481
|
+
</SAMPLE_ATTRIBUTE>
|
|
482
|
+
</py:if>
|
|
483
|
+
<py:if test="attributetest(row, 'library vector')">
|
|
484
|
+
<SAMPLE_ATTRIBUTE>
|
|
485
|
+
<TAG>library vector</TAG>
|
|
486
|
+
<VALUE>${row['library vector']}</VALUE>
|
|
487
|
+
</SAMPLE_ATTRIBUTE>
|
|
488
|
+
</py:if>
|
|
489
|
+
<py:if test="attributetest(row, 'library screening strategy')">
|
|
490
|
+
<SAMPLE_ATTRIBUTE>
|
|
491
|
+
<TAG>library screening strategy</TAG>
|
|
492
|
+
<VALUE>${row['library screening strategy']}</VALUE>
|
|
493
|
+
</SAMPLE_ATTRIBUTE>
|
|
494
|
+
</py:if>
|
|
495
|
+
<py:if test="attributetest(row, 'pcr conditions')">
|
|
496
|
+
<SAMPLE_ATTRIBUTE>
|
|
497
|
+
<TAG>pcr conditions</TAG>
|
|
498
|
+
<VALUE>${row['pcr conditions']}</VALUE>
|
|
499
|
+
</SAMPLE_ATTRIBUTE>
|
|
500
|
+
</py:if>
|
|
501
|
+
<py:if test="attributetest(row, 'pcr primers')">
|
|
502
|
+
<SAMPLE_ATTRIBUTE>
|
|
503
|
+
<TAG>pcr primers</TAG>
|
|
504
|
+
<VALUE>${row['pcr primers']}</VALUE>
|
|
505
|
+
</SAMPLE_ATTRIBUTE>
|
|
506
|
+
</py:if>
|
|
507
|
+
<py:if test="attributetest(row, 'adapters')">
|
|
508
|
+
<SAMPLE_ATTRIBUTE>
|
|
509
|
+
<TAG>adapters</TAG>
|
|
510
|
+
<VALUE>${row['adapters']}</VALUE>
|
|
511
|
+
</SAMPLE_ATTRIBUTE>
|
|
512
|
+
</py:if>
|
|
513
|
+
<py:if test="attributetest(row, 'chemical administration')">
|
|
514
|
+
<SAMPLE_ATTRIBUTE>
|
|
515
|
+
<TAG>chemical administration</TAG>
|
|
516
|
+
<VALUE>${row['chemical administration']}</VALUE>
|
|
518
517
|
</SAMPLE_ATTRIBUTE>
|
|
519
518
|
</py:if>
|
|
520
519
|
<SAMPLE_ATTRIBUTE>
|