def add_bio_feature_reporter_data(self, name, description, *args, **kwargs): if len(self.bio_feature_reporter_buffer ) >= self.bio_feature_reporter_buffer_size: saved = False while not saved: try: init_parsing_database_connections(self.db) parsing_plt = ParsingPlatform.objects.using( self.db).get(platform_fk=self.plt_id) with transaction.atomic(using=self.db): for rep, values in self.bio_feature_reporter_buffer: rep.platform = parsing_plt rep.save(using=self.db) for value in values: value.bio_feature_reporter = rep value.save(using=self.db) self.bio_feature_reporter_buffer.clear() saved = True except OperationalError as e: time.sleep(2) else: reporter = ParsingBioFeatureReporter(name=name, description=description) values = [] for field, value in kwargs.items(): reporter_field_value = ParsingBioFeatureReporterValues( bio_feature_reporter_field=field, value=value) values.append(reporter_field_value) self.bio_feature_reporter_buffer.append((reporter, values))
def __init__(self, plt, db): self.db = db self.platform_access_id = None self.platform_name = None self.description = None self.platform_type = None self.plt_id = plt.id self.bio_feature_reporter_buffer = [] self.bio_feature_reporter_buffer_size = 2000 init_parsing_database_connections(self.db) try: parsing_plt = ParsingPlatform.objects.using( self.db).get(platform_fk=self.plt_id) except Exception as e: parsing_plt = ParsingPlatform() parsing_plt.platform_access_id = plt.platform_access_id parsing_plt.platform_name = plt.platform_name parsing_plt.description = plt.description parsing_plt.platform_fk = plt.id parsing_plt.platform_type = plt.platform_type.name if plt.platform_type is not None else None saved = False while not saved: try: parsing_plt.save(using=self.db) saved = True except OperationalError as e: time.sleep(2) saved = False while not saved: try: parsing_plt.parsingbiofeaturereporter_set.all().delete() saved = True except OperationalError as e: time.sleep(2)
def __init__(self, smp, db): self.db = db self.sample_name = None self.description = None self.smp_id = smp.id self.buffer = [] self.buffer_size = 2000 init_parsing_database_connections(self.db) try: self.parsing_smp = ParsingSample.objects.using( self.db).get(sample_fk=self.smp_id) except Exception as e: self.parsing_smp = ParsingSample() self.parsing_smp.sample_name = smp.sample_name self.parsing_smp.description = smp.description self.parsing_smp.reporter_platform = self.parsing_smp.platform.reporter_platform saved = False while not saved: try: self.parsing_smp.save(using=self.db) saved = True except OperationalError as e: time.sleep(2) saved = False while not saved: try: self.parsing_smp.parsingrawdata_set.all().delete() saved = True except OperationalError as e: time.sleep(2)
def save_sample_object(self): saved = False while not saved: try: init_parsing_database_connections(self.db) parsing_smp = ParsingSample.objects.using( self.db).get(sample_fk=self.smp_id) parsing_smp.sample_name = self.sample_name if self.sample_name is not None else parsing_smp.sample_name parsing_smp.description = self.description if self.description is not None else parsing_smp.description parsing_smp.sample_fk = self.smp_id parsing_smp.save(using=self.db) with transaction.atomic(using=self.db): ParsingRawData.objects.using(self.db).bulk_create( self.buffer) saved = True except OperationalError as e: time.sleep(2)
def add_raw_data(self, bio_feature_reporter, value): if len(self.buffer) >= self.buffer_size: saved = False while not saved: try: init_parsing_database_connections(self.db) with transaction.atomic(using=self.db): ParsingRawData.objects.using(self.db).bulk_create( self.buffer) self.buffer.clear() saved = True except OperationalError as e: time.sleep(2) else: self.buffer.append( ParsingRawData(sample=self.parsing_smp, bio_feature_reporter_name=bio_feature_reporter, value=value))
def save_experiment_object(self): init_parsing_database_connections(self.db) try: parsing_exp = ParsingExperiment.objects.using( self.db).get(experiment_fk=self.exp_id) except Exception as e: parsing_exp = ParsingExperiment() saved = False while not saved: try: parsing_exp.organism = self.organism if self.organism is not None else parsing_exp.organism parsing_exp.experiment_access_id = self.experiment_access_id if self.experiment_access_id is not None else parsing_exp.experiment_access_id parsing_exp.experiment_name = self.experiment_name if self.experiment_name is not None else parsing_exp.experiment_name parsing_exp.scientific_paper_ref = self.scientific_paper_accession_base_link + self.scientific_paper_ref \ if self.scientific_paper_ref is not None else parsing_exp.scientific_paper_ref parsing_exp.description = self.description if self.description is not None else parsing_exp.description parsing_exp.experiment_fk = self.exp_id parsing_exp.save(using=self.db) saved = True except OperationalError as e: time.sleep(2)
def save_platform_object(self): saved = False while not saved: try: init_parsing_database_connections(self.db) parsing_plt = ParsingPlatform.objects.using( self.db).get(platform_fk=self.plt_id) parsing_plt.platform_access_id = self.platform_access_id if self.platform_access_id is not None else parsing_plt.platform_access_id parsing_plt.platform_name = self.platform_name if self.platform_name is not None else parsing_plt.platform_name parsing_plt.description = self.description if self.description is not None else parsing_plt.description parsing_plt.platform_fk = self.plt_id parsing_plt.platform_type = self.platform_type parsing_plt.save(using=self.db) with transaction.atomic(using=self.db): for rep, values in self.bio_feature_reporter_buffer: rep.platform = parsing_plt rep.save(using=self.db) for value in values: value.bio_feature_reporter = rep value.save(using=self.db) saved = True except OperationalError as e: time.sleep(2)