##// END OF EJS Templates
Metodos: dict_to_parms() & parms_to_dict() actualizados...
Fiorella Quino -
r150:e738c13dd184
parent child
Show More
@@ -1,138 +1,177
1 1 from django.db import models
2 2 from apps.main.models import Configuration
3 3 from django.core.validators import MinValueValidator, MaxValueValidator
4 4
5 5 from apps.rc.models import RCConfiguration
6 6 # Create your models here.
7 7
8 8 EXPERIMENT_TYPE = (
9 9 (0, 'RAW_DATA'),
10 10 (1, 'PDATA'),
11 11 )
12 12
13 13 DATA_TYPE = (
14 14 (0, 'SHORT'),
15 15 (1, 'FLOAT'),
16 16 )
17 17
18 18 class JARSfilter(models.Model):
19 19
20 20 JARS_NBITS = 32
21 21
22 22 name = models.CharField(max_length=60, unique=True, default='')
23 23 clock = models.FloatField(verbose_name='Clock In (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
24 24 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
25 25 fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200)
26 26 fch_decimal = models.BigIntegerField(verbose_name='Frequency (Decimal)',validators=[MinValueValidator(0), MaxValueValidator(2**JARS_NBITS-1)], null=True, default=721554505)
27 27 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 6)
28 28 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 10)
29 29 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1)
30 30 speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0)
31 31
32 32 class Meta:
33 33 db_table = 'jars_filters'
34 34
35 35 def __unicode__(self):
36 36 return u'%s' % (self.name)
37 37
38 38 def parms_to_dict(self):
39 39
40 40 parameters = {}
41 41
42 42 parameters['name'] = self.name
43 43 parameters['clock'] = float(self.clock)
44 44 parameters['mult'] = int(self.mult)
45 45 parameters['fch'] = float(self.fch)
46 46 parameters['fch_decimal'] = int(self.fch)
47 47 parameters['filter_fir'] = int(self.filter_fir)
48 48 parameters['filter_2'] = int(self.filter_2)
49 49 parameters['filter_5'] = int(self.filter_5)
50 50 parameters['speed'] = int(self.speed)
51 51
52 52 return parameters
53 53
54 54 def dict_to_parms(self, parameters):
55 55
56 56 self.name = parameters['name']
57 57 self.clock = parameters['clock']
58 58 self.mult = parameters['mult']
59 59 self.fch = parameters['fch']
60 60 self.fch_decimal = parameters['fch_decimal']
61 61 self.filter_fir = parameters['filter_fir']
62 62 self.filter_2 = parameters['filter_2']
63 63 self.filter_5 = parameters['filter_5']
64 64 self.speed = parameters['speed']
65 65
66 66
67 67 class JARSConfiguration(Configuration):
68 68
69 69 ADC_RESOLUTION = 8
70 70 PCI_DIO_BUSWIDTH = 32
71 71 HEADER_VERSION = 1103
72 72 BEGIN_ON_START = True
73 73 REFRESH_RATE = 1
74 74
75 75 #rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True)
76 76 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
77 77 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
78 78 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
79 79 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
80 80 rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=40, default='', blank=True, null=True)
81 81 raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=120)
82 82 data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0)
83 83 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', validators=[MaxValueValidator(5000)], default=400)
84 84 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', validators=[MaxValueValidator(5000)], default=400)
85 85 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
86 86 cohe_integr = models.PositiveIntegerField(verbose_name='Coherent Integrations',validators=[MinValueValidator(1)], default=30)
87 87 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
88 88 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
89 89 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
90 90 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
91 91 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
92 92 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True)
93 93 acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True)
94 94 view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
95 95 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
96 filter_parms = models.CharField(max_length=10000, default='{}')
96 filter_parms = models.CharField(max_length=10000, default='{}')
97 97
98 98 class Meta:
99 99 db_table = 'jars_configurations'
100 100
101 101 def parms_to_dict(self):
102 102
103 103 parameters = {}
104 104
105 105 parameters['name'] = self.name
106 parameters['rc'] = self.rc.name
106 #parameters['rc'] = self.rc.name
107 107 parameters['exp_type'] = self.exp_type
108 parameters['exptype'] = EXPERIMENT_TYPE[self.exp_type][1]
108 109 parameters['cards_number'] = self.cards_number
109 110 parameters['channels_number'] = self.channels_number
110 111 parameters['channels'] = self.channels
111 112 parameters['rd_directory'] = self.rd_directory
112 113 parameters['raw_data_blocks'] = self.raw_data_blocks
113 114 parameters['data_type'] = self.data_type
114 115 parameters['acq_profiles'] = self.acq_profiles
115 116 parameters['profiles_block'] = self.profiles_block
117 parameters['fftpoints'] = self.fftpoints
118 parameters['cohe_integr'] = self.cohe_integr
119 #parameters['incohe_integr'] = self.incohe_integr
116 120 parameters['filter'] = self.filter.name
121 #parameters['spectral_number'] = self.spectral_number
122 #parameters['spectral'] = self.spectral
117 123 parameters['create_directory'] = bool(self.create_directory)
118 124 parameters['include_expname'] = bool(self.include_expname)
119 125 parameters['acq_link'] = bool(self.acq_link)
120 parameters['view_raw_data'] = bool(self.view_raw_data)
126 parameters['view_raw_data'] = bool(self.view_raw_data)
127 parameters['save_ch_dc'] = bool(self.save_ch_dc)
128
129 if parameters['exptype'] == 'PDATA':
130 parameters['incohe_integr'] = self.incohe_integr
131 parameters['spectral_number'] = self.spectral_number
132 parameters['spectral'] = self.spectral
121 133
122 134 return parameters
123 135
124 136 def add_parms_to_filter(self):
125 137 self.filter_parms = self.filter.parms_to_dict()
126 138 self.save()
127 139
128 140 def dict_to_parms(self, parameters):
129 return
141
142 self.exp_type = int(parameters['exp_type'])
143 if parameters['exptype'] == 'PDATA':
144 self.incohe_integr = parameters['incohe_integr']
145 self.spectral_number = parameters['spectral_number']
146 self.spectral = parameters['spectral']
147
148 self.cards_number = int(parameters['cards_number'])
149 self.channels_number = int(parameters['channels_number'])
150 self.channels = parameters['channels']
151 self.rd_directory = parameters['rd_directory']
152 self.raw_data_blocks = parameters['raw_data_blocks']
153 self.data_type = parameters['data_type']
154 self.acq_profiles = parameters['acq_profiles']
155 self.profiles_block = parameters['profiles_block']
156 self.fftpoints = parameters['fftpoints']
157 self.cohe_integr = parameters['cohe_integr']
158
159 filter_name = parameters['filter']
160 self.filter = JARS.objects.get(name=filter_name)
161 self.save()
162 self.add_parms_to_filter()
163
164 self.create_directory = bool(parameters['create_directory'])
165 self.include_expname = bool(parameters['include_expname'])
166 self.acq_link = bool(parameters['acq_link'])
167 self.view_raw_data = bool(parameters['view_raw_data'])
168 self.save_ch_dc = bool(parameters['save_ch_dc'])
130 169
131 170 def status_device(self):
132 171 return
133 172
134 173 def read_device(self):
135 174 return
136 175
137 176 def write_device(self):
138 177 return No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now