Source code for core.copy_card

# -*- coding: utf-8 -*-
from django.shortcuts import get_object_or_404

from cards.models import (QRF, RFScore, Remap, YearFilter, Collate, PreProc,
                            MergeCSV, RFTrain, RandomForest, CalcStats)
from core.utils import get_copy_name


[docs]def create_copycard(card, card_type): """**The method determines the type of cards which function to copy the run.** :Arguments: * *card*: The card name * *card_type*: The card type """ copy_card_func = COPY_CARD[card_type] new_copy_card = copy_card_func(card) return new_copy_card
[docs]def get_copy_name_card(name, model): """**The method creates a new name for the copied card.** :Arguments: * *name*: The card name * *model*: The Card model object """ card_count = model.objects.all().count() copy_name_card = get_copy_name(name) new_name_card = '{0}*cp{1}'.format(copy_name_card, card_count) return new_name_card
[docs]def qrf_copy(card): """**The method copies the QRF card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, QRF) cur_card = get_object_or_404(QRF, name=card) qrf_card = QRF.objects.create( name=name, interval=cur_card.interval, number_of_trees=cur_card.number_of_trees, number_of_threads=cur_card.number_of_threads, directory=cur_card.directory, ) return qrf_card
[docs]def rfscore_copy(card): """**The method copies the RFScore card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, RFScore) cur_card = get_object_or_404(RFScore, name=card) rfscore_card = RFScore.objects.create( name=name, area=cur_card.area, year_group=cur_card.year_group, bias_corrn=cur_card.bias_corrn, number_of_threads=cur_card.number_of_threads, QRFopts=cur_card.QRFopts, ref_target=cur_card.ref_target, clean_name=cur_card.clean_name, run_parallel=cur_card.run_parallel, ) return rfscore_card
[docs]def remap_copy(card): """**The method copies the Remap card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, Remap) cur_card = get_object_or_404(Remap, name=card) remap_card = Remap.objects.create( name=name, run_parallel=cur_card.run_parallel, file_spec=cur_card.file_spec, roi=cur_card.roi, year_group=cur_card.year_group, model_name=cur_card.model_name, output_root=cur_card.output_root, output_suffix=cur_card.output_suffix, scale=cur_card.scale, output=cur_card.output, color_table=cur_card.color_table, refstats_file=cur_card.refstats_file, refstats_scale=cur_card.refstats_scale, conditional_mean=cur_card.conditional_mean, conditional_min=cur_card.conditional_min, conditional_median=cur_card.conditional_median, conditional_max=cur_card.conditional_max, lower_quartile=cur_card.lower_quartile, upper_quartile=cur_card.upper_quartile, ) return remap_card
[docs]def yearfilter_copy(card): """**The method copies the YearFilter card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, YearFilter) cur_card = get_object_or_404(YearFilter, name=card) year_filter_card = YearFilter.objects.create( name=name, area=cur_card.area, filetype=cur_card.filetype, filter=cur_card.filter, filter_output=cur_card.filter_output, extend_start=cur_card.extend_start, input_fourier=cur_card.input_fourier, output_directory=cur_card.output_directory, input_directory=cur_card.input_directory, run_parallel=cur_card.run_parallel, ) return year_filter_card
[docs]def collate_copy(card): """**The method copies the Collate card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, Collate) cur_card = get_object_or_404(Collate, name=card) input_files = Collate.input_files.through.objects.filter( collate_id = cur_card.id ) collate_card = Collate.objects.create( name=name, area=cur_card.area, mode=cur_card.mode, output_tile_subdir=cur_card.output_tile_subdir, input_scale_factor=cur_card.input_scale_factor, run_parallel=cur_card.run_parallel, input_data_directory=cur_card.input_data_directory, ) if input_files: for n in input_files: Collate.input_files.through.objects.create( listtestfiles_id=n.listtestfiles_id, collate_id =collate_card.id ) return collate_card
[docs]def preproc_copy(card): """**The method copies the PreProc card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, PreProc) cur_card = get_object_or_404(PreProc, name=card) preproc_card = PreProc.objects.create( name=name, area=cur_card.area, mode=cur_card.mode, year_group=cur_card.year_group, run_parallel=cur_card.run_parallel, path_spec_location=cur_card.path_spec_location, ) return preproc_card
[docs]def mergecsv_copy(card): """**The method copies the MergeCSV card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, MergeCSV) cur_card = get_object_or_404(MergeCSV, name=card) mergecsv_card = MergeCSV.objects.create( name=name, csv1=cur_card.csv1, csv2=cur_card.csv2, ) return mergecsv_card
[docs]def rftrain_copy(card): """**The method copies the RFTrain card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, RFTrain) cur_card = get_object_or_404(RFTrain, name=card) rftrain_card = RFTrain.objects.create( name=name, tile_type=cur_card.tile_type, number_of_trees=cur_card.number_of_trees, number_of_thread=cur_card.number_of_thread, number_of_variable=cur_card.number_of_variable, training=cur_card.training, value=cur_card.value, config_file=cur_card.config_file, output_tile_subdir=cur_card.output_tile_subdir, input_scale_factor=cur_card.input_scale_factor, run_parallel=cur_card.run_parallel, ) return rftrain_card
[docs]def randomforest_copy(card): """**The method copies the RandomForest card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, RandomForest) cur_card = get_object_or_404(RandomForest, name=card) randomforest_card = RandomForest.objects.create( name=name, aoi_name=cur_card.aoi_name, satellite=cur_card.satellite, param_set=cur_card.param_set, run_set=cur_card.run_set, model=cur_card.model, mvrf=cur_card.mvrf, ) return randomforest_card
[docs]def calcstats_copy(card): """**The method copies the CalcStats card.** :Arguments: * *name*: The card name """ name = get_copy_name_card(card, CalcStats) cur_card = get_object_or_404(CalcStats, name=card) calcstats_card = CalcStats.objects.create( name=name, output_tile_subdir=cur_card.output_tile_subdir, year_group=cur_card.year_group, area=cur_card.area, period=cur_card.period, doy_variable=cur_card.doy_variable, filter=cur_card.filter, filter_out=cur_card.filter_out, input_fourier=cur_card.input_fourier, out_dir=cur_card.out_dir, run_parallel=cur_card.run_parallel, path_spec_location=cur_card.path_spec_location, ) return calcstats_card
# Dictionary: {<map_name> <function_to_copy>} COPY_CARD = { 'qrf': qrf_copy, 'rfscore': rfscore_copy, 'remap': remap_copy, 'yearfilter': yearfilter_copy, 'collate': collate_copy, 'preproc': preproc_copy, 'mergecsv': mergecsv_copy, 'rftrain': rftrain_copy, 'randomforest': randomforest_copy, 'calcstats': calcstats_copy }