def export_gene_items(file_path) : genes = Gene.objects.all() # get all lab objects if genes: # check if empty outfile = open(file_path+'/gene-items.xml', 'w') # open and write to lab-items.xml for gene in genes: toxoplasma_mutant_list = ToxoplasmaMutant.objects.all().filter(target_gene=gene) antibody_list = Antibody.objects.all().filter(target_gene=gene) # Only export if there is a related toxoplasma mutant or antibody if toxoplasma_mutant_list or antibody_list: outfile.write('<item id="Gene_' + str(gene.id) + '" class="Gene">\n') outfile.write('\t<attribute name="primaryIdentifier" value="' + str(gene.gene_id) + '" />\n') outfile.write('\t<attribute name="symbol" value="' + str(gene.gene_id) + '" />\n') outfile.write('\t<attribute name="name" value="' + str(gene.description) + '" />\n') if toxoplasma_mutant_list: exporter_utility.write_collection_items(outfile, toxoplasma_mutant_list, 'ToxoplasmaMutant', 'toxoplasmaMutants') if antibody_list: exporter_utility.write_collection_items(outfile, antibody_list, 'Antibody', 'antibodies') outfile.write('</item>\n') outfile.close() # close file
def export_protocol_items(file_path) : protocols = Protocol.objects.all().filter(current=True) # get all objects if protocols: # check if empty outfile = open(file_path+'/protocol-items.xml', 'w') # open and write to *-items.xml for protocol in protocols: submission_list = [] # submissions applied_protocol_list = AppliedProtocol.objects.all().filter(protocol=protocol) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_list: outfile.write('<item id="Protocol_' + str(protocol.id) + '" class="Protocol">\n') outfile.write('\t<attribute name="name" value="' + protocol.name + '" />\n') outfile.write('\t<attribute name="description" value="' + protocol.description + '" />\n') outfile.write('\t<attribute name="type" value="' + protocol.protocol_type.name + '" />\n') outfile.write('\t<attribute name="version" value="' + str(protocol.version) + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_persistent_datafile_items(file_path, url) : persistent_datafiles = PersistentDataFile.objects.all() # get all objects if persistent_datafiles: # check if empty outfile = open(file_path+'/persistent-datafile-items.xml', 'w') # open and write to *-items.xml for persistent_datafile in persistent_datafiles: submission_data_list = SubmissionData.objects.all().filter(object_id=persistent_datafile.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_list: outfile.write('<item id="PersistentDataFile_' + str(persistent_datafile.id) + '" class="PersistentDataFile">\n') outfile.write('\t<attribute name="name" value="' + persistent_datafile.name + '" />\n') outfile.write('\t<attribute name="type" value="' + persistent_datafile.file_type.name + '" />\n') outfile.write('\t<attribute name="url" value="' + url + '/persistent/' + persistent_datafile.name + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_experimental_factor_items(file_path) : experimental_factors = ExperimentalFactor.objects.all() # get all objects if experimental_factors: # check if empty outfile = open(file_path+'/experimental-factor-items.xml', 'w') # open and write to *-items.xml for experimental_factor in experimental_factors: submission_data_list = SubmissionData.objects.all().filter(object_id=experimental_factor.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_list: outfile.write('<item id="ExperimentalFactor_' + str(experimental_factor.id) + '" class="ExperimentalFactor">\n') outfile.write('\t<attribute name="type" value="' + experimental_factor.name.name + '" />\n') outfile.write('\t<attribute name="value" value="' + experimental_factor.value + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_submission_datafile_items(file_path, url) : # create directories if it doesn't exists if not os.path.exists(file_path+'/peaks/chromosome'): os.makedirs(file_path+'/peaks/chromosome') if not os.path.exists(file_path+'/peaks/contig'): os.makedirs(file_path+'/peaks/contig') if not os.path.exists(file_path+'/peaks/supercontig'): os.makedirs(file_path+'/peaks/supercontig') if not os.path.exists(file_path+'/gene_list'): os.makedirs(file_path+'/gene_list') submission_datafiles = SubmissionDataFile.objects.all() # get all objects gene_list_list = [] # for submission data gene list if submission_datafiles: # check if empty outfile = open(file_path+'/submission-datafile-items.xml', 'w') # open and write to *-items.xml for submission_datafile in submission_datafiles: submission_data_list = SubmissionData.objects.all().filter(object_id=submission_datafile.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_list: outfile.write('<item id="SubmissionDataFile_' + str(submission_datafile.id) + '" class="SubmissionDataFile">\n') outfile.write('\t<attribute name="name" value="' + submission_datafile.name + '" />\n') outfile.write('\t<attribute name="type" value="' + submission_datafile.file_type.name + '" />\n') submission_id_list = submission_datafile.name.split('_') outfile.write('\t<attribute name="url" value="' + url + '/' + submission_id_list[0] + '/' + submission_datafile.name + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') if 'peaks' in submission_datafile.name: export_peaks_submission_datafile(submission_datafile.data_file.path, file_path+'/peaks/', submission_datafile.name) # export peaks.gff into one folder if 'gene_list' in submission_datafile.name: export_gene_list_submission_datafile(submission_datafile.data_file.path, file_path+'/gene_list/'+submission_datafile.name) # export of gene_list.txt gene_list_list.append(file_path+'/gene_list/'+submission_datafile.name) # append to gene list list outfile.close() # close file if gene_list_list: # consolidate gene list into one list consolidate_gene_list_submission_datafile(file_path, gene_list_list)
def export_organism_items(file_path): organisms = Organism.objects.all() # get all lab objects if organisms: # check if empty outfile = open(file_path + "/organism-items.xml", "w") # open and write to lab-items.xml for organism in organisms: toxoplasma_mutant_list = ToxoplasmaMutant.objects.all().filter(organism=organism) # Only export if there is a related toxoplasma mutant if toxoplasma_mutant_list: outfile.write('<item id="Organism_' + str(organism.id) + '" class="Organism">\n') outfile.write('\t<attribute name="taxonId" value="' + str(organism.taxon_id) + '" />\n') exporter_utility.write_collection_items( outfile, toxoplasma_mutant_list, "ToxoplasmaMutant", "toxoplasmaMutants" ) outfile.write("</item>\n") outfile.close() # close file
def export_publication_items(file_path) : publications = Publication.objects.all() # get all objects if publications: # check if empty outfile = open(file_path+'/publication-items.xml', 'w') # open and write to *-items.xml for publication in publications: dbxrefs_list = publication.dbxrefs.all() # dbxrefs for dbxref in dbxrefs_list: if dbxref.db.name == 'Pubmed': pubmed_id = dbxref.accession project_list = Project.objects.all().filter(publications=publication).filter(publishable=True) experiment_list = Experiment.objects.all().filter(publications=publication).filter(publishable=True) submission_list = Submission.objects.all().filter(publications=publication).filter(publishable=True) # Only export if there is a related objects if pubmed_id and (project_list or experiment_list or submission_list): outfile.write('<item id="Publication_' + str(publication.id) + '" class="Publication">\n') outfile.write('\t<attribute name="pubMedId" value="' + str(pubmed_id) + '" />\n') outfile.write('\t<attribute name="title" value="' + str(publication.unique_name) + '" />\n') if project_list: exporter_utility.write_collection_items(outfile, project_list, 'Project', 'projects') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if submission_list: exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_microarray_items(file_path): microarrays = MicroArray.objects.all() # get all objects if microarrays: # check if empty outfile = open(file_path + "/microarray-items.xml", "w") # open and write to *-items.xml for microarray in microarrays: submission_data_list = SubmissionData.objects.all().filter(object_id=microarray.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_list: outfile.write('<item id="MicroArray_' + str(microarray.id) + '" class="MicroArray">\n') outfile.write('\t<attribute name="name" value="' + microarray.name + '" />\n') outfile.write('\t<attribute name="platform" value="' + microarray.platform.name + '" />\n') outfile.write('\t<attribute name="format" value="' + microarray.microarray_format.name + '" />\n') outfile.write('\t<attribute name="version" value="' + microarray.version + '" />\n') outfile.write('\t<attribute name="genomeName" value="' + microarray.genome_name.name + '" />\n') outfile.write('\t<attribute name="genomeVersion" value="' + microarray.genome_version + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, "Submission", "submissions") outfile.write("</item>\n") outfile.close() # close file
def export_data_analysis_items(file_path): data_analyses = DataAnalysis.objects.all() # get all objects if data_analyses: # check if empty outfile = open(file_path + "/data-analysis-items.xml", "w") # open and write to *-items.xml for data_analysis in data_analyses: submission_data_list = SubmissionData.objects.all().filter(object_id=data_analysis.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if submission_data_list or submission_list: outfile.write('<item id="DataAnalysis_' + str(data_analysis.id) + '" class="DataAnalysis">\n') outfile.write('\t<attribute name="name" value="' + data_analysis.name + '" />\n') outfile.write('\t<attribute name="platform" value="' + data_analysis.platform + '" />\n') outfile.write('\t<attribute name="version" value="' + data_analysis.version + '" />\n') outfile.write('\t<attribute name="module" value="' + data_analysis.module + '" />\n') outfile.write('\t<attribute name="parameter" value="' + data_analysis.parameter + '" />\n') if data_analysis.data_analysis_type: outfile.write('\t<attribute name="type" value="' + data_analysis.data_analysis_type.name + '" />\n') exporter_utility.write_collection_items(outfile, submission_list, "Submission", "submissions") outfile.write("</item>\n") outfile.close() # close file
def export_applied_protocol_items(file_path) : applied_protocols = AppliedProtocol.objects.all() # get all objects if applied_protocols: # check if empty outfile = open(file_path+'/applied-protocol-items.xml', 'w') # open and write to *-items.xml for applied_protocol in applied_protocols: input_list = SubmissionData.objects.all().filter(applied_protocol_input=applied_protocol) # submission data output_list = SubmissionData.objects.all().filter(applied_protocol_output=applied_protocol) # submission data input_list = list(set(input_list)) # Get rid of duplicates output_list = list(set(output_list)) # Get rid of duplicates outfile.write('<item id="AppliedProtocol_' + str(applied_protocol.id) + '" class="AppliedProtocol">\n') outfile.write('\t<attribute name="step" value="' + str(applied_protocol.step) + '" />\n') exporter_utility.write_reference_item(outfile, applied_protocol.protocol, 'Protocol', 'protocol') exporter_utility.write_reference_item(outfile, applied_protocol.submission, 'Submission', 'submission') if input_list: exporter_utility.write_collection_items(outfile, input_list, 'SubmissionData', 'inputs') if output_list: exporter_utility.write_collection_items(outfile, output_list, 'SubmissionData', 'outputs') outfile.write('</item>\n') outfile.close() # close file
def export_antibody_items(file_path) : antibodies = Antibody.objects.all() # get all objects if antibodies: # check if empty outfile = open(file_path+'/antibody-items.xml', 'w') # open and write to *-items.xml for antibody in antibodies: submission_data_list = SubmissionData.objects.all().filter(object_id=antibody.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates experiment_list = [] # experiment for submission in submission_list: experiment_list.extend(submission.experiments.all().filter(publishable=True)) # experiments experiment_list = list(set(experiment_list)) # Get rid of duplicates project_list = [] # projects for experiment in experiment_list: project_list.extend(experiment.projects.all().filter(publishable=True)) project_list = list(set(project_list)) # Get rid of duplicates # Only export if there is a related objects if submission_data_list or project_list or experiment_list or submission_list: outfile.write('<item id="Antibody_' + str(antibody.id) + '" class="Antibody">\n') outfile.write('\t<attribute name="name" value="' + antibody.name + '" />\n') outfile.write('\t<attribute name="targetName" value="' + antibody.target_name + '" />\n') outfile.write('\t<attribute name="source" value="' + antibody.source + '" />\n') outfile.write('\t<attribute name="epitope" value="' + antibody.epitope + '" />\n') if antibody.animal_host: outfile.write('\t<attribute name="hostOrganism" value="' + antibody.animal_host.name + '" />\n') else: outfile.write('\t<attribute name="hostOrganism" value="" />\n') if antibody.target_gene: exporter_utility.write_reference_item(outfile, antibody.target_gene, 'Gene', 'targetGene') if project_list: exporter_utility.write_collection_items(outfile, project_list, 'Project', 'projects') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if submission_list: exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_lab_items(file_path) : labs = Lab.objects.all() # get all lab objects if labs: # check if empty outfile = open(file_path+'/lab-items.xml', 'w') # open and write to *-items.xml for lab in labs: lab_members = lab.lab_members.all() # Grab all lab members project_list = [] # projects experiment_list = [] # experiments submission_list = [] # submissions # For each member of the lab for lab_member in lab_members: tmp_project_list = Project.objects.all().filter(contributors=lab_member).filter(publishable=True) if tmp_project_list: project_list.extend(tmp_project_list) tmp_experiment_list = Experiment.objects.all().filter(contributors=lab_member).filter(publishable=True) if tmp_experiment_list: experiment_list.extend(tmp_experiment_list) tmp_submission_list = Submission.objects.all().filter(contributors=lab_member).filter(publishable=True) if tmp_submission_list: submission_list.extend(tmp_submission_list) project_list = list(set(project_list)) # Get rid of duplicates experiment_list = list(set(experiment_list)) # Get rid of duplicates submission_list = list(set(submission_list)) # Get rid of duplicates # Only export if there is a related objects if project_list or experiment_list or submission_list: outfile.write('<item id="Lab_' + str(lab.id) + '" class="Lab">\n') outfile.write('\t<attribute name="name" value="' + lab.name + '" />\n') outfile.write('\t<attribute name="piFirstName" value="' + lab.pi_first_name + '" />\n') outfile.write('\t<attribute name="piLastName" value="' + lab.pi_last_name + '" />\n') outfile.write('\t<attribute name="affiliation" value="' + lab.affiliation + '" />\n') if project_list: exporter_utility.write_collection_items(outfile, project_list, 'Project', 'projects') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if submission_list: exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_toxoplasma_mutant_items(file_path) : toxoplasma_mutants = ToxoplasmaMutant.objects.all() # get all objects if toxoplasma_mutants: # check if empty outfile = open(file_path+'/toxoplasma-mutant-items.xml', 'w') # open and write to *-items.xml for toxoplasma_mutant in toxoplasma_mutants: submission_data_list = SubmissionData.objects.all().filter(object_id=toxoplasma_mutant.id) submission_list = [] # submissions for submission_data in submission_data_list: applied_protocol_list = [] if submission_data.applied_protocol_input: applied_protocol_list.append(submission_data.applied_protocol_input) if submission_data.applied_protocol_output: applied_protocol_list.append(submission_data.applied_protocol_output) for applied_protocol in applied_protocol_list: if applied_protocol.submission.publishable == True: submission_list.append(applied_protocol.submission) submission_list = list(set(submission_list)) # Get rid of duplicates experiment_list = [] # experiment for submission in submission_list: experiment_list.extend(submission.experiments.all().filter(publishable=True)) # experiments experiment_list = list(set(experiment_list)) # Get rid of duplicates project_list = [] # projects for experiment in experiment_list: project_list.extend(experiment.projects.all().filter(publishable=True)) project_list = list(set(project_list)) # Get rid of duplicates # Only export if there is a related objects if submission_data_list or project_list or experiment_list or submission_list: outfile.write('<item id="ToxoplasmaMutant_' + str(toxoplasma_mutant.id) + '" class="ToxoplasmaMutant">\n') outfile.write('\t<attribute name="name" value="' + toxoplasma_mutant.name + '" />\n') outfile.write('\t<attribute name="targetName" value="' + toxoplasma_mutant.target_name + '" />\n') outfile.write('\t<attribute name="mutantSelection" value="' + toxoplasma_mutant.selection.name + '" />\n') outfile.write('\t<attribute name="mutantType" value="' + toxoplasma_mutant.mutation_type.name + '" />\n') outfile.write('\t<attribute name="mutantBackground" value="' + toxoplasma_mutant.background.name + '" />\n') strain = '' background = '' organism_property_list = OrganismProperty.objects.all().filter(organism=toxoplasma_mutant.organism) # organism property for organism_property in organism_property_list: if organism_property.organism_property_type.name == 'organism strain': strain = organism_property.organism_property_value.name if organism_property.organism_property_type.name == 'organism type': background = organism_property.organism_property_value.name outfile.write('\t<attribute name="strain" value="' + strain + '" />\n') outfile.write('\t<attribute name="background" value="' + background + '" />\n') if toxoplasma_mutant.target_gene: exporter_utility.write_reference_item(outfile, toxoplasma_mutant.target_gene, 'Gene', 'targetGene') if toxoplasma_mutant.organism: exporter_utility.write_reference_item(outfile, toxoplasma_mutant.organism, 'Organism', 'organism') if project_list: exporter_utility.write_collection_items(outfile, project_list, 'Project', 'projects') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if submission_list: exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') outfile.write('</item>\n') outfile.close() # close file
def export_project_items(file_path) : projects = Project.objects.all().filter(publishable=True) # get all objects if projects: # check if empty outfile = open(file_path+'/project-items.xml', 'w') # open and write to *-items.xml for project in projects: publication_list = project.publications.all() # publications lab_list = [] # labs contributors = project.contributors.all() # Grab all project contributors # Grab all the projects by each member of the lab for contributor in contributors: tmp_list = Lab.objects.all().filter(lab_members=contributor) if tmp_list: lab_list.extend(tmp_list) lab_list = list(set(lab_list)) # Get rid of duplicates experiment_list = Experiment.objects.all().filter(projects=project).filter(publishable=True) # experiments submission_list = [] # submissions # Grab all the submissions for experiment in experiment_list: tmp_list = Submission.objects.all().filter(experiments=experiment).filter(publishable=True) if tmp_list: submission_list.extend(tmp_list) submission_list = list(set(submission_list)) # Get rid of duplicates organism_list = [] # organisms toxoplasma_mutant_list = [] # toxoplasma mutants antibody_list = [] # antibody # Grab all the submission data for submission in submission_list: applied_protocol_list = AppliedProtocol.objects.all().filter(submission=submission) for applied_protocol in applied_protocol_list: submission_data_list = SubmissionData.objects.all().filter(Q(applied_protocol_input=applied_protocol) | Q(applied_protocol_output=applied_protocol)) for submission_data in submission_data_list: if submission_data.content_type==ContentType.objects.get_for_model(ToxoplasmaMutant): toxoplasma_mutant_list.append(submission_data.content_object) organism_list.append(submission_data.content_object.organism) if submission_data.content_type==ContentType.objects.get_for_model(Antibody): antibody_list.append(submission_data.content_object) organism_list = list(set(organism_list)) # Get rid of duplicates toxoplasma_mutant_list = list(set(toxoplasma_mutant_list)) # Get rid of duplicates antibody_list = list(set(antibody_list)) # Get rid of duplicates # Only export if there is a related objects if publication_list or lab_list or experiment_list or submission_list or organism_list or toxoplasma_mutant_list or antibody_list: outfile.write('<item id="Project_' + str(project.id) + '" class="Project">\n') outfile.write('\t<attribute name="name" value="' + project.name + '" />\n') outfile.write('\t<attribute name="description" value="' + project.description + '" />\n') if publication_list: exporter_utility.write_collection_items(outfile, publication_list, 'Publication', 'publications') if lab_list: exporter_utility.write_collection_items(outfile, lab_list, 'Lab', 'labs') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if submission_list: exporter_utility.write_collection_items(outfile, submission_list, 'Submission', 'submissions') if organism_list: exporter_utility.write_collection_items(outfile, organism_list, 'Organism', 'organisms') if toxoplasma_mutant_list: exporter_utility.write_collection_items(outfile, toxoplasma_mutant_list, 'ToxoplasmaMutant', 'toxoplasmaMutants') if antibody_list: exporter_utility.write_collection_items(outfile, antibody_list, 'Antibody', 'antibodies') outfile.write('</item>\n') outfile.close() # close file
def export_submission_items(file_path) : submissions = Submission.objects.all().filter(publishable=True) # get all objects if submissions: # check if empty outfile = open(file_path+'/submission-items.xml', 'w') # open and write to *-items.xml for submission in submissions: publication_list = submission.publications.all() # publications lab_list = [] # labs contributors = submission.contributors.all() # Grab all submission contributors # Grab all the submission by each member of the lab for contributor in contributors: tmp_list = Lab.objects.all().filter(lab_members=contributor) if tmp_list: lab_list.extend(tmp_list) lab_list = list(set(lab_list)) # Get rid of duplicates experiment_list = submission.experiments.all().filter(publishable=True) # experiments project_list = [] # projects for experiment in experiment_list: tmp_list = experiment.projects.all().filter(publishable=True) project_list.extend(tmp_list) project_list = list(set(project_list)) # Get rid of duplicates applied_protocol_list = [] # applied protocols protocol_list = [] # protocols organism_list = [] # organisms toxoplasma_mutant_list = [] # toxoplasma mutants antibody_list = [] # antibodies experimental_factor_list = [] # experimental factor microarray_list = [] # microarray sequencing_list = [] # sequencing data_analysis_list = [] # data analysis persistent_datafile_list = [] # persistent datafile submission_datafile_list = [] # submission datafile # Grab all the organisms and toxoplasma mutants applied_protocol_list = AppliedProtocol.objects.all().filter(submission=submission) for applied_protocol in applied_protocol_list: protocol_list.append(applied_protocol.protocol) # protocols submission_data_list = SubmissionData.objects.all().filter(Q(applied_protocol_input=applied_protocol) | Q(applied_protocol_output=applied_protocol)) for submission_data in submission_data_list: if submission_data.content_type==ContentType.objects.get_for_model(ToxoplasmaMutant): toxoplasma_mutant_list.append(submission_data.content_object) organism_list.append(submission_data.content_object.organism) if submission_data.content_type==ContentType.objects.get_for_model(Antibody): antibody_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(ExperimentalFactor): experimental_factor_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(MicroArray): microarray_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(Sequencing): sequencing_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(DataAnalysis): data_analysis_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(PersistentDataFile): persistent_datafile_list.append(submission_data.content_object) if submission_data.content_type==ContentType.objects.get_for_model(SubmissionDataFile): submission_datafile_list.append(submission_data.content_object) protocol_list = list(set(protocol_list)) # Get rid of duplicates organism_list = list(set(organism_list)) # Get rid of duplicates toxoplasma_mutant_list = list(set(toxoplasma_mutant_list)) # Get rid of duplicates antibody_list = list(set(antibody_list)) # Get rid of duplicates experimental_factor_list = list(set(experimental_factor_list)) # Get rid of duplicates microarray_list = list(set(microarray_list)) # Get rid of duplicates sequencing_list = list(set(sequencing_list)) # Get rid of duplicates data_analysis_list = list(set(data_analysis_list)) # Get rid of duplicates persistent_datafile_list = list(set(persistent_datafile_list)) # Get rid of duplicates submission_datafile_list = list(set(submission_datafile_list)) # Get rid of duplicates # Only export if there is a related labs if publication_list or lab_list or project_list or experiment_list or applied_protocol_list or protocol_list: outfile.write('<item id="Submission_' + str(submission.id) + '" class="Submission">\n') outfile.write('\t<attribute name="TCid" value="' + submission.generated_id + '" />\n') outfile.write('\t<attribute name="name" value="' + submission.name + '" />\n') outfile.write('\t<attribute name="description" value="' + submission.description + '" />\n') outfile.write('\t<attribute name="technique" value="' + submission.technique.name + '" />\n') outfile.write('\t<attribute name="qualityControl" value="' + submission.quality_control.name + '" />\n') outfile.write('\t<attribute name="embargoDate" value="' + str(submission.date_embargo) + '" />\n') outfile.write('\t<attribute name="publicReleaseDate" value="' + str(submission.date_created) + '" />\n') outfile.write('\t<attribute name="replicateDate" value="' + str(submission.date_replicate) + '" />\n') if publication_list: exporter_utility.write_collection_items(outfile, publication_list, 'Publication', 'publications') if lab_list: exporter_utility.write_collection_items(outfile, lab_list, 'Lab', 'labs') if project_list: exporter_utility.write_collection_items(outfile, project_list, 'Project', 'projects') if experiment_list: exporter_utility.write_collection_items(outfile, experiment_list, 'Experiment', 'experiments') if applied_protocol_list: exporter_utility.write_collection_items(outfile, applied_protocol_list, 'AppliedProtocol', 'appliedProtocols') if protocol_list: exporter_utility.write_collection_items(outfile, protocol_list, 'Protocol', 'protocols') if organism_list: exporter_utility.write_collection_items(outfile, organism_list, 'Organism', 'organisms') if toxoplasma_mutant_list: exporter_utility.write_collection_items(outfile, toxoplasma_mutant_list, 'ToxoplasmaMutant', 'toxoplasmaMutants') if antibody_list: exporter_utility.write_collection_items(outfile, antibody_list, 'Antibody', 'antibodies') if experimental_factor_list: exporter_utility.write_collection_items(outfile, experimental_factor_list, 'ExperimentalFactor', 'experimentalFactors') if microarray_list: exporter_utility.write_collection_items(outfile, microarray_list, 'MicroArray', 'microArrays') if sequencing_list: exporter_utility.write_collection_items(outfile, sequencing_list, 'Sequencing', 'sequencings') if data_analysis_list: exporter_utility.write_collection_items(outfile, data_analysis_list, 'DataAnalysis', 'dataAnalyses') if persistent_datafile_list: exporter_utility.write_collection_items(outfile, persistent_datafile_list, 'PersistentDataFile', 'persistentDataFiles') if submission_datafile_list: exporter_utility.write_collection_items(outfile, submission_datafile_list, 'SubmissionDataFile', 'submissionDataFiles') outfile.write('</item>\n') outfile.close() # close file