# DONE adding classes to schema
######################################################
"""
"""
######################################################
# add dependencies and requirements to classes
######################################################
"""
"""
# edit class Thing to add example dependency requirements
i.e. any Thing (e.g. data file) requires dependencies/annotations 
"resourceType", "fileFormat"

note that these dependencies can but do not need to be children of Thing
"""
class_info = se.explore_class("Thing")
class_req_edit = get_class("Thing",\
                              description = class_info["description"],\
                              subclass_of = "Thing",\
                              requires_dependencies = ["resourceType", "fileFormat"]
                           )
se.edit_class(class_req_edit)
# note: use class_edit to edit a current class; you can explore existing class properties
# and reuse them in the edited class (e.g. here via class_info)
"""
#  edit class resourceType with example value-range requirement

in this case the requirement is that resourceType should be annotated 
with specific values. requires_value translates to requiresChildAsValue;
this is configurable, however the current interpretation is that the
value resourceType can be annotated with should match the label of one of its
Beispiel #2
0
# DONE adding classes to schema
######################################################
"""
"""
######################################################
# add dependencies and requirements to classes
######################################################
"""
"""
# edit class scRNASeq to add example dependency requirements
i.e. any scRNASeq thing (e.g. data file) requires dependencies/annotations 
"BiosampleType", "BiosampleID", "NucleicAcidSoure", etc.

note that these dependencies can but do not need to be children of scRNASeq
"""
class_info = se.explore_class("scRNASeq")
class_req_edit = get_class("scRNASeq",\
                              description = class_info["description"],\
                              subclass_of = class_info["subClassOf"],\
                              requires_dependencies = ["BiosampleType", "BiosampleID", "NucleicAcidSource", "LibraryConstructionMethod", "LibraryLayout", "Primer", "Platform", "SingleCellIsolation", "SpikeIn", "ReverseTranscription", "Amplification", "Filename"]
                           )
se.edit_class(class_req_edit)
# note: use class_edit to edit a current class; you can explore existing class properties
# and reuse them in the edited class (e.g. here via class_info)

class_info = se.explore_class("UMI")
class_req_edit = get_class("UMI",\
                              description = class_info["description"],\
                              subclass_of = class_info["subClassOf"],\
                              requires_dependencies = ["UMIBarcodeRead"]
                           )
class_req_add = get_class("Smart-seq2",\
                              description = "Switch mechanism at the 5’ end of RNA templates (Smart).<EFO_0008930>",\
                              subclass_of = ["LibraryConstructionMethod"]
)
se.update_class(class_req_add) # note: use update_class to add a new class



"""
######################################################
# add dependencies and requirements to classes
######################################################
"""

class_info = se.explore_class("HTAPP")
class_req_edit = get_class("HTAPP",\
                              description = class_info["description"],\
                              subclass_of = class_info["subClassOf"],\
                              requires_dependencies = ["HTANParticipantID","HTANSampleID","CancerType", "LibraryConstructionMethod"]
)
se.edit_class(class_req_edit) 
# note: use class_edit to edit a current class; you can explore existing class properties
# and reuse them in the edited class (e.g. here via class_info)



"""
######################################################
# DONE adding requirements to schema
######################################################