##// END OF EJS Templates
Faraday manual processing improved
Christianpl -
r1774:e7bb496918b2
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,37
1 C -*- fortran -*-
2 C This file is autogenerated with f2py (version:2)
3 C It contains Fortran 77 wrappers to fortran functions.
4
5 subroutine f2pywrapspect1 (spect1f2pywrap, omega)
6 external spect1
7 real omega
8 real spect1f2pywrap, spect1
9 spect1f2pywrap = spect1(omega)
10 end
11
12
13 subroutine f2pyinitspec(setupfunc)
14 external setupfunc
15 real te
16 real ti(10)
17 real fi(10)
18 real ven
19 real vin(10)
20 real alpha
21 real dens
22 real bfld
23 integer nion
24 integer wi(10)
25 real ak
26 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
27 call setupfunc(te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak)
28 end
29
30 subroutine f2pyinitmode(setupfunc)
31 external setupfunc
32 integer imode
33 common /mode/ imode
34 call setupfunc(imode)
35 end
36
37
This diff has been collapsed as it changes many lines, (797 lines changed) Show them Hide them
@@ -0,0 +1,797
1 /* File: fitacf_acf2module.c
2 * This file is auto-generated with f2py (version:2).
3 * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition,
4 * written by Pearu Peterson <pearu@cens.ioc.ee>.
5 * Generation date: Wed Jan 8 13:23:37 2025
6 * Do not edit this file directly unless you know what you are doing!!!
7 */
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 /*********************** See f2py2e/cfuncs.py: includes ***********************/
14 #include "Python.h"
15 #include <stdarg.h>
16 #include "fortranobject.h"
17 #include <math.h>
18
19 /**************** See f2py2e/rules.py: mod_rules['modulebody'] ****************/
20 static PyObject *fitacf_acf2_error;
21 static PyObject *fitacf_acf2_module;
22
23 /*********************** See f2py2e/cfuncs.py: typedefs ***********************/
24 /*need_typedefs*/
25
26 /****************** See f2py2e/cfuncs.py: typedefs_generated ******************/
27 /*need_typedefs_generated*/
28
29 /********************** See f2py2e/cfuncs.py: cppmacros **********************/
30 #if defined(PREPEND_FORTRAN)
31 #if defined(NO_APPEND_FORTRAN)
32 #if defined(UPPERCASE_FORTRAN)
33 #define F_FUNC(f,F) _##F
34 #else
35 #define F_FUNC(f,F) _##f
36 #endif
37 #else
38 #if defined(UPPERCASE_FORTRAN)
39 #define F_FUNC(f,F) _##F##_
40 #else
41 #define F_FUNC(f,F) _##f##_
42 #endif
43 #endif
44 #else
45 #if defined(NO_APPEND_FORTRAN)
46 #if defined(UPPERCASE_FORTRAN)
47 #define F_FUNC(f,F) F
48 #else
49 #define F_FUNC(f,F) f
50 #endif
51 #else
52 #if defined(UPPERCASE_FORTRAN)
53 #define F_FUNC(f,F) F##_
54 #else
55 #define F_FUNC(f,F) f##_
56 #endif
57 #endif
58 #endif
59 #if defined(UNDERSCORE_G77)
60 #define F_FUNC_US(f,F) F_FUNC(f##_,F##_)
61 #else
62 #define F_FUNC_US(f,F) F_FUNC(f,F)
63 #endif
64
65 #define rank(var) var ## _Rank
66 #define shape(var,dim) var ## _Dims[dim]
67 #define old_rank(var) (PyArray_NDIM((PyArrayObject *)(capi_ ## var ## _tmp)))
68 #define old_shape(var,dim) PyArray_DIM(((PyArrayObject *)(capi_ ## var ## _tmp)),dim)
69 #define fshape(var,dim) shape(var,rank(var)-dim-1)
70 #define len(var) shape(var,0)
71 #define flen(var) fshape(var,0)
72 #define old_size(var) PyArray_SIZE((PyArrayObject *)(capi_ ## var ## _tmp))
73 /* #define index(i) capi_i ## i */
74 #define slen(var) capi_ ## var ## _len
75 #define size(var, ...) f2py_size((PyArrayObject *)(capi_ ## var ## _tmp), ## __VA_ARGS__, -1)
76
77 #define CHECKSCALAR(check,tcheck,name,show,var)\
78 if (!(check)) {\
79 char errstring[256];\
80 sprintf(errstring, "%s: "show, "("tcheck") failed for "name, var);\
81 PyErr_SetString(fitacf_acf2_error,errstring);\
82 /*goto capi_fail;*/\
83 } else
84 #ifdef DEBUGCFUNCS
85 #define CFUNCSMESS(mess) fprintf(stderr,"debug-capi:"mess);
86 #define CFUNCSMESSPY(mess,obj) CFUNCSMESS(mess) \
87 PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\
88 fprintf(stderr,"\n");
89 #else
90 #define CFUNCSMESS(mess)
91 #define CFUNCSMESSPY(mess,obj)
92 #endif
93
94 #ifndef max
95 #define max(a,b) ((a > b) ? (a) : (b))
96 #endif
97 #ifndef min
98 #define min(a,b) ((a < b) ? (a) : (b))
99 #endif
100 #ifndef MAX
101 #define MAX(a,b) ((a > b) ? (a) : (b))
102 #endif
103 #ifndef MIN
104 #define MIN(a,b) ((a < b) ? (a) : (b))
105 #endif
106
107 #if defined(PREPEND_FORTRAN)
108 #if defined(NO_APPEND_FORTRAN)
109 #if defined(UPPERCASE_FORTRAN)
110 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F
111 #else
112 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f
113 #endif
114 #else
115 #if defined(UPPERCASE_FORTRAN)
116 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F##_
117 #else
118 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f##_
119 #endif
120 #endif
121 #else
122 #if defined(NO_APPEND_FORTRAN)
123 #if defined(UPPERCASE_FORTRAN)
124 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F
125 #else
126 #define F_WRAPPEDFUNC(f,F) f2pywrap##f
127 #endif
128 #else
129 #if defined(UPPERCASE_FORTRAN)
130 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F##_
131 #else
132 #define F_WRAPPEDFUNC(f,F) f2pywrap##f##_
133 #endif
134 #endif
135 #endif
136 #if defined(UNDERSCORE_G77)
137 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f##_,F##_)
138 #else
139 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f,F)
140 #endif
141
142
143 /************************ See f2py2e/cfuncs.py: cfuncs ************************/
144 static int double_from_pyobj(double* v,PyObject *obj,const char *errmess) {
145 PyObject* tmp = NULL;
146 if (PyFloat_Check(obj)) {
147 #ifdef __sgi
148 *v = PyFloat_AsDouble(obj);
149 #else
150 *v = PyFloat_AS_DOUBLE(obj);
151 #endif
152 return 1;
153 }
154 tmp = PyNumber_Float(obj);
155 if (tmp) {
156 #ifdef __sgi
157 *v = PyFloat_AsDouble(tmp);
158 #else
159 *v = PyFloat_AS_DOUBLE(tmp);
160 #endif
161 Py_DECREF(tmp);
162 return 1;
163 }
164 if (PyComplex_Check(obj))
165 tmp = PyObject_GetAttrString(obj,"real");
166 else if (PyString_Check(obj) || PyUnicode_Check(obj))
167 /*pass*/;
168 else if (PySequence_Check(obj))
169 tmp = PySequence_GetItem(obj,0);
170 if (tmp) {
171 PyErr_Clear();
172 if (double_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
173 Py_DECREF(tmp);
174 }
175 {
176 PyObject* err = PyErr_Occurred();
177 if (err==NULL) err = fitacf_acf2_error;
178 PyErr_SetString(err,errmess);
179 }
180 return 0;
181 }
182
183 static int f2py_size(PyArrayObject* var, ...)
184 {
185 npy_int sz = 0;
186 npy_int dim;
187 npy_int rank;
188 va_list argp;
189 va_start(argp, var);
190 dim = va_arg(argp, npy_int);
191 if (dim==-1)
192 {
193 sz = PyArray_SIZE(var);
194 }
195 else
196 {
197 rank = PyArray_NDIM(var);
198 if (dim>=1 && dim<=rank)
199 sz = PyArray_DIM(var, dim-1);
200 else
201 fprintf(stderr, "f2py_size: 2nd argument value=%d fails to satisfy 1<=value<=%d. Result will be 0.\n", dim, rank);
202 }
203 va_end(argp);
204 return sz;
205 }
206
207 static int float_from_pyobj(float* v,PyObject *obj,const char *errmess) {
208 double d=0.0;
209 if (double_from_pyobj(&d,obj,errmess)) {
210 *v = (float)d;
211 return 1;
212 }
213 return 0;
214 }
215
216 static int int_from_pyobj(int* v,PyObject *obj,const char *errmess) {
217 PyObject* tmp = NULL;
218 if (PyInt_Check(obj)) {
219 *v = (int)PyInt_AS_LONG(obj);
220 return 1;
221 }
222 tmp = PyNumber_Int(obj);
223 if (tmp) {
224 *v = PyInt_AS_LONG(tmp);
225 Py_DECREF(tmp);
226 return 1;
227 }
228 if (PyComplex_Check(obj))
229 tmp = PyObject_GetAttrString(obj,"real");
230 else if (PyString_Check(obj) || PyUnicode_Check(obj))
231 /*pass*/;
232 else if (PySequence_Check(obj))
233 tmp = PySequence_GetItem(obj,0);
234 if (tmp) {
235 PyErr_Clear();
236 if (int_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
237 Py_DECREF(tmp);
238 }
239 {
240 PyObject* err = PyErr_Occurred();
241 if (err==NULL) err = fitacf_acf2_error;
242 PyErr_SetString(err,errmess);
243 }
244 return 0;
245 }
246
247
248 /********************* See f2py2e/cfuncs.py: userincludes *********************/
249 /*need_userincludes*/
250
251 /********************* See f2py2e/capi_rules.py: usercode *********************/
252
253
254 /* See f2py2e/rules.py */
255 extern void F_FUNC(acf2,ACF2)(float*,float*,float*,float*,float*,float*,float*,int*,int*,float*,float*,float*,float*);
256 extern void F_WRAPPEDFUNC(spect1,SPECT1)(float*,float*);
257 extern void F_FUNC(gaussq,GAUSSQ)(float*,float*);
258 /*eof externroutines*/
259
260 /******************** See f2py2e/capi_rules.py: usercode1 ********************/
261
262
263 /******************* See f2py2e/cb_rules.py: buildcallback *******************/
264 /*need_callbacks*/
265
266 /*********************** See f2py2e/rules.py: buildapi ***********************/
267
268 /************************************ acf2 ************************************/
269 static char doc_f2py_rout_fitacf_acf2_acf2[] = "\
270 acf = acf2(wl,tau,te1,ti1,fi1,ven1,vin1,wi1,alpha1,dens1,bfld1,acf,[nion1])\n\nWrapper for ``acf2``.\
271 \n\nParameters\n----------\n"
272 "wl : input float\n"
273 "tau : input float\n"
274 "te1 : input float\n"
275 "ti1 : input rank-1 array('f') with bounds (nion1)\n"
276 "fi1 : input rank-1 array('f') with bounds (nion1)\n"
277 "ven1 : input float\n"
278 "vin1 : input rank-1 array('f') with bounds (nion1)\n"
279 "wi1 : input rank-1 array('i') with bounds (nion1)\n"
280 "alpha1 : input float\n"
281 "dens1 : input float\n"
282 "bfld1 : input float\n"
283 "acf : input float\n"
284 "\nOther Parameters\n----------------\n"
285 "nion1 : input int, optional\n Default: len(ti1)\n"
286 "\nReturns\n-------\n"
287 "acf : float";
288 /* extern void F_FUNC(acf2,ACF2)(float*,float*,float*,float*,float*,float*,float*,int*,int*,float*,float*,float*,float*); */
289 static PyObject *f2py_rout_fitacf_acf2_acf2(const PyObject *capi_self,
290 PyObject *capi_args,
291 PyObject *capi_keywds,
292 void (*f2py_func)(float*,float*,float*,float*,float*,float*,float*,int*,int*,float*,float*,float*,float*)) {
293 PyObject * volatile capi_buildvalue = NULL;
294 volatile int f2py_success = 1;
295 /*decl*/
296
297 float wl = 0;
298 PyObject *wl_capi = Py_None;
299 float tau = 0;
300 PyObject *tau_capi = Py_None;
301 float te1 = 0;
302 PyObject *te1_capi = Py_None;
303 float *ti1 = NULL;
304 npy_intp ti1_Dims[1] = {-1};
305 const int ti1_Rank = 1;
306 PyArrayObject *capi_ti1_tmp = NULL;
307 int capi_ti1_intent = 0;
308 PyObject *ti1_capi = Py_None;
309 float *fi1 = NULL;
310 npy_intp fi1_Dims[1] = {-1};
311 const int fi1_Rank = 1;
312 PyArrayObject *capi_fi1_tmp = NULL;
313 int capi_fi1_intent = 0;
314 PyObject *fi1_capi = Py_None;
315 float ven1 = 0;
316 PyObject *ven1_capi = Py_None;
317 float *vin1 = NULL;
318 npy_intp vin1_Dims[1] = {-1};
319 const int vin1_Rank = 1;
320 PyArrayObject *capi_vin1_tmp = NULL;
321 int capi_vin1_intent = 0;
322 PyObject *vin1_capi = Py_None;
323 int *wi1 = NULL;
324 npy_intp wi1_Dims[1] = {-1};
325 const int wi1_Rank = 1;
326 PyArrayObject *capi_wi1_tmp = NULL;
327 int capi_wi1_intent = 0;
328 PyObject *wi1_capi = Py_None;
329 int nion1 = 0;
330 PyObject *nion1_capi = Py_None;
331 float alpha1 = 0;
332 PyObject *alpha1_capi = Py_None;
333 float dens1 = 0;
334 PyObject *dens1_capi = Py_None;
335 float bfld1 = 0;
336 PyObject *bfld1_capi = Py_None;
337 float acf = 0;
338 PyObject *acf_capi = Py_None;
339 static char *capi_kwlist[] = {"wl","tau","te1","ti1","fi1","ven1","vin1","wi1","alpha1","dens1","bfld1","acf","nion1",NULL};
340
341 /*routdebugenter*/
342 #ifdef F2PY_REPORT_ATEXIT
343 f2py_start_clock();
344 #endif
345 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
346 "OOOOOOOOOOOO|O:fitacf_acf2.acf2",\
347 capi_kwlist,&wl_capi,&tau_capi,&te1_capi,&ti1_capi,&fi1_capi,&ven1_capi,&vin1_capi,&wi1_capi,&alpha1_capi,&dens1_capi,&bfld1_capi,&acf_capi,&nion1_capi))
348 return NULL;
349 /*frompyobj*/
350 /* Processing variable wl */
351 f2py_success = float_from_pyobj(&wl,wl_capi,"fitacf_acf2.acf2() 1st argument (wl) can't be converted to float");
352 if (f2py_success) {
353 /* Processing variable tau */
354 f2py_success = float_from_pyobj(&tau,tau_capi,"fitacf_acf2.acf2() 2nd argument (tau) can't be converted to float");
355 if (f2py_success) {
356 /* Processing variable te1 */
357 f2py_success = float_from_pyobj(&te1,te1_capi,"fitacf_acf2.acf2() 3rd argument (te1) can't be converted to float");
358 if (f2py_success) {
359 /* Processing variable ti1 */
360 ;
361 capi_ti1_intent |= F2PY_INTENT_IN;
362 capi_ti1_tmp = array_from_pyobj(NPY_FLOAT,ti1_Dims,ti1_Rank,capi_ti1_intent,ti1_capi);
363 if (capi_ti1_tmp == NULL) {
364 PyObject *exc, *val, *tb;
365 PyErr_Fetch(&exc, &val, &tb);
366 PyErr_SetString(exc ? exc : fitacf_acf2_error,"failed in converting 4th argument `ti1' of fitacf_acf2.acf2 to C/Fortran array" );
367 npy_PyErr_ChainExceptionsCause(exc, val, tb);
368 } else {
369 ti1 = (float *)(PyArray_DATA(capi_ti1_tmp));
370
371 /* Processing variable ven1 */
372 f2py_success = float_from_pyobj(&ven1,ven1_capi,"fitacf_acf2.acf2() 6th argument (ven1) can't be converted to float");
373 if (f2py_success) {
374 /* Processing variable alpha1 */
375 f2py_success = float_from_pyobj(&alpha1,alpha1_capi,"fitacf_acf2.acf2() 9th argument (alpha1) can't be converted to float");
376 if (f2py_success) {
377 /* Processing variable dens1 */
378 f2py_success = float_from_pyobj(&dens1,dens1_capi,"fitacf_acf2.acf2() 10th argument (dens1) can't be converted to float");
379 if (f2py_success) {
380 /* Processing variable bfld1 */
381 f2py_success = float_from_pyobj(&bfld1,bfld1_capi,"fitacf_acf2.acf2() 11st argument (bfld1) can't be converted to float");
382 if (f2py_success) {
383 /* Processing variable acf */
384 f2py_success = float_from_pyobj(&acf,acf_capi,"fitacf_acf2.acf2() 12nd argument (acf) can't be converted to float");
385 if (f2py_success) {
386 /* Processing variable nion1 */
387 if (nion1_capi == Py_None) nion1 = len(ti1); else
388 f2py_success = int_from_pyobj(&nion1,nion1_capi,"fitacf_acf2.acf2() 1st keyword (nion1) can't be converted to int");
389 if (f2py_success) {
390 CHECKSCALAR(len(ti1)>=nion1,"len(ti1)>=nion1","1st keyword nion1","acf2:nion1=%d",nion1) {
391 /* Processing variable fi1 */
392 fi1_Dims[0]=nion1;
393 capi_fi1_intent |= F2PY_INTENT_IN;
394 capi_fi1_tmp = array_from_pyobj(NPY_FLOAT,fi1_Dims,fi1_Rank,capi_fi1_intent,fi1_capi);
395 if (capi_fi1_tmp == NULL) {
396 PyObject *exc, *val, *tb;
397 PyErr_Fetch(&exc, &val, &tb);
398 PyErr_SetString(exc ? exc : fitacf_acf2_error,"failed in converting 5th argument `fi1' of fitacf_acf2.acf2 to C/Fortran array" );
399 npy_PyErr_ChainExceptionsCause(exc, val, tb);
400 } else {
401 fi1 = (float *)(PyArray_DATA(capi_fi1_tmp));
402
403 /* Processing variable vin1 */
404 vin1_Dims[0]=nion1;
405 capi_vin1_intent |= F2PY_INTENT_IN;
406 capi_vin1_tmp = array_from_pyobj(NPY_FLOAT,vin1_Dims,vin1_Rank,capi_vin1_intent,vin1_capi);
407 if (capi_vin1_tmp == NULL) {
408 PyObject *exc, *val, *tb;
409 PyErr_Fetch(&exc, &val, &tb);
410 PyErr_SetString(exc ? exc : fitacf_acf2_error,"failed in converting 7th argument `vin1' of fitacf_acf2.acf2 to C/Fortran array" );
411 npy_PyErr_ChainExceptionsCause(exc, val, tb);
412 } else {
413 vin1 = (float *)(PyArray_DATA(capi_vin1_tmp));
414
415 /* Processing variable wi1 */
416 wi1_Dims[0]=nion1;
417 capi_wi1_intent |= F2PY_INTENT_IN;
418 capi_wi1_tmp = array_from_pyobj(NPY_INT,wi1_Dims,wi1_Rank,capi_wi1_intent,wi1_capi);
419 if (capi_wi1_tmp == NULL) {
420 PyObject *exc, *val, *tb;
421 PyErr_Fetch(&exc, &val, &tb);
422 PyErr_SetString(exc ? exc : fitacf_acf2_error,"failed in converting 8th argument `wi1' of fitacf_acf2.acf2 to C/Fortran array" );
423 npy_PyErr_ChainExceptionsCause(exc, val, tb);
424 } else {
425 wi1 = (int *)(PyArray_DATA(capi_wi1_tmp));
426
427 /*end of frompyobj*/
428 #ifdef F2PY_REPORT_ATEXIT
429 f2py_start_call_clock();
430 #endif
431 /*callfortranroutine*/
432 (*f2py_func)(&wl,&tau,&te1,ti1,fi1,&ven1,vin1,wi1,&nion1,&alpha1,&dens1,&bfld1,&acf);
433 if (PyErr_Occurred())
434 f2py_success = 0;
435 #ifdef F2PY_REPORT_ATEXIT
436 f2py_stop_call_clock();
437 #endif
438 /*end of callfortranroutine*/
439 if (f2py_success) {
440 /*pyobjfrom*/
441 /*end of pyobjfrom*/
442 CFUNCSMESS("Building return value.\n");
443 capi_buildvalue = Py_BuildValue("f",acf);
444 /*closepyobjfrom*/
445 /*end of closepyobjfrom*/
446 } /*if (f2py_success) after callfortranroutine*/
447 /*cleanupfrompyobj*/
448 if((PyObject *)capi_wi1_tmp!=wi1_capi) {
449 Py_XDECREF(capi_wi1_tmp); }
450 } /*if (capi_wi1_tmp == NULL) ... else of wi1*/
451 /* End of cleaning variable wi1 */
452 if((PyObject *)capi_vin1_tmp!=vin1_capi) {
453 Py_XDECREF(capi_vin1_tmp); }
454 } /*if (capi_vin1_tmp == NULL) ... else of vin1*/
455 /* End of cleaning variable vin1 */
456 if((PyObject *)capi_fi1_tmp!=fi1_capi) {
457 Py_XDECREF(capi_fi1_tmp); }
458 } /*if (capi_fi1_tmp == NULL) ... else of fi1*/
459 /* End of cleaning variable fi1 */
460 } /*CHECKSCALAR(len(ti1)>=nion1)*/
461 } /*if (f2py_success) of nion1*/
462 /* End of cleaning variable nion1 */
463 } /*if (f2py_success) of acf*/
464 /* End of cleaning variable acf */
465 } /*if (f2py_success) of bfld1*/
466 /* End of cleaning variable bfld1 */
467 } /*if (f2py_success) of dens1*/
468 /* End of cleaning variable dens1 */
469 } /*if (f2py_success) of alpha1*/
470 /* End of cleaning variable alpha1 */
471 } /*if (f2py_success) of ven1*/
472 /* End of cleaning variable ven1 */
473 if((PyObject *)capi_ti1_tmp!=ti1_capi) {
474 Py_XDECREF(capi_ti1_tmp); }
475 } /*if (capi_ti1_tmp == NULL) ... else of ti1*/
476 /* End of cleaning variable ti1 */
477 } /*if (f2py_success) of te1*/
478 /* End of cleaning variable te1 */
479 } /*if (f2py_success) of tau*/
480 /* End of cleaning variable tau */
481 } /*if (f2py_success) of wl*/
482 /* End of cleaning variable wl */
483 /*end of cleanupfrompyobj*/
484 if (capi_buildvalue == NULL) {
485 /*routdebugfailure*/
486 } else {
487 /*routdebugleave*/
488 }
489 CFUNCSMESS("Freeing memory.\n");
490 /*freemem*/
491 #ifdef F2PY_REPORT_ATEXIT
492 f2py_stop_clock();
493 #endif
494 return capi_buildvalue;
495 }
496 /******************************** end of acf2 ********************************/
497
498 /*********************************** spect1 ***********************************/
499 static char doc_f2py_rout_fitacf_acf2_spect1[] = "\
500 spect1 = spect1(omega)\n\nWrapper for ``spect1``.\
501 \n\nParameters\n----------\n"
502 "omega : input float\n"
503 "\nReturns\n-------\n"
504 "spect1 : float";
505 /* extern void F_WRAPPEDFUNC(spect1,SPECT1)(float*,float*); */
506 static PyObject *f2py_rout_fitacf_acf2_spect1(const PyObject *capi_self,
507 PyObject *capi_args,
508 PyObject *capi_keywds,
509 void (*f2py_func)(float*,float*)) {
510 PyObject * volatile capi_buildvalue = NULL;
511 volatile int f2py_success = 1;
512 /*decl*/
513
514 float spect1 = 0;
515 float omega = 0;
516 PyObject *omega_capi = Py_None;
517 static char *capi_kwlist[] = {"omega",NULL};
518
519 /*routdebugenter*/
520 #ifdef F2PY_REPORT_ATEXIT
521 f2py_start_clock();
522 #endif
523 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
524 "O|:fitacf_acf2.spect1",\
525 capi_kwlist,&omega_capi))
526 return NULL;
527 /*frompyobj*/
528 /* Processing variable omega */
529 f2py_success = float_from_pyobj(&omega,omega_capi,"fitacf_acf2.spect1() 1st argument (omega) can't be converted to float");
530 if (f2py_success) {
531 /* Processing variable spect1 */
532 /*end of frompyobj*/
533 #ifdef F2PY_REPORT_ATEXIT
534 f2py_start_call_clock();
535 #endif
536 /*callfortranroutine*/
537 (*f2py_func)(&spect1,&omega);
538 if (PyErr_Occurred())
539 f2py_success = 0;
540 #ifdef F2PY_REPORT_ATEXIT
541 f2py_stop_call_clock();
542 #endif
543 /*end of callfortranroutine*/
544 if (f2py_success) {
545 /*pyobjfrom*/
546 /*end of pyobjfrom*/
547 CFUNCSMESS("Building return value.\n");
548 capi_buildvalue = Py_BuildValue("f",spect1);
549 /*closepyobjfrom*/
550 /*end of closepyobjfrom*/
551 } /*if (f2py_success) after callfortranroutine*/
552 /*cleanupfrompyobj*/
553 /* End of cleaning variable spect1 */
554 } /*if (f2py_success) of omega*/
555 /* End of cleaning variable omega */
556 /*end of cleanupfrompyobj*/
557 if (capi_buildvalue == NULL) {
558 /*routdebugfailure*/
559 } else {
560 /*routdebugleave*/
561 }
562 CFUNCSMESS("Freeing memory.\n");
563 /*freemem*/
564 #ifdef F2PY_REPORT_ATEXIT
565 f2py_stop_clock();
566 #endif
567 return capi_buildvalue;
568 }
569 /******************************* end of spect1 *******************************/
570
571 /*********************************** gaussq ***********************************/
572 static char doc_f2py_rout_fitacf_acf2_gaussq[] = "\
573 gaussq(tau,acf)\n\nWrapper for ``gaussq``.\
574 \n\nParameters\n----------\n"
575 "tau : input float\n"
576 "acf : input float";
577 /* extern void F_FUNC(gaussq,GAUSSQ)(float*,float*); */
578 static PyObject *f2py_rout_fitacf_acf2_gaussq(const PyObject *capi_self,
579 PyObject *capi_args,
580 PyObject *capi_keywds,
581 void (*f2py_func)(float*,float*)) {
582 PyObject * volatile capi_buildvalue = NULL;
583 volatile int f2py_success = 1;
584 /*decl*/
585
586 float tau = 0;
587 PyObject *tau_capi = Py_None;
588 float acf = 0;
589 PyObject *acf_capi = Py_None;
590 static char *capi_kwlist[] = {"tau","acf",NULL};
591
592 /*routdebugenter*/
593 #ifdef F2PY_REPORT_ATEXIT
594 f2py_start_clock();
595 #endif
596 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
597 "OO|:fitacf_acf2.gaussq",\
598 capi_kwlist,&tau_capi,&acf_capi))
599 return NULL;
600 /*frompyobj*/
601 /* Processing variable tau */
602 f2py_success = float_from_pyobj(&tau,tau_capi,"fitacf_acf2.gaussq() 1st argument (tau) can't be converted to float");
603 if (f2py_success) {
604 /* Processing variable acf */
605 f2py_success = float_from_pyobj(&acf,acf_capi,"fitacf_acf2.gaussq() 2nd argument (acf) can't be converted to float");
606 if (f2py_success) {
607 /*end of frompyobj*/
608 #ifdef F2PY_REPORT_ATEXIT
609 f2py_start_call_clock();
610 #endif
611 /*callfortranroutine*/
612 (*f2py_func)(&tau,&acf);
613 if (PyErr_Occurred())
614 f2py_success = 0;
615 #ifdef F2PY_REPORT_ATEXIT
616 f2py_stop_call_clock();
617 #endif
618 /*end of callfortranroutine*/
619 if (f2py_success) {
620 /*pyobjfrom*/
621 /*end of pyobjfrom*/
622 CFUNCSMESS("Building return value.\n");
623 capi_buildvalue = Py_BuildValue("");
624 /*closepyobjfrom*/
625 /*end of closepyobjfrom*/
626 } /*if (f2py_success) after callfortranroutine*/
627 /*cleanupfrompyobj*/
628 } /*if (f2py_success) of acf*/
629 /* End of cleaning variable acf */
630 } /*if (f2py_success) of tau*/
631 /* End of cleaning variable tau */
632 /*end of cleanupfrompyobj*/
633 if (capi_buildvalue == NULL) {
634 /*routdebugfailure*/
635 } else {
636 /*routdebugleave*/
637 }
638 CFUNCSMESS("Freeing memory.\n");
639 /*freemem*/
640 #ifdef F2PY_REPORT_ATEXIT
641 f2py_stop_clock();
642 #endif
643 return capi_buildvalue;
644 }
645 /******************************* end of gaussq *******************************/
646 /*eof body*/
647
648 /******************* See f2py2e/f90mod_rules.py: buildhooks *******************/
649 /*need_f90modhooks*/
650
651 /************** See f2py2e/rules.py: module_rules['modulebody'] **************/
652
653 /******************* See f2py2e/common_rules.py: buildhooks *******************/
654
655 static FortranDataDef f2py_spec_def[] = {
656 {"te",0,{{-1}},NPY_FLOAT},
657 {"ti",1,{{10}},NPY_FLOAT},
658 {"fi",1,{{10}},NPY_FLOAT},
659 {"ven",0,{{-1}},NPY_FLOAT},
660 {"vin",1,{{10}},NPY_FLOAT},
661 {"alpha",0,{{-1}},NPY_FLOAT},
662 {"dens",0,{{-1}},NPY_FLOAT},
663 {"bfld",0,{{-1}},NPY_FLOAT},
664 {"nion",0,{{-1}},NPY_INT},
665 {"wi",1,{{10}},NPY_INT},
666 {"ak",0,{{-1}},NPY_FLOAT},
667 {NULL}
668 };
669 static void f2py_setup_spec(char *te,char *ti,char *fi,char *ven,char *vin,char *alpha,char *dens,char *bfld,char *nion,char *wi,char *ak) {
670 int i_f2py=0;
671 f2py_spec_def[i_f2py++].data = te;
672 f2py_spec_def[i_f2py++].data = ti;
673 f2py_spec_def[i_f2py++].data = fi;
674 f2py_spec_def[i_f2py++].data = ven;
675 f2py_spec_def[i_f2py++].data = vin;
676 f2py_spec_def[i_f2py++].data = alpha;
677 f2py_spec_def[i_f2py++].data = dens;
678 f2py_spec_def[i_f2py++].data = bfld;
679 f2py_spec_def[i_f2py++].data = nion;
680 f2py_spec_def[i_f2py++].data = wi;
681 f2py_spec_def[i_f2py++].data = ak;
682 }
683 extern void F_FUNC(f2pyinitspec,F2PYINITSPEC)(void(*)(char*,char*,char*,char*,char*,char*,char*,char*,char*,char*,char*));
684 static void f2py_init_spec(void) {
685 F_FUNC(f2pyinitspec,F2PYINITSPEC)(f2py_setup_spec);
686 }
687
688 static FortranDataDef f2py_mode_def[] = {
689 {"imode",0,{{-1}},NPY_INT},
690 {NULL}
691 };
692 static void f2py_setup_mode(char *imode) {
693 int i_f2py=0;
694 f2py_mode_def[i_f2py++].data = imode;
695 }
696 extern void F_FUNC(f2pyinitmode,F2PYINITMODE)(void(*)(char*));
697 static void f2py_init_mode(void) {
698 F_FUNC(f2pyinitmode,F2PYINITMODE)(f2py_setup_mode);
699 }
700
701 /*need_commonhooks*/
702
703 /**************************** See f2py2e/rules.py ****************************/
704
705 static FortranDataDef f2py_routine_defs[] = {
706 {"acf2",-1,{{-1}},0,(char *)F_FUNC(acf2,ACF2),(f2py_init_func)f2py_rout_fitacf_acf2_acf2,doc_f2py_rout_fitacf_acf2_acf2},
707 {"spect1",-1,{{-1}},0,(char *)F_WRAPPEDFUNC(spect1,SPECT1),(f2py_init_func)f2py_rout_fitacf_acf2_spect1,doc_f2py_rout_fitacf_acf2_spect1},
708 {"gaussq",-1,{{-1}},0,(char *)F_FUNC(gaussq,GAUSSQ),(f2py_init_func)f2py_rout_fitacf_acf2_gaussq,doc_f2py_rout_fitacf_acf2_gaussq},
709
710 /*eof routine_defs*/
711 {NULL}
712 };
713
714 static PyMethodDef f2py_module_methods[] = {
715
716 {NULL,NULL}
717 };
718
719 static struct PyModuleDef moduledef = {
720 PyModuleDef_HEAD_INIT,
721 "fitacf_acf2",
722 NULL,
723 -1,
724 f2py_module_methods,
725 NULL,
726 NULL,
727 NULL,
728 NULL
729 };
730
731 PyMODINIT_FUNC PyInit_fitacf_acf2(void) {
732 int i;
733 PyObject *m,*d, *s, *tmp;
734 m = fitacf_acf2_module = PyModule_Create(&moduledef);
735 Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
736 import_array();
737 if (PyErr_Occurred())
738 {PyErr_SetString(PyExc_ImportError, "can't initialize module fitacf_acf2 (failed to import numpy)"); return m;}
739 d = PyModule_GetDict(m);
740 s = PyString_FromString("$Revision: $");
741 PyDict_SetItemString(d, "__version__", s);
742 Py_DECREF(s);
743 s = PyUnicode_FromString(
744 "This module 'fitacf_acf2' is auto-generated with f2py (version:2).\nFunctions:\n"
745 " acf = acf2(wl,tau,te1,ti1,fi1,ven1,vin1,wi1,alpha1,dens1,bfld1,acf,nion1=len(ti1))\n"
746 " spect1 = spect1(omega)\n"
747 " gaussq(tau,acf)\n"
748 "COMMON blocks:\n"" /spec/ te,ti(10),fi(10),ven,vin(10),alpha,dens,bfld,nion,wi(10),ak\n"" /mode/ imode\n"".");
749 PyDict_SetItemString(d, "__doc__", s);
750 Py_DECREF(s);
751 fitacf_acf2_error = PyErr_NewException ("fitacf_acf2.error", NULL, NULL);
752 /*
753 * Store the error object inside the dict, so that it could get deallocated.
754 * (in practice, this is a module, so it likely will not and cannot.)
755 */
756 PyDict_SetItemString(d, "_fitacf_acf2_error", fitacf_acf2_error);
757 Py_DECREF(fitacf_acf2_error);
758 for(i=0;f2py_routine_defs[i].name!=NULL;i++) {
759 tmp = PyFortranObject_NewAsAttr(&f2py_routine_defs[i]);
760 PyDict_SetItemString(d, f2py_routine_defs[i].name, tmp);
761 Py_DECREF(tmp);
762 }
763
764
765 {
766 extern float F_FUNC(spect1,SPECT1)(void);
767 PyObject* o = PyDict_GetItemString(d,"spect1");
768 tmp = F2PyCapsule_FromVoidPtr((void*)F_FUNC(spect1,SPECT1),NULL);
769 PyObject_SetAttrString(o,"_cpointer", tmp);
770 Py_DECREF(tmp);
771 s = PyUnicode_FromString("spect1");
772 PyObject_SetAttrString(o,"__name__", s);
773 Py_DECREF(s);
774 }
775
776
777 /*eof initf2pywraphooks*/
778 /*eof initf90modhooks*/
779
780 tmp = PyFortranObject_New(f2py_spec_def,f2py_init_spec);
781 F2PyDict_SetItemString(d, "spec", tmp);
782 Py_DECREF(tmp);
783 tmp = PyFortranObject_New(f2py_mode_def,f2py_init_mode);
784 F2PyDict_SetItemString(d, "mode", tmp);
785 Py_DECREF(tmp);
786 /*eof initcommonhooks*/
787
788
789 #ifdef F2PY_REPORT_ATEXIT
790 if (! PyErr_Occurred())
791 on_exit(f2py_report_on_exit,(void*)"fitacf_acf2");
792 #endif
793 return m;
794 }
795 #ifdef __cplusplus
796 }
797 #endif
@@ -0,0 +1,63
1 C -*- fortran -*-
2 C This file is autogenerated with f2py (version:2)
3 C It contains Fortran 77 wrappers to fortran functions.
4
5 subroutine f2pywrapspect1 (spect1f2pywrap, omega)
6 external spect1
7 real omega
8 real spect1f2pywrap, spect1
9 spect1f2pywrap = spect1(omega)
10 end
11
12
13 subroutine f2pywrapspmpar (spmparf2pywrap, i)
14 external spmpar
15 integer i
16 real spmparf2pywrap, spmpar
17 spmparf2pywrap = spmpar(i)
18 end
19
20
21 subroutine f2pyinitspec(setupfunc)
22 external setupfunc
23 real te
24 real ti(10)
25 real fi(10)
26 real ven
27 real vin(10)
28 real alpha
29 real dens
30 real bfld
31 integer nion
32 integer wi(10)
33 real ak
34 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
35 call setupfunc(te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak)
36 end
37
38 subroutine f2pyinitmode(setupfunc)
39 external setupfunc
40 integer imode
41 common /mode/ imode
42 call setupfunc(imode)
43 end
44
45 subroutine f2pyinitfitter(setupfunc)
46 external setupfunc
47 real tau(100)
48 real rho(100)
49 real sigma2(100)
50 real params(10)
51 integer ifit(10)
52 common /fitter/ tau,rho,sigma2,params,ifit
53 call setupfunc(tau,rho,sigma2,params,ifit)
54 end
55
56 subroutine f2pyinittrans(setupfunc)
57 external setupfunc
58 real ev(10000)
59 common /trans/ ev
60 call setupfunc(ev)
61 end
62
63
This diff has been collapsed as it changes many lines, (1986 lines changed) Show them Hide them
@@ -0,0 +1,1986
1 /* File: fitacf_fit_shortmodule.c
2 * This file is auto-generated with f2py (version:2).
3 * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition,
4 * written by Pearu Peterson <pearu@cens.ioc.ee>.
5 * Generation date: Wed Jan 8 13:23:37 2025
6 * Do not edit this file directly unless you know what you are doing!!!
7 */
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 /*********************** See f2py2e/cfuncs.py: includes ***********************/
14 #include "Python.h"
15 #include <stdarg.h>
16 #include "fortranobject.h"
17 #include <string.h>
18 #include <setjmp.h>
19 #include <math.h>
20
21 /**************** See f2py2e/rules.py: mod_rules['modulebody'] ****************/
22 static PyObject *fitacf_fit_short_error;
23 static PyObject *fitacf_fit_short_module;
24
25 /*********************** See f2py2e/cfuncs.py: typedefs ***********************/
26 typedef signed char signed_char;
27 typedef struct {float r,i;} complex_float;
28
29 /****************** See f2py2e/cfuncs.py: typedefs_generated ******************/
30 typedef void(*cb_fcn_in_lmdif__user__routines_typedef)(int *,int *,float *,float *,int *);
31
32 /********************** See f2py2e/cfuncs.py: cppmacros **********************/
33 #define PRINTPYOBJERR(obj)\
34 fprintf(stderr,"fitacf_fit_short.error is related to ");\
35 PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\
36 fprintf(stderr,"\n");
37
38 \
39 #define FAILNULL(p) do { \
40 if ((p) == NULL) { \
41 PyErr_SetString(PyExc_MemoryError, "NULL pointer found"); \
42 goto capi_fail; \
43 } \
44 } while (0)
45
46 #define MEMCOPY(to,from,n)\
47 do { FAILNULL(to); FAILNULL(from); (void)memcpy(to,from,n); } while (0)
48
49 #ifdef DEBUGCFUNCS
50 #define CFUNCSMESS(mess) fprintf(stderr,"debug-capi:"mess);
51 #define CFUNCSMESSPY(mess,obj) CFUNCSMESS(mess) \
52 PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\
53 fprintf(stderr,"\n");
54 #else
55 #define CFUNCSMESS(mess)
56 #define CFUNCSMESSPY(mess,obj)
57 #endif
58
59 #define pyobj_from_int1(v) (PyInt_FromLong(v))
60 #if defined(PREPEND_FORTRAN)
61 #if defined(NO_APPEND_FORTRAN)
62 #if defined(UPPERCASE_FORTRAN)
63 #define F_FUNC(f,F) _##F
64 #else
65 #define F_FUNC(f,F) _##f
66 #endif
67 #else
68 #if defined(UPPERCASE_FORTRAN)
69 #define F_FUNC(f,F) _##F##_
70 #else
71 #define F_FUNC(f,F) _##f##_
72 #endif
73 #endif
74 #else
75 #if defined(NO_APPEND_FORTRAN)
76 #if defined(UPPERCASE_FORTRAN)
77 #define F_FUNC(f,F) F
78 #else
79 #define F_FUNC(f,F) f
80 #endif
81 #else
82 #if defined(UPPERCASE_FORTRAN)
83 #define F_FUNC(f,F) F##_
84 #else
85 #define F_FUNC(f,F) f##_
86 #endif
87 #endif
88 #endif
89 #if defined(UNDERSCORE_G77)
90 #define F_FUNC_US(f,F) F_FUNC(f##_,F##_)
91 #else
92 #define F_FUNC_US(f,F) F_FUNC(f,F)
93 #endif
94
95 #define rank(var) var ## _Rank
96 #define shape(var,dim) var ## _Dims[dim]
97 #define old_rank(var) (PyArray_NDIM((PyArrayObject *)(capi_ ## var ## _tmp)))
98 #define old_shape(var,dim) PyArray_DIM(((PyArrayObject *)(capi_ ## var ## _tmp)),dim)
99 #define fshape(var,dim) shape(var,rank(var)-dim-1)
100 #define len(var) shape(var,0)
101 #define flen(var) fshape(var,0)
102 #define old_size(var) PyArray_SIZE((PyArrayObject *)(capi_ ## var ## _tmp))
103 /* #define index(i) capi_i ## i */
104 #define slen(var) capi_ ## var ## _len
105 #define size(var, ...) f2py_size((PyArrayObject *)(capi_ ## var ## _tmp), ## __VA_ARGS__, -1)
106
107 #define CHECKSCALAR(check,tcheck,name,show,var)\
108 if (!(check)) {\
109 char errstring[256];\
110 sprintf(errstring, "%s: "show, "("tcheck") failed for "name, var);\
111 PyErr_SetString(fitacf_fit_short_error,errstring);\
112 /*goto capi_fail;*/\
113 } else
114 #ifndef max
115 #define max(a,b) ((a > b) ? (a) : (b))
116 #endif
117 #ifndef min
118 #define min(a,b) ((a < b) ? (a) : (b))
119 #endif
120 #ifndef MAX
121 #define MAX(a,b) ((a > b) ? (a) : (b))
122 #endif
123 #ifndef MIN
124 #define MIN(a,b) ((a < b) ? (a) : (b))
125 #endif
126
127 #if defined(PREPEND_FORTRAN)
128 #if defined(NO_APPEND_FORTRAN)
129 #if defined(UPPERCASE_FORTRAN)
130 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F
131 #else
132 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f
133 #endif
134 #else
135 #if defined(UPPERCASE_FORTRAN)
136 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F##_
137 #else
138 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f##_
139 #endif
140 #endif
141 #else
142 #if defined(NO_APPEND_FORTRAN)
143 #if defined(UPPERCASE_FORTRAN)
144 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F
145 #else
146 #define F_WRAPPEDFUNC(f,F) f2pywrap##f
147 #endif
148 #else
149 #if defined(UPPERCASE_FORTRAN)
150 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F##_
151 #else
152 #define F_WRAPPEDFUNC(f,F) f2pywrap##f##_
153 #endif
154 #endif
155 #endif
156 #if defined(UNDERSCORE_G77)
157 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f##_,F##_)
158 #else
159 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f,F)
160 #endif
161
162 #define SWAP(a,b,t) {\
163 t *c;\
164 c = a;\
165 a = b;\
166 b = c;}
167
168
169 /************************ See f2py2e/cfuncs.py: cfuncs ************************/
170 static int double_from_pyobj(double* v,PyObject *obj,const char *errmess) {
171 PyObject* tmp = NULL;
172 if (PyFloat_Check(obj)) {
173 #ifdef __sgi
174 *v = PyFloat_AsDouble(obj);
175 #else
176 *v = PyFloat_AS_DOUBLE(obj);
177 #endif
178 return 1;
179 }
180 tmp = PyNumber_Float(obj);
181 if (tmp) {
182 #ifdef __sgi
183 *v = PyFloat_AsDouble(tmp);
184 #else
185 *v = PyFloat_AS_DOUBLE(tmp);
186 #endif
187 Py_DECREF(tmp);
188 return 1;
189 }
190 if (PyComplex_Check(obj))
191 tmp = PyObject_GetAttrString(obj,"real");
192 else if (PyString_Check(obj) || PyUnicode_Check(obj))
193 /*pass*/;
194 else if (PySequence_Check(obj))
195 tmp = PySequence_GetItem(obj,0);
196 if (tmp) {
197 PyErr_Clear();
198 if (double_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
199 Py_DECREF(tmp);
200 }
201 {
202 PyObject* err = PyErr_Occurred();
203 if (err==NULL) err = fitacf_fit_short_error;
204 PyErr_SetString(err,errmess);
205 }
206 return 0;
207 }
208
209 static int f2py_size(PyArrayObject* var, ...)
210 {
211 npy_int sz = 0;
212 npy_int dim;
213 npy_int rank;
214 va_list argp;
215 va_start(argp, var);
216 dim = va_arg(argp, npy_int);
217 if (dim==-1)
218 {
219 sz = PyArray_SIZE(var);
220 }
221 else
222 {
223 rank = PyArray_NDIM(var);
224 if (dim>=1 && dim<=rank)
225 sz = PyArray_DIM(var, dim-1);
226 else
227 fprintf(stderr, "f2py_size: 2nd argument value=%d fails to satisfy 1<=value<=%d. Result will be 0.\n", dim, rank);
228 }
229 va_end(argp);
230 return sz;
231 }
232
233 static int float_from_pyobj(float* v,PyObject *obj,const char *errmess) {
234 double d=0.0;
235 if (double_from_pyobj(&d,obj,errmess)) {
236 *v = (float)d;
237 return 1;
238 }
239 return 0;
240 }
241
242 static int int_from_pyobj(int* v,PyObject *obj,const char *errmess) {
243 PyObject* tmp = NULL;
244 if (PyInt_Check(obj)) {
245 *v = (int)PyInt_AS_LONG(obj);
246 return 1;
247 }
248 tmp = PyNumber_Int(obj);
249 if (tmp) {
250 *v = PyInt_AS_LONG(tmp);
251 Py_DECREF(tmp);
252 return 1;
253 }
254 if (PyComplex_Check(obj))
255 tmp = PyObject_GetAttrString(obj,"real");
256 else if (PyString_Check(obj) || PyUnicode_Check(obj))
257 /*pass*/;
258 else if (PySequence_Check(obj))
259 tmp = PySequence_GetItem(obj,0);
260 if (tmp) {
261 PyErr_Clear();
262 if (int_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
263 Py_DECREF(tmp);
264 }
265 {
266 PyObject* err = PyErr_Occurred();
267 if (err==NULL) err = fitacf_fit_short_error;
268 PyErr_SetString(err,errmess);
269 }
270 return 0;
271 }
272
273 static int create_cb_arglist(PyObject* fun,PyTupleObject* xa,const int maxnofargs,const int nofoptargs,int *nofargs,PyTupleObject **args,const char *errmess) {
274 PyObject *tmp = NULL;
275 PyObject *tmp_fun = NULL;
276 int tot,opt,ext,siz,i,di=0;
277 CFUNCSMESS("create_cb_arglist\n");
278 tot=opt=ext=siz=0;
279 /* Get the total number of arguments */
280 if (PyFunction_Check(fun)) {
281 tmp_fun = fun;
282 Py_INCREF(tmp_fun);
283 }
284 else {
285 di = 1;
286 if (PyObject_HasAttrString(fun,"im_func")) {
287 tmp_fun = PyObject_GetAttrString(fun,"im_func");
288 }
289 else if (PyObject_HasAttrString(fun,"__call__")) {
290 tmp = PyObject_GetAttrString(fun,"__call__");
291 if (PyObject_HasAttrString(tmp,"im_func"))
292 tmp_fun = PyObject_GetAttrString(tmp,"im_func");
293 else {
294 tmp_fun = fun; /* built-in function */
295 Py_INCREF(tmp_fun);
296 tot = maxnofargs;
297 if (PyCFunction_Check(fun)) {
298 /* In case the function has a co_argcount (like on PyPy) */
299 di = 0;
300 }
301 if (xa != NULL)
302 tot += PyTuple_Size((PyObject *)xa);
303 }
304 Py_XDECREF(tmp);
305 }
306 else if (PyFortran_Check(fun) || PyFortran_Check1(fun)) {
307 tot = maxnofargs;
308 if (xa != NULL)
309 tot += PyTuple_Size((PyObject *)xa);
310 tmp_fun = fun;
311 Py_INCREF(tmp_fun);
312 }
313 else if (F2PyCapsule_Check(fun)) {
314 tot = maxnofargs;
315 if (xa != NULL)
316 ext = PyTuple_Size((PyObject *)xa);
317 if(ext>0) {
318 fprintf(stderr,"extra arguments tuple cannot be used with CObject call-back\n");
319 goto capi_fail;
320 }
321 tmp_fun = fun;
322 Py_INCREF(tmp_fun);
323 }
324 }
325 if (tmp_fun==NULL) {
326 fprintf(stderr,"Call-back argument must be function|instance|instance.__call__|f2py-function but got %s.\n",(fun==NULL?"NULL":Py_TYPE(fun)->tp_name));
327 goto capi_fail;
328 }
329 if (PyObject_HasAttrString(tmp_fun,"__code__")) {
330 if (PyObject_HasAttrString(tmp = PyObject_GetAttrString(tmp_fun,"__code__"),"co_argcount")) {
331 PyObject *tmp_argcount = PyObject_GetAttrString(tmp,"co_argcount");
332 Py_DECREF(tmp);
333 if (tmp_argcount == NULL) {
334 goto capi_fail;
335 }
336 tot = PyInt_AsLong(tmp_argcount) - di;
337 Py_DECREF(tmp_argcount);
338 }
339 }
340 /* Get the number of optional arguments */
341 if (PyObject_HasAttrString(tmp_fun,"__defaults__")) {
342 if (PyTuple_Check(tmp = PyObject_GetAttrString(tmp_fun,"__defaults__")))
343 opt = PyTuple_Size(tmp);
344 Py_XDECREF(tmp);
345 }
346 /* Get the number of extra arguments */
347 if (xa != NULL)
348 ext = PyTuple_Size((PyObject *)xa);
349 /* Calculate the size of call-backs argument list */
350 siz = MIN(maxnofargs+ext,tot);
351 *nofargs = MAX(0,siz-ext);
352 #ifdef DEBUGCFUNCS
353 fprintf(stderr,"debug-capi:create_cb_arglist:maxnofargs(-nofoptargs),tot,opt,ext,siz,nofargs=%d(-%d),%d,%d,%d,%d,%d\n",maxnofargs,nofoptargs,tot,opt,ext,siz,*nofargs);
354 #endif
355 if (siz<tot-opt) {
356 fprintf(stderr,"create_cb_arglist: Failed to build argument list (siz) with enough arguments (tot-opt) required by user-supplied function (siz,tot,opt=%d,%d,%d).\n",siz,tot,opt);
357 goto capi_fail;
358 }
359 /* Initialize argument list */
360 *args = (PyTupleObject *)PyTuple_New(siz);
361 for (i=0;i<*nofargs;i++) {
362 Py_INCREF(Py_None);
363 PyTuple_SET_ITEM((PyObject *)(*args),i,Py_None);
364 }
365 if (xa != NULL)
366 for (i=(*nofargs);i<siz;i++) {
367 tmp = PyTuple_GetItem((PyObject *)xa,i-(*nofargs));
368 Py_INCREF(tmp);
369 PyTuple_SET_ITEM(*args,i,tmp);
370 }
371 CFUNCSMESS("create_cb_arglist-end\n");
372 Py_DECREF(tmp_fun);
373 return 1;
374 capi_fail:
375 if ((PyErr_Occurred())==NULL)
376 PyErr_SetString(fitacf_fit_short_error,errmess);
377 Py_XDECREF(tmp_fun);
378 return 0;
379 }
380
381
382 /********************* See f2py2e/cfuncs.py: userincludes *********************/
383 /*need_userincludes*/
384
385 /********************* See f2py2e/capi_rules.py: usercode *********************/
386
387
388 /* See f2py2e/rules.py */
389 extern void F_FUNC(fit,FIT)(float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,int*,int*,int*);
390 extern void F_WRAPPEDFUNC(spect1,SPECT1)(float*,float*);
391 extern void F_FUNC(gaussq,GAUSSQ)(float*,float*);
392 extern void F_FUNC(lmdif1,LMDIF1)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,int*,int*,float*,int*);
393 extern void F_FUNC(lmdif,LMDIF)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,float*,float*,int*,float*,float*,int*,float*,int*,int*,int*,float*,int*,int*,float*,float*,float*,float*,float*);
394 extern void F_WRAPPEDFUNC(spmpar,SPMPAR)(float*,int*);
395 /*eof externroutines*/
396
397 /******************** See f2py2e/capi_rules.py: usercode1 ********************/
398
399
400 /******************* See f2py2e/cb_rules.py: buildcallback *******************/
401
402 /********************** cb_fcn_in_lmdif__user__routines **********************/
403 PyObject *cb_fcn_in_lmdif__user__routines_capi = NULL;/*was Py_None*/
404 PyTupleObject *cb_fcn_in_lmdif__user__routines_args_capi = NULL;
405 int cb_fcn_in_lmdif__user__routines_nofargs = 0;
406 jmp_buf cb_fcn_in_lmdif__user__routines_jmpbuf;
407 /*typedef void(*cb_fcn_in_lmdif__user__routines_typedef)(int *,int *,float *,float *,int *);*/
408 static void cb_fcn_in_lmdif__user__routines (int *m_cb_capi,int *n_cb_capi,float *x,float *fvec,int *iflag_cb_capi) {
409 PyTupleObject *capi_arglist = cb_fcn_in_lmdif__user__routines_args_capi;
410 PyObject *capi_return = NULL;
411 PyObject *capi_tmp = NULL;
412 PyObject *capi_arglist_list = NULL;
413 int capi_j,capi_i = 0;
414 int capi_longjmp_ok = 1;
415 /*decl*/
416 int m=(*m_cb_capi);
417 int n=(*n_cb_capi);
418 int iflag=(*iflag_cb_capi);
419 npy_intp x_Dims[1] = {-1};
420 npy_intp fvec_Dims[1] = {-1};
421 #ifdef F2PY_REPORT_ATEXIT
422 f2py_cb_start_clock();
423 #endif
424 CFUNCSMESS("cb:Call-back function cb_fcn_in_lmdif__user__routines (maxnofargs=5(-2))\n");
425 CFUNCSMESSPY("cb:cb_fcn_in_lmdif__user__routines_capi=",cb_fcn_in_lmdif__user__routines_capi);
426 if (cb_fcn_in_lmdif__user__routines_capi==NULL) {
427 capi_longjmp_ok = 0;
428 cb_fcn_in_lmdif__user__routines_capi = PyObject_GetAttrString(fitacf_fit_short_module,"fcn");
429 }
430 if (cb_fcn_in_lmdif__user__routines_capi==NULL) {
431 PyErr_SetString(fitacf_fit_short_error,"cb: Callback fcn not defined (as an argument or module fitacf_fit_short attribute).\n");
432 goto capi_fail;
433 }
434 if (F2PyCapsule_Check(cb_fcn_in_lmdif__user__routines_capi)) {
435 cb_fcn_in_lmdif__user__routines_typedef cb_fcn_in_lmdif__user__routines_cptr;
436 cb_fcn_in_lmdif__user__routines_cptr = F2PyCapsule_AsVoidPtr(cb_fcn_in_lmdif__user__routines_capi);
437 (*cb_fcn_in_lmdif__user__routines_cptr)(m_cb_capi,n_cb_capi,x,fvec,iflag_cb_capi);
438 return;
439 }
440 if (capi_arglist==NULL) {
441 capi_longjmp_ok = 0;
442 capi_tmp = PyObject_GetAttrString(fitacf_fit_short_module,"fcn_extra_args");
443 if (capi_tmp) {
444 capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp);
445 if (capi_arglist==NULL) {
446 PyErr_SetString(fitacf_fit_short_error,"Failed to convert fitacf_fit_short.fcn_extra_args to tuple.\n");
447 goto capi_fail;
448 }
449 } else {
450 PyErr_Clear();
451 capi_arglist = (PyTupleObject *)Py_BuildValue("()");
452 }
453 }
454 if (capi_arglist == NULL) {
455 PyErr_SetString(fitacf_fit_short_error,"Callback fcn argument list is not set.\n");
456 goto capi_fail;
457 }
458 /*setdims*/
459 x_Dims[0]=n;
460 fvec_Dims[0]=m;
461 #ifdef PYPY_VERSION
462 #define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value)
463 capi_arglist_list = PySequence_List(capi_arglist);
464 if (capi_arglist_list == NULL) goto capi_fail;
465 #else
466 #define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value)
467 #endif
468 /*pyobjfrom*/
469 if (cb_fcn_in_lmdif__user__routines_nofargs>capi_i) {
470 int itemsize_ = NPY_FLOAT == NPY_STRING ? 1 : 0;
471 /*XXX: Hmm, what will destroy this array??? */
472 PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,1,x_Dims,NPY_FLOAT,NULL,(char*)x,itemsize_,NPY_ARRAY_FARRAY,NULL);
473
474
475 if (tmp_arr==NULL)
476 goto capi_fail;
477 if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr))
478 goto capi_fail;
479 }
480 if (cb_fcn_in_lmdif__user__routines_nofargs>capi_i) {
481 int itemsize_ = NPY_FLOAT == NPY_STRING ? 1 : 0;
482 /*XXX: Hmm, what will destroy this array??? */
483 PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,1,fvec_Dims,NPY_FLOAT,NULL,(char*)fvec,itemsize_,NPY_ARRAY_FARRAY,NULL);
484
485
486 if (tmp_arr==NULL)
487 goto capi_fail;
488 if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr))
489 goto capi_fail;
490 }
491 if (cb_fcn_in_lmdif__user__routines_nofargs>capi_i)
492 if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_int1(iflag)))
493 goto capi_fail;
494 if (cb_fcn_in_lmdif__user__routines_nofargs>capi_i)
495 if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_int1(m)))
496 goto capi_fail;
497 if (cb_fcn_in_lmdif__user__routines_nofargs>capi_i)
498 if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_int1(n)))
499 goto capi_fail;
500 #undef CAPI_ARGLIST_SETITEM
501 #ifdef PYPY_VERSION
502 CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list);
503 #else
504 CFUNCSMESSPY("cb:capi_arglist=",capi_arglist);
505 #endif
506 CFUNCSMESS("cb:Call-back calling Python function fcn.\n");
507 #ifdef F2PY_REPORT_ATEXIT
508 f2py_cb_start_call_clock();
509 #endif
510 #ifdef PYPY_VERSION
511 capi_return = PyObject_CallObject(cb_fcn_in_lmdif__user__routines_capi,(PyObject *)capi_arglist_list);
512 Py_DECREF(capi_arglist_list);
513 capi_arglist_list = NULL;
514 #else
515 capi_return = PyObject_CallObject(cb_fcn_in_lmdif__user__routines_capi,(PyObject *)capi_arglist);
516 #endif
517 #ifdef F2PY_REPORT_ATEXIT
518 f2py_cb_stop_call_clock();
519 #endif
520 CFUNCSMESSPY("cb:capi_return=",capi_return);
521 if (capi_return == NULL) {
522 fprintf(stderr,"capi_return is NULL\n");
523 goto capi_fail;
524 }
525 if (capi_return == Py_None) {
526 Py_DECREF(capi_return);
527 capi_return = Py_BuildValue("()");
528 }
529 else if (!PyTuple_Check(capi_return)) {
530 capi_return = Py_BuildValue("(N)",capi_return);
531 }
532 capi_j = PyTuple_Size(capi_return);
533 capi_i = 0;
534 /*frompyobj*/
535 CFUNCSMESS("cb:cb_fcn_in_lmdif__user__routines:successful\n");
536 Py_DECREF(capi_return);
537 #ifdef F2PY_REPORT_ATEXIT
538 f2py_cb_stop_clock();
539 #endif
540 goto capi_return_pt;
541 capi_fail:
542 fprintf(stderr,"Call-back cb_fcn_in_lmdif__user__routines failed.\n");
543 Py_XDECREF(capi_return);
544 Py_XDECREF(capi_arglist_list);
545 if (capi_longjmp_ok)
546 longjmp(cb_fcn_in_lmdif__user__routines_jmpbuf,-1);
547 capi_return_pt:
548 ;
549 return;
550 }
551 /******************* end of cb_fcn_in_lmdif__user__routines *******************/
552
553
554 /*********************** See f2py2e/rules.py: buildapi ***********************/
555
556 /************************************ fit ************************************/
557 static char doc_f2py_rout_fitacf_fit_short_fit[] = "\
558 cinv,sigma2p,paramp,ebp,ist = fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,bfldp,alphap,densp,alt,time,ifitp,ist,[nl])\n\nWrapper for ``fit``.\
559 \n\nParameters\n----------\n"
560 "wl : input float\n"
561 "taup : input rank-1 array('f') with bounds (nl)\n"
562 "rhop : input rank-1 array('f') with bounds (nl)\n"
563 "covar : input rank-2 array('f') with bounds (nl,nl)\n"
564 "cinv : input rank-2 array('f') with bounds (nl,nl)\n"
565 "sigma2p : input rank-1 array('f') with bounds (nl)\n"
566 "paramp : input rank-1 array('f') with bounds (10)\n"
567 "bfldp : input float\n"
568 "alphap : input float\n"
569 "densp : input float\n"
570 "alt : input float\n"
571 "time : input float\n"
572 "ifitp : input rank-1 array('i') with bounds (10)\n"
573 "ist : input int\n"
574 "\nOther Parameters\n----------------\n"
575 "nl : input int, optional\n Default: len(taup)\n"
576 "\nReturns\n-------\n"
577 "cinv : rank-2 array('f') with bounds (nl,nl)\n"
578 "sigma2p : rank-1 array('f') with bounds (nl)\n"
579 "paramp : rank-1 array('f') with bounds (10)\n"
580 "ebp : rank-1 array('f') with bounds (10)\n"
581 "ist : int";
582 /* extern void F_FUNC(fit,FIT)(float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,int*,int*,int*); */
583 static PyObject *f2py_rout_fitacf_fit_short_fit(const PyObject *capi_self,
584 PyObject *capi_args,
585 PyObject *capi_keywds,
586 void (*f2py_func)(float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,float*,int*,int*,int*)) {
587 PyObject * volatile capi_buildvalue = NULL;
588 volatile int f2py_success = 1;
589 /*decl*/
590
591 float wl = 0;
592 PyObject *wl_capi = Py_None;
593 float *taup = NULL;
594 npy_intp taup_Dims[1] = {-1};
595 const int taup_Rank = 1;
596 PyArrayObject *capi_taup_tmp = NULL;
597 int capi_taup_intent = 0;
598 PyObject *taup_capi = Py_None;
599 float *rhop = NULL;
600 npy_intp rhop_Dims[1] = {-1};
601 const int rhop_Rank = 1;
602 PyArrayObject *capi_rhop_tmp = NULL;
603 int capi_rhop_intent = 0;
604 PyObject *rhop_capi = Py_None;
605 float *covar = NULL;
606 npy_intp covar_Dims[2] = {-1, -1};
607 const int covar_Rank = 2;
608 PyArrayObject *capi_covar_tmp = NULL;
609 int capi_covar_intent = 0;
610 PyObject *covar_capi = Py_None;
611 float *cinv = NULL;
612 npy_intp cinv_Dims[2] = {-1, -1};
613 const int cinv_Rank = 2;
614 PyArrayObject *capi_cinv_tmp = NULL;
615 int capi_cinv_intent = 0;
616 PyObject *cinv_capi = Py_None;
617 float *sigma2p = NULL;
618 npy_intp sigma2p_Dims[1] = {-1};
619 const int sigma2p_Rank = 1;
620 PyArrayObject *capi_sigma2p_tmp = NULL;
621 int capi_sigma2p_intent = 0;
622 PyObject *sigma2p_capi = Py_None;
623 float *paramp = NULL;
624 npy_intp paramp_Dims[1] = {-1};
625 const int paramp_Rank = 1;
626 PyArrayObject *capi_paramp_tmp = NULL;
627 int capi_paramp_intent = 0;
628 PyObject *paramp_capi = Py_None;
629 float *ebp = NULL;
630 npy_intp ebp_Dims[1] = {-1};
631 const int ebp_Rank = 1;
632 PyArrayObject *capi_ebp_tmp = NULL;
633 int capi_ebp_intent = 0;
634 float bfldp = 0;
635 PyObject *bfldp_capi = Py_None;
636 float alphap = 0;
637 PyObject *alphap_capi = Py_None;
638 float densp = 0;
639 PyObject *densp_capi = Py_None;
640 float alt = 0;
641 PyObject *alt_capi = Py_None;
642 float time = 0;
643 PyObject *time_capi = Py_None;
644 int *ifitp = NULL;
645 npy_intp ifitp_Dims[1] = {-1};
646 const int ifitp_Rank = 1;
647 PyArrayObject *capi_ifitp_tmp = NULL;
648 int capi_ifitp_intent = 0;
649 PyObject *ifitp_capi = Py_None;
650 int ist = 0;
651 PyObject *ist_capi = Py_None;
652 int nl = 0;
653 PyObject *nl_capi = Py_None;
654 static char *capi_kwlist[] = {"wl","taup","rhop","covar","cinv","sigma2p","paramp","bfldp","alphap","densp","alt","time","ifitp","ist","nl",NULL};
655
656 /*routdebugenter*/
657 #ifdef F2PY_REPORT_ATEXIT
658 f2py_start_clock();
659 #endif
660 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
661 "OOOOOOOOOOOOOO|O:fitacf_fit_short.fit",\
662 capi_kwlist,&wl_capi,&taup_capi,&rhop_capi,&covar_capi,&cinv_capi,&sigma2p_capi,&paramp_capi,&bfldp_capi,&alphap_capi,&densp_capi,&alt_capi,&time_capi,&ifitp_capi,&ist_capi,&nl_capi))
663 return NULL;
664 /*frompyobj*/
665 /* Processing variable wl */
666 f2py_success = float_from_pyobj(&wl,wl_capi,"fitacf_fit_short.fit() 1st argument (wl) can't be converted to float");
667 if (f2py_success) {
668 /* Processing variable taup */
669 ;
670 capi_taup_intent |= F2PY_INTENT_IN;
671 capi_taup_tmp = array_from_pyobj(NPY_FLOAT,taup_Dims,taup_Rank,capi_taup_intent,taup_capi);
672 if (capi_taup_tmp == NULL) {
673 PyObject *exc, *val, *tb;
674 PyErr_Fetch(&exc, &val, &tb);
675 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 2nd argument `taup' of fitacf_fit_short.fit to C/Fortran array" );
676 npy_PyErr_ChainExceptionsCause(exc, val, tb);
677 } else {
678 taup = (float *)(PyArray_DATA(capi_taup_tmp));
679
680 /* Processing variable paramp */
681 paramp_Dims[0]=10;
682 capi_paramp_intent |= F2PY_INTENT_IN|F2PY_INTENT_OUT;
683 capi_paramp_tmp = array_from_pyobj(NPY_FLOAT,paramp_Dims,paramp_Rank,capi_paramp_intent,paramp_capi);
684 if (capi_paramp_tmp == NULL) {
685 PyObject *exc, *val, *tb;
686 PyErr_Fetch(&exc, &val, &tb);
687 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 7th argument `paramp' of fitacf_fit_short.fit to C/Fortran array" );
688 npy_PyErr_ChainExceptionsCause(exc, val, tb);
689 } else {
690 paramp = (float *)(PyArray_DATA(capi_paramp_tmp));
691
692 /* Processing variable ebp */
693 ebp_Dims[0]=10;
694 capi_ebp_intent |= F2PY_INTENT_OUT|F2PY_INTENT_HIDE;
695 capi_ebp_tmp = array_from_pyobj(NPY_FLOAT,ebp_Dims,ebp_Rank,capi_ebp_intent,Py_None);
696 if (capi_ebp_tmp == NULL) {
697 PyObject *exc, *val, *tb;
698 PyErr_Fetch(&exc, &val, &tb);
699 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting hidden `ebp' of fitacf_fit_short.fit to C/Fortran array" );
700 npy_PyErr_ChainExceptionsCause(exc, val, tb);
701 } else {
702 ebp = (float *)(PyArray_DATA(capi_ebp_tmp));
703
704 /* Processing variable bfldp */
705 f2py_success = float_from_pyobj(&bfldp,bfldp_capi,"fitacf_fit_short.fit() 8th argument (bfldp) can't be converted to float");
706 if (f2py_success) {
707 /* Processing variable alphap */
708 f2py_success = float_from_pyobj(&alphap,alphap_capi,"fitacf_fit_short.fit() 9th argument (alphap) can't be converted to float");
709 if (f2py_success) {
710 /* Processing variable densp */
711 f2py_success = float_from_pyobj(&densp,densp_capi,"fitacf_fit_short.fit() 10th argument (densp) can't be converted to float");
712 if (f2py_success) {
713 /* Processing variable alt */
714 f2py_success = float_from_pyobj(&alt,alt_capi,"fitacf_fit_short.fit() 11st argument (alt) can't be converted to float");
715 if (f2py_success) {
716 /* Processing variable time */
717 f2py_success = float_from_pyobj(&time,time_capi,"fitacf_fit_short.fit() 12nd argument (time) can't be converted to float");
718 if (f2py_success) {
719 /* Processing variable ifitp */
720 ifitp_Dims[0]=10;
721 capi_ifitp_intent |= F2PY_INTENT_IN;
722 capi_ifitp_tmp = array_from_pyobj(NPY_INT,ifitp_Dims,ifitp_Rank,capi_ifitp_intent,ifitp_capi);
723 if (capi_ifitp_tmp == NULL) {
724 PyObject *exc, *val, *tb;
725 PyErr_Fetch(&exc, &val, &tb);
726 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 13rd argument `ifitp' of fitacf_fit_short.fit to C/Fortran array" );
727 npy_PyErr_ChainExceptionsCause(exc, val, tb);
728 } else {
729 ifitp = (int *)(PyArray_DATA(capi_ifitp_tmp));
730
731 /* Processing variable ist */
732 f2py_success = int_from_pyobj(&ist,ist_capi,"fitacf_fit_short.fit() 14th argument (ist) can't be converted to int");
733 if (f2py_success) {
734 /* Processing variable nl */
735 if (nl_capi == Py_None) nl = len(taup); else
736 f2py_success = int_from_pyobj(&nl,nl_capi,"fitacf_fit_short.fit() 1st keyword (nl) can't be converted to int");
737 if (f2py_success) {
738 CHECKSCALAR(len(taup)>=nl,"len(taup)>=nl","1st keyword nl","fit:nl=%d",nl) {
739 /* Processing variable rhop */
740 rhop_Dims[0]=nl;
741 capi_rhop_intent |= F2PY_INTENT_IN;
742 capi_rhop_tmp = array_from_pyobj(NPY_FLOAT,rhop_Dims,rhop_Rank,capi_rhop_intent,rhop_capi);
743 if (capi_rhop_tmp == NULL) {
744 PyObject *exc, *val, *tb;
745 PyErr_Fetch(&exc, &val, &tb);
746 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 3rd argument `rhop' of fitacf_fit_short.fit to C/Fortran array" );
747 npy_PyErr_ChainExceptionsCause(exc, val, tb);
748 } else {
749 rhop = (float *)(PyArray_DATA(capi_rhop_tmp));
750
751 /* Processing variable covar */
752 covar_Dims[0]=nl,covar_Dims[1]=nl;
753 capi_covar_intent |= F2PY_INTENT_IN;
754 capi_covar_tmp = array_from_pyobj(NPY_FLOAT,covar_Dims,covar_Rank,capi_covar_intent,covar_capi);
755 if (capi_covar_tmp == NULL) {
756 PyObject *exc, *val, *tb;
757 PyErr_Fetch(&exc, &val, &tb);
758 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 4th argument `covar' of fitacf_fit_short.fit to C/Fortran array" );
759 npy_PyErr_ChainExceptionsCause(exc, val, tb);
760 } else {
761 covar = (float *)(PyArray_DATA(capi_covar_tmp));
762
763 /* Processing variable cinv */
764 cinv_Dims[0]=nl,cinv_Dims[1]=nl;
765 capi_cinv_intent |= F2PY_INTENT_IN|F2PY_INTENT_OUT;
766 capi_cinv_tmp = array_from_pyobj(NPY_FLOAT,cinv_Dims,cinv_Rank,capi_cinv_intent,cinv_capi);
767 if (capi_cinv_tmp == NULL) {
768 PyObject *exc, *val, *tb;
769 PyErr_Fetch(&exc, &val, &tb);
770 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 5th argument `cinv' of fitacf_fit_short.fit to C/Fortran array" );
771 npy_PyErr_ChainExceptionsCause(exc, val, tb);
772 } else {
773 cinv = (float *)(PyArray_DATA(capi_cinv_tmp));
774
775 /* Processing variable sigma2p */
776 sigma2p_Dims[0]=nl;
777 capi_sigma2p_intent |= F2PY_INTENT_IN|F2PY_INTENT_OUT;
778 capi_sigma2p_tmp = array_from_pyobj(NPY_FLOAT,sigma2p_Dims,sigma2p_Rank,capi_sigma2p_intent,sigma2p_capi);
779 if (capi_sigma2p_tmp == NULL) {
780 PyObject *exc, *val, *tb;
781 PyErr_Fetch(&exc, &val, &tb);
782 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 6th argument `sigma2p' of fitacf_fit_short.fit to C/Fortran array" );
783 npy_PyErr_ChainExceptionsCause(exc, val, tb);
784 } else {
785 sigma2p = (float *)(PyArray_DATA(capi_sigma2p_tmp));
786
787 /*end of frompyobj*/
788 #ifdef F2PY_REPORT_ATEXIT
789 f2py_start_call_clock();
790 #endif
791 /*callfortranroutine*/
792 (*f2py_func)(&wl,taup,rhop,covar,cinv,sigma2p,paramp,ebp,&bfldp,&alphap,&densp,&alt,&time,ifitp,&ist,&nl);
793 if (PyErr_Occurred())
794 f2py_success = 0;
795 #ifdef F2PY_REPORT_ATEXIT
796 f2py_stop_call_clock();
797 #endif
798 /*end of callfortranroutine*/
799 if (f2py_success) {
800 /*pyobjfrom*/
801 /*end of pyobjfrom*/
802 CFUNCSMESS("Building return value.\n");
803 capi_buildvalue = Py_BuildValue("NNNNi",capi_cinv_tmp,capi_sigma2p_tmp,capi_paramp_tmp,capi_ebp_tmp,ist);
804 /*closepyobjfrom*/
805 /*end of closepyobjfrom*/
806 } /*if (f2py_success) after callfortranroutine*/
807 /*cleanupfrompyobj*/
808 } /*if (capi_sigma2p_tmp == NULL) ... else of sigma2p*/
809 /* End of cleaning variable sigma2p */
810 } /*if (capi_cinv_tmp == NULL) ... else of cinv*/
811 /* End of cleaning variable cinv */
812 if((PyObject *)capi_covar_tmp!=covar_capi) {
813 Py_XDECREF(capi_covar_tmp); }
814 } /*if (capi_covar_tmp == NULL) ... else of covar*/
815 /* End of cleaning variable covar */
816 if((PyObject *)capi_rhop_tmp!=rhop_capi) {
817 Py_XDECREF(capi_rhop_tmp); }
818 } /*if (capi_rhop_tmp == NULL) ... else of rhop*/
819 /* End of cleaning variable rhop */
820 } /*CHECKSCALAR(len(taup)>=nl)*/
821 } /*if (f2py_success) of nl*/
822 /* End of cleaning variable nl */
823 } /*if (f2py_success) of ist*/
824 /* End of cleaning variable ist */
825 if((PyObject *)capi_ifitp_tmp!=ifitp_capi) {
826 Py_XDECREF(capi_ifitp_tmp); }
827 } /*if (capi_ifitp_tmp == NULL) ... else of ifitp*/
828 /* End of cleaning variable ifitp */
829 } /*if (f2py_success) of time*/
830 /* End of cleaning variable time */
831 } /*if (f2py_success) of alt*/
832 /* End of cleaning variable alt */
833 } /*if (f2py_success) of densp*/
834 /* End of cleaning variable densp */
835 } /*if (f2py_success) of alphap*/
836 /* End of cleaning variable alphap */
837 } /*if (f2py_success) of bfldp*/
838 /* End of cleaning variable bfldp */
839 } /*if (capi_ebp_tmp == NULL) ... else of ebp*/
840 /* End of cleaning variable ebp */
841 } /*if (capi_paramp_tmp == NULL) ... else of paramp*/
842 /* End of cleaning variable paramp */
843 if((PyObject *)capi_taup_tmp!=taup_capi) {
844 Py_XDECREF(capi_taup_tmp); }
845 } /*if (capi_taup_tmp == NULL) ... else of taup*/
846 /* End of cleaning variable taup */
847 } /*if (f2py_success) of wl*/
848 /* End of cleaning variable wl */
849 /*end of cleanupfrompyobj*/
850 if (capi_buildvalue == NULL) {
851 /*routdebugfailure*/
852 } else {
853 /*routdebugleave*/
854 }
855 CFUNCSMESS("Freeing memory.\n");
856 /*freemem*/
857 #ifdef F2PY_REPORT_ATEXIT
858 f2py_stop_clock();
859 #endif
860 return capi_buildvalue;
861 }
862 /********************************* end of fit *********************************/
863
864 /*********************************** spect1 ***********************************/
865 static char doc_f2py_rout_fitacf_fit_short_spect1[] = "\
866 spect1 = spect1(omega)\n\nWrapper for ``spect1``.\
867 \n\nParameters\n----------\n"
868 "omega : input float\n"
869 "\nReturns\n-------\n"
870 "spect1 : float";
871 /* extern void F_WRAPPEDFUNC(spect1,SPECT1)(float*,float*); */
872 static PyObject *f2py_rout_fitacf_fit_short_spect1(const PyObject *capi_self,
873 PyObject *capi_args,
874 PyObject *capi_keywds,
875 void (*f2py_func)(float*,float*)) {
876 PyObject * volatile capi_buildvalue = NULL;
877 volatile int f2py_success = 1;
878 /*decl*/
879
880 float spect1 = 0;
881 float omega = 0;
882 PyObject *omega_capi = Py_None;
883 static char *capi_kwlist[] = {"omega",NULL};
884
885 /*routdebugenter*/
886 #ifdef F2PY_REPORT_ATEXIT
887 f2py_start_clock();
888 #endif
889 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
890 "O|:fitacf_fit_short.spect1",\
891 capi_kwlist,&omega_capi))
892 return NULL;
893 /*frompyobj*/
894 /* Processing variable omega */
895 f2py_success = float_from_pyobj(&omega,omega_capi,"fitacf_fit_short.spect1() 1st argument (omega) can't be converted to float");
896 if (f2py_success) {
897 /* Processing variable spect1 */
898 /*end of frompyobj*/
899 #ifdef F2PY_REPORT_ATEXIT
900 f2py_start_call_clock();
901 #endif
902 /*callfortranroutine*/
903 (*f2py_func)(&spect1,&omega);
904 if (PyErr_Occurred())
905 f2py_success = 0;
906 #ifdef F2PY_REPORT_ATEXIT
907 f2py_stop_call_clock();
908 #endif
909 /*end of callfortranroutine*/
910 if (f2py_success) {
911 /*pyobjfrom*/
912 /*end of pyobjfrom*/
913 CFUNCSMESS("Building return value.\n");
914 capi_buildvalue = Py_BuildValue("f",spect1);
915 /*closepyobjfrom*/
916 /*end of closepyobjfrom*/
917 } /*if (f2py_success) after callfortranroutine*/
918 /*cleanupfrompyobj*/
919 /* End of cleaning variable spect1 */
920 } /*if (f2py_success) of omega*/
921 /* End of cleaning variable omega */
922 /*end of cleanupfrompyobj*/
923 if (capi_buildvalue == NULL) {
924 /*routdebugfailure*/
925 } else {
926 /*routdebugleave*/
927 }
928 CFUNCSMESS("Freeing memory.\n");
929 /*freemem*/
930 #ifdef F2PY_REPORT_ATEXIT
931 f2py_stop_clock();
932 #endif
933 return capi_buildvalue;
934 }
935 /******************************* end of spect1 *******************************/
936
937 /*********************************** gaussq ***********************************/
938 static char doc_f2py_rout_fitacf_fit_short_gaussq[] = "\
939 gaussq(tau,acf)\n\nWrapper for ``gaussq``.\
940 \n\nParameters\n----------\n"
941 "tau : input float\n"
942 "acf : input float";
943 /* extern void F_FUNC(gaussq,GAUSSQ)(float*,float*); */
944 static PyObject *f2py_rout_fitacf_fit_short_gaussq(const PyObject *capi_self,
945 PyObject *capi_args,
946 PyObject *capi_keywds,
947 void (*f2py_func)(float*,float*)) {
948 PyObject * volatile capi_buildvalue = NULL;
949 volatile int f2py_success = 1;
950 /*decl*/
951
952 float tau = 0;
953 PyObject *tau_capi = Py_None;
954 float acf = 0;
955 PyObject *acf_capi = Py_None;
956 static char *capi_kwlist[] = {"tau","acf",NULL};
957
958 /*routdebugenter*/
959 #ifdef F2PY_REPORT_ATEXIT
960 f2py_start_clock();
961 #endif
962 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
963 "OO|:fitacf_fit_short.gaussq",\
964 capi_kwlist,&tau_capi,&acf_capi))
965 return NULL;
966 /*frompyobj*/
967 /* Processing variable tau */
968 f2py_success = float_from_pyobj(&tau,tau_capi,"fitacf_fit_short.gaussq() 1st argument (tau) can't be converted to float");
969 if (f2py_success) {
970 /* Processing variable acf */
971 f2py_success = float_from_pyobj(&acf,acf_capi,"fitacf_fit_short.gaussq() 2nd argument (acf) can't be converted to float");
972 if (f2py_success) {
973 /*end of frompyobj*/
974 #ifdef F2PY_REPORT_ATEXIT
975 f2py_start_call_clock();
976 #endif
977 /*callfortranroutine*/
978 (*f2py_func)(&tau,&acf);
979 if (PyErr_Occurred())
980 f2py_success = 0;
981 #ifdef F2PY_REPORT_ATEXIT
982 f2py_stop_call_clock();
983 #endif
984 /*end of callfortranroutine*/
985 if (f2py_success) {
986 /*pyobjfrom*/
987 /*end of pyobjfrom*/
988 CFUNCSMESS("Building return value.\n");
989 capi_buildvalue = Py_BuildValue("");
990 /*closepyobjfrom*/
991 /*end of closepyobjfrom*/
992 } /*if (f2py_success) after callfortranroutine*/
993 /*cleanupfrompyobj*/
994 } /*if (f2py_success) of acf*/
995 /* End of cleaning variable acf */
996 } /*if (f2py_success) of tau*/
997 /* End of cleaning variable tau */
998 /*end of cleanupfrompyobj*/
999 if (capi_buildvalue == NULL) {
1000 /*routdebugfailure*/
1001 } else {
1002 /*routdebugleave*/
1003 }
1004 CFUNCSMESS("Freeing memory.\n");
1005 /*freemem*/
1006 #ifdef F2PY_REPORT_ATEXIT
1007 f2py_stop_clock();
1008 #endif
1009 return capi_buildvalue;
1010 }
1011 /******************************* end of gaussq *******************************/
1012
1013 /*********************************** lmdif1 ***********************************/
1014 static char doc_f2py_rout_fitacf_fit_short_lmdif1[] = "\
1015 lmdif1(fcn,x,fvec,tol,info,iwa,wa,[m,n,lwa,fcn_extra_args])\n\nWrapper for ``lmdif1``.\
1016 \n\nParameters\n----------\n"
1017 "fcn : call-back function\n"
1018 "x : input rank-1 array('f') with bounds (n)\n"
1019 "fvec : input rank-1 array('f') with bounds (m)\n"
1020 "tol : input float\n"
1021 "info : input int\n"
1022 "iwa : input rank-1 array('i') with bounds (n)\n"
1023 "wa : input rank-1 array('f') with bounds (lwa)\n"
1024 "\nOther Parameters\n----------------\n"
1025 "fcn_extra_args : input tuple, optional\n Default: ()\n"
1026 "m : input int, optional\n Default: len(fvec)\n"
1027 "n : input int, optional\n Default: len(x)\n"
1028 "lwa : input int, optional\n Default: len(wa)\n"
1029 "\nNotes\n-----\nCall-back functions::\n\n"
1030 " def fcn(x,fvec,iflag,[m,n]): return \n\
1031 Required arguments:\n"
1032 " x : input rank-1 array('f') with bounds (n)\n"
1033 " fvec : input rank-1 array('f') with bounds (m)\n"
1034 " iflag : input int\n"
1035 " Optional arguments:\n"
1036 " m : input int, optional\n Default: len(fvec)\n"
1037 " n : input int, optional\n Default: len(x)";
1038 /* extern void F_FUNC(lmdif1,LMDIF1)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,int*,int*,float*,int*); */
1039 static PyObject *f2py_rout_fitacf_fit_short_lmdif1(const PyObject *capi_self,
1040 PyObject *capi_args,
1041 PyObject *capi_keywds,
1042 void (*f2py_func)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,int*,int*,float*,int*)) {
1043 PyObject * volatile capi_buildvalue = NULL;
1044 volatile int f2py_success = 1;
1045 /*decl*/
1046
1047 PyObject *fcn_capi = Py_None;
1048 PyTupleObject *fcn_xa_capi = NULL;
1049 PyTupleObject *fcn_args_capi = NULL;
1050 int fcn_nofargs_capi = 0;
1051 cb_fcn_in_lmdif__user__routines_typedef fcn_cptr;
1052 int m = 0;
1053 PyObject *m_capi = Py_None;
1054 int n = 0;
1055 PyObject *n_capi = Py_None;
1056 float *x = NULL;
1057 npy_intp x_Dims[1] = {-1};
1058 const int x_Rank = 1;
1059 PyArrayObject *capi_x_tmp = NULL;
1060 int capi_x_intent = 0;
1061 PyObject *x_capi = Py_None;
1062 float *fvec = NULL;
1063 npy_intp fvec_Dims[1] = {-1};
1064 const int fvec_Rank = 1;
1065 PyArrayObject *capi_fvec_tmp = NULL;
1066 int capi_fvec_intent = 0;
1067 PyObject *fvec_capi = Py_None;
1068 float tol = 0;
1069 PyObject *tol_capi = Py_None;
1070 int info = 0;
1071 PyObject *info_capi = Py_None;
1072 int *iwa = NULL;
1073 npy_intp iwa_Dims[1] = {-1};
1074 const int iwa_Rank = 1;
1075 PyArrayObject *capi_iwa_tmp = NULL;
1076 int capi_iwa_intent = 0;
1077 PyObject *iwa_capi = Py_None;
1078 float *wa = NULL;
1079 npy_intp wa_Dims[1] = {-1};
1080 const int wa_Rank = 1;
1081 PyArrayObject *capi_wa_tmp = NULL;
1082 int capi_wa_intent = 0;
1083 PyObject *wa_capi = Py_None;
1084 int lwa = 0;
1085 PyObject *lwa_capi = Py_None;
1086 static char *capi_kwlist[] = {"fcn","x","fvec","tol","info","iwa","wa","m","n","lwa","fcn_extra_args",NULL};
1087
1088 /*routdebugenter*/
1089 #ifdef F2PY_REPORT_ATEXIT
1090 f2py_start_clock();
1091 #endif
1092 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
1093 "OOOOOOO|OOOO!:fitacf_fit_short.lmdif1",\
1094 capi_kwlist,&fcn_capi,&x_capi,&fvec_capi,&tol_capi,&info_capi,&iwa_capi,&wa_capi,&m_capi,&n_capi,&lwa_capi,&PyTuple_Type,&fcn_xa_capi))
1095 return NULL;
1096 /*frompyobj*/
1097 /* Processing variable fcn */
1098 if(F2PyCapsule_Check(fcn_capi)) {
1099 fcn_cptr = F2PyCapsule_AsVoidPtr(fcn_capi);
1100 } else {
1101 fcn_cptr = cb_fcn_in_lmdif__user__routines;
1102 }
1103
1104 fcn_nofargs_capi = cb_fcn_in_lmdif__user__routines_nofargs;
1105 if (create_cb_arglist(fcn_capi,fcn_xa_capi,5,2,&cb_fcn_in_lmdif__user__routines_nofargs,&fcn_args_capi,"failed in processing argument list for call-back fcn.")) {
1106 jmp_buf fcn_jmpbuf;
1107 CFUNCSMESS("Saving jmpbuf for `fcn`.\n");
1108 SWAP(fcn_capi,cb_fcn_in_lmdif__user__routines_capi,PyObject);
1109 SWAP(fcn_args_capi,cb_fcn_in_lmdif__user__routines_args_capi,PyTupleObject);
1110 memcpy(&fcn_jmpbuf,&cb_fcn_in_lmdif__user__routines_jmpbuf,sizeof(jmp_buf));
1111 /* Processing variable x */
1112 ;
1113 capi_x_intent |= F2PY_INTENT_IN;
1114 capi_x_tmp = array_from_pyobj(NPY_FLOAT,x_Dims,x_Rank,capi_x_intent,x_capi);
1115 if (capi_x_tmp == NULL) {
1116 PyObject *exc, *val, *tb;
1117 PyErr_Fetch(&exc, &val, &tb);
1118 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 2nd argument `x' of fitacf_fit_short.lmdif1 to C/Fortran array" );
1119 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1120 } else {
1121 x = (float *)(PyArray_DATA(capi_x_tmp));
1122
1123 /* Processing variable fvec */
1124 ;
1125 capi_fvec_intent |= F2PY_INTENT_IN;
1126 capi_fvec_tmp = array_from_pyobj(NPY_FLOAT,fvec_Dims,fvec_Rank,capi_fvec_intent,fvec_capi);
1127 if (capi_fvec_tmp == NULL) {
1128 PyObject *exc, *val, *tb;
1129 PyErr_Fetch(&exc, &val, &tb);
1130 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 3rd argument `fvec' of fitacf_fit_short.lmdif1 to C/Fortran array" );
1131 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1132 } else {
1133 fvec = (float *)(PyArray_DATA(capi_fvec_tmp));
1134
1135 /* Processing variable tol */
1136 f2py_success = float_from_pyobj(&tol,tol_capi,"fitacf_fit_short.lmdif1() 4th argument (tol) can't be converted to float");
1137 if (f2py_success) {
1138 /* Processing variable info */
1139 f2py_success = int_from_pyobj(&info,info_capi,"fitacf_fit_short.lmdif1() 5th argument (info) can't be converted to int");
1140 if (f2py_success) {
1141 /* Processing variable wa */
1142 ;
1143 capi_wa_intent |= F2PY_INTENT_IN;
1144 capi_wa_tmp = array_from_pyobj(NPY_FLOAT,wa_Dims,wa_Rank,capi_wa_intent,wa_capi);
1145 if (capi_wa_tmp == NULL) {
1146 PyObject *exc, *val, *tb;
1147 PyErr_Fetch(&exc, &val, &tb);
1148 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 7th argument `wa' of fitacf_fit_short.lmdif1 to C/Fortran array" );
1149 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1150 } else {
1151 wa = (float *)(PyArray_DATA(capi_wa_tmp));
1152
1153 /* Processing variable m */
1154 if (m_capi == Py_None) m = len(fvec); else
1155 f2py_success = int_from_pyobj(&m,m_capi,"fitacf_fit_short.lmdif1() 1st keyword (m) can't be converted to int");
1156 if (f2py_success) {
1157 CHECKSCALAR(len(fvec)>=m,"len(fvec)>=m","1st keyword m","lmdif1:m=%d",m) {
1158 /* Processing variable n */
1159 if (n_capi == Py_None) n = len(x); else
1160 f2py_success = int_from_pyobj(&n,n_capi,"fitacf_fit_short.lmdif1() 2nd keyword (n) can't be converted to int");
1161 if (f2py_success) {
1162 CHECKSCALAR(len(x)>=n,"len(x)>=n","2nd keyword n","lmdif1:n=%d",n) {
1163 /* Processing variable iwa */
1164 iwa_Dims[0]=n;
1165 capi_iwa_intent |= F2PY_INTENT_IN;
1166 capi_iwa_tmp = array_from_pyobj(NPY_INT,iwa_Dims,iwa_Rank,capi_iwa_intent,iwa_capi);
1167 if (capi_iwa_tmp == NULL) {
1168 PyObject *exc, *val, *tb;
1169 PyErr_Fetch(&exc, &val, &tb);
1170 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 6th argument `iwa' of fitacf_fit_short.lmdif1 to C/Fortran array" );
1171 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1172 } else {
1173 iwa = (int *)(PyArray_DATA(capi_iwa_tmp));
1174
1175 /* Processing variable lwa */
1176 if (lwa_capi == Py_None) lwa = len(wa); else
1177 f2py_success = int_from_pyobj(&lwa,lwa_capi,"fitacf_fit_short.lmdif1() 3rd keyword (lwa) can't be converted to int");
1178 if (f2py_success) {
1179 CHECKSCALAR(len(wa)>=lwa,"len(wa)>=lwa","3rd keyword lwa","lmdif1:lwa=%d",lwa) {
1180 /*end of frompyobj*/
1181 #ifdef F2PY_REPORT_ATEXIT
1182 f2py_start_call_clock();
1183 #endif
1184 /*callfortranroutine*/
1185 if ((setjmp(cb_fcn_in_lmdif__user__routines_jmpbuf))) {
1186 f2py_success = 0;
1187 } else {
1188 (*f2py_func)(fcn_cptr,&m,&n,x,fvec,&tol,&info,iwa,wa,&lwa);
1189 }
1190 if (PyErr_Occurred())
1191 f2py_success = 0;
1192 #ifdef F2PY_REPORT_ATEXIT
1193 f2py_stop_call_clock();
1194 #endif
1195 /*end of callfortranroutine*/
1196 if (f2py_success) {
1197 /*pyobjfrom*/
1198 /*end of pyobjfrom*/
1199 CFUNCSMESS("Building return value.\n");
1200 capi_buildvalue = Py_BuildValue("");
1201 /*closepyobjfrom*/
1202 /*end of closepyobjfrom*/
1203 } /*if (f2py_success) after callfortranroutine*/
1204 /*cleanupfrompyobj*/
1205 } /*CHECKSCALAR(len(wa)>=lwa)*/
1206 } /*if (f2py_success) of lwa*/
1207 /* End of cleaning variable lwa */
1208 if((PyObject *)capi_iwa_tmp!=iwa_capi) {
1209 Py_XDECREF(capi_iwa_tmp); }
1210 } /*if (capi_iwa_tmp == NULL) ... else of iwa*/
1211 /* End of cleaning variable iwa */
1212 } /*CHECKSCALAR(len(x)>=n)*/
1213 } /*if (f2py_success) of n*/
1214 /* End of cleaning variable n */
1215 } /*CHECKSCALAR(len(fvec)>=m)*/
1216 } /*if (f2py_success) of m*/
1217 /* End of cleaning variable m */
1218 if((PyObject *)capi_wa_tmp!=wa_capi) {
1219 Py_XDECREF(capi_wa_tmp); }
1220 } /*if (capi_wa_tmp == NULL) ... else of wa*/
1221 /* End of cleaning variable wa */
1222 } /*if (f2py_success) of info*/
1223 /* End of cleaning variable info */
1224 } /*if (f2py_success) of tol*/
1225 /* End of cleaning variable tol */
1226 if((PyObject *)capi_fvec_tmp!=fvec_capi) {
1227 Py_XDECREF(capi_fvec_tmp); }
1228 } /*if (capi_fvec_tmp == NULL) ... else of fvec*/
1229 /* End of cleaning variable fvec */
1230 if((PyObject *)capi_x_tmp!=x_capi) {
1231 Py_XDECREF(capi_x_tmp); }
1232 } /*if (capi_x_tmp == NULL) ... else of x*/
1233 /* End of cleaning variable x */
1234 CFUNCSMESS("Restoring jmpbuf for `fcn`.\n");
1235 cb_fcn_in_lmdif__user__routines_capi = fcn_capi;
1236 Py_DECREF(cb_fcn_in_lmdif__user__routines_args_capi);
1237 cb_fcn_in_lmdif__user__routines_args_capi = fcn_args_capi;
1238 cb_fcn_in_lmdif__user__routines_nofargs = fcn_nofargs_capi;
1239 memcpy(&cb_fcn_in_lmdif__user__routines_jmpbuf,&fcn_jmpbuf,sizeof(jmp_buf));
1240 }
1241 /* End of cleaning variable fcn */
1242 /*end of cleanupfrompyobj*/
1243 if (capi_buildvalue == NULL) {
1244 /*routdebugfailure*/
1245 } else {
1246 /*routdebugleave*/
1247 }
1248 CFUNCSMESS("Freeing memory.\n");
1249 /*freemem*/
1250 #ifdef F2PY_REPORT_ATEXIT
1251 f2py_stop_clock();
1252 #endif
1253 return capi_buildvalue;
1254 }
1255 /******************************* end of lmdif1 *******************************/
1256
1257 /*********************************** lmdif ***********************************/
1258 static char doc_f2py_rout_fitacf_fit_short_lmdif[] = "\
1259 lmdif(fcn,x,fvec,ftol,xtol,gtol,maxfev,epsfcn,diag,mode,factor,nprint,info,nfev,fjac,ipvt,qtf,wa1,wa2,wa3,wa4,[m,n,ldfjac,fcn_extra_args])\n\nWrapper for ``lmdif``.\
1260 \n\nParameters\n----------\n"
1261 "fcn : call-back function\n"
1262 "x : input rank-1 array('f') with bounds (n)\n"
1263 "fvec : input rank-1 array('f') with bounds (m)\n"
1264 "ftol : input float\n"
1265 "xtol : input float\n"
1266 "gtol : input float\n"
1267 "maxfev : input int\n"
1268 "epsfcn : input float\n"
1269 "diag : input rank-1 array('f') with bounds (n)\n"
1270 "mode : input int\n"
1271 "factor : input float\n"
1272 "nprint : input int\n"
1273 "info : input int\n"
1274 "nfev : input int\n"
1275 "fjac : input rank-2 array('f') with bounds (ldfjac,n)\n"
1276 "ipvt : input rank-1 array('i') with bounds (n)\n"
1277 "qtf : input rank-1 array('f') with bounds (n)\n"
1278 "wa1 : input rank-1 array('f') with bounds (n)\n"
1279 "wa2 : input rank-1 array('f') with bounds (n)\n"
1280 "wa3 : input rank-1 array('f') with bounds (n)\n"
1281 "wa4 : input rank-1 array('f') with bounds (m)\n"
1282 "\nOther Parameters\n----------------\n"
1283 "fcn_extra_args : input tuple, optional\n Default: ()\n"
1284 "m : input int, optional\n Default: len(fvec)\n"
1285 "n : input int, optional\n Default: len(x)\n"
1286 "ldfjac : input int, optional\n Default: shape(fjac,0)\n"
1287 "\nNotes\n-----\nCall-back functions::\n\n"
1288 " def fcn(x,fvec,iflag,[m,n]): return \n\
1289 Required arguments:\n"
1290 " x : input rank-1 array('f') with bounds (n)\n"
1291 " fvec : input rank-1 array('f') with bounds (m)\n"
1292 " iflag : input int\n"
1293 " Optional arguments:\n"
1294 " m : input int, optional\n Default: len(fvec)\n"
1295 " n : input int, optional\n Default: len(x)";
1296 /* extern void F_FUNC(lmdif,LMDIF)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,float*,float*,int*,float*,float*,int*,float*,int*,int*,int*,float*,int*,int*,float*,float*,float*,float*,float*); */
1297 static PyObject *f2py_rout_fitacf_fit_short_lmdif(const PyObject *capi_self,
1298 PyObject *capi_args,
1299 PyObject *capi_keywds,
1300 void (*f2py_func)(cb_fcn_in_lmdif__user__routines_typedef,int*,int*,float*,float*,float*,float*,float*,int*,float*,float*,int*,float*,int*,int*,int*,float*,int*,int*,float*,float*,float*,float*,float*)) {
1301 PyObject * volatile capi_buildvalue = NULL;
1302 volatile int f2py_success = 1;
1303 /*decl*/
1304
1305 PyObject *fcn_capi = Py_None;
1306 PyTupleObject *fcn_xa_capi = NULL;
1307 PyTupleObject *fcn_args_capi = NULL;
1308 int fcn_nofargs_capi = 0;
1309 cb_fcn_in_lmdif__user__routines_typedef fcn_cptr;
1310 int m = 0;
1311 PyObject *m_capi = Py_None;
1312 int n = 0;
1313 PyObject *n_capi = Py_None;
1314 float *x = NULL;
1315 npy_intp x_Dims[1] = {-1};
1316 const int x_Rank = 1;
1317 PyArrayObject *capi_x_tmp = NULL;
1318 int capi_x_intent = 0;
1319 PyObject *x_capi = Py_None;
1320 float *fvec = NULL;
1321 npy_intp fvec_Dims[1] = {-1};
1322 const int fvec_Rank = 1;
1323 PyArrayObject *capi_fvec_tmp = NULL;
1324 int capi_fvec_intent = 0;
1325 PyObject *fvec_capi = Py_None;
1326 float ftol = 0;
1327 PyObject *ftol_capi = Py_None;
1328 float xtol = 0;
1329 PyObject *xtol_capi = Py_None;
1330 float gtol = 0;
1331 PyObject *gtol_capi = Py_None;
1332 int maxfev = 0;
1333 PyObject *maxfev_capi = Py_None;
1334 float epsfcn = 0;
1335 PyObject *epsfcn_capi = Py_None;
1336 float *diag = NULL;
1337 npy_intp diag_Dims[1] = {-1};
1338 const int diag_Rank = 1;
1339 PyArrayObject *capi_diag_tmp = NULL;
1340 int capi_diag_intent = 0;
1341 PyObject *diag_capi = Py_None;
1342 int mode = 0;
1343 PyObject *mode_capi = Py_None;
1344 float factor = 0;
1345 PyObject *factor_capi = Py_None;
1346 int nprint = 0;
1347 PyObject *nprint_capi = Py_None;
1348 int info = 0;
1349 PyObject *info_capi = Py_None;
1350 int nfev = 0;
1351 PyObject *nfev_capi = Py_None;
1352 float *fjac = NULL;
1353 npy_intp fjac_Dims[2] = {-1, -1};
1354 const int fjac_Rank = 2;
1355 PyArrayObject *capi_fjac_tmp = NULL;
1356 int capi_fjac_intent = 0;
1357 PyObject *fjac_capi = Py_None;
1358 int ldfjac = 0;
1359 PyObject *ldfjac_capi = Py_None;
1360 int *ipvt = NULL;
1361 npy_intp ipvt_Dims[1] = {-1};
1362 const int ipvt_Rank = 1;
1363 PyArrayObject *capi_ipvt_tmp = NULL;
1364 int capi_ipvt_intent = 0;
1365 PyObject *ipvt_capi = Py_None;
1366 float *qtf = NULL;
1367 npy_intp qtf_Dims[1] = {-1};
1368 const int qtf_Rank = 1;
1369 PyArrayObject *capi_qtf_tmp = NULL;
1370 int capi_qtf_intent = 0;
1371 PyObject *qtf_capi = Py_None;
1372 float *wa1 = NULL;
1373 npy_intp wa1_Dims[1] = {-1};
1374 const int wa1_Rank = 1;
1375 PyArrayObject *capi_wa1_tmp = NULL;
1376 int capi_wa1_intent = 0;
1377 PyObject *wa1_capi = Py_None;
1378 float *wa2 = NULL;
1379 npy_intp wa2_Dims[1] = {-1};
1380 const int wa2_Rank = 1;
1381 PyArrayObject *capi_wa2_tmp = NULL;
1382 int capi_wa2_intent = 0;
1383 PyObject *wa2_capi = Py_None;
1384 float *wa3 = NULL;
1385 npy_intp wa3_Dims[1] = {-1};
1386 const int wa3_Rank = 1;
1387 PyArrayObject *capi_wa3_tmp = NULL;
1388 int capi_wa3_intent = 0;
1389 PyObject *wa3_capi = Py_None;
1390 float *wa4 = NULL;
1391 npy_intp wa4_Dims[1] = {-1};
1392 const int wa4_Rank = 1;
1393 PyArrayObject *capi_wa4_tmp = NULL;
1394 int capi_wa4_intent = 0;
1395 PyObject *wa4_capi = Py_None;
1396 static char *capi_kwlist[] = {"fcn","x","fvec","ftol","xtol","gtol","maxfev","epsfcn","diag","mode","factor","nprint","info","nfev","fjac","ipvt","qtf","wa1","wa2","wa3","wa4","m","n","ldfjac","fcn_extra_args",NULL};
1397
1398 /*routdebugenter*/
1399 #ifdef F2PY_REPORT_ATEXIT
1400 f2py_start_clock();
1401 #endif
1402 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
1403 "OOOOOOOOOOOOOOOOOOOOO|OOOO!:fitacf_fit_short.lmdif",\
1404 capi_kwlist,&fcn_capi,&x_capi,&fvec_capi,&ftol_capi,&xtol_capi,&gtol_capi,&maxfev_capi,&epsfcn_capi,&diag_capi,&mode_capi,&factor_capi,&nprint_capi,&info_capi,&nfev_capi,&fjac_capi,&ipvt_capi,&qtf_capi,&wa1_capi,&wa2_capi,&wa3_capi,&wa4_capi,&m_capi,&n_capi,&ldfjac_capi,&PyTuple_Type,&fcn_xa_capi))
1405 return NULL;
1406 /*frompyobj*/
1407 /* Processing variable fcn */
1408 if(F2PyCapsule_Check(fcn_capi)) {
1409 fcn_cptr = F2PyCapsule_AsVoidPtr(fcn_capi);
1410 } else {
1411 fcn_cptr = cb_fcn_in_lmdif__user__routines;
1412 }
1413
1414 fcn_nofargs_capi = cb_fcn_in_lmdif__user__routines_nofargs;
1415 if (create_cb_arglist(fcn_capi,fcn_xa_capi,5,2,&cb_fcn_in_lmdif__user__routines_nofargs,&fcn_args_capi,"failed in processing argument list for call-back fcn.")) {
1416 jmp_buf fcn_jmpbuf;
1417 CFUNCSMESS("Saving jmpbuf for `fcn`.\n");
1418 SWAP(fcn_capi,cb_fcn_in_lmdif__user__routines_capi,PyObject);
1419 SWAP(fcn_args_capi,cb_fcn_in_lmdif__user__routines_args_capi,PyTupleObject);
1420 memcpy(&fcn_jmpbuf,&cb_fcn_in_lmdif__user__routines_jmpbuf,sizeof(jmp_buf));
1421 /* Processing variable x */
1422 ;
1423 capi_x_intent |= F2PY_INTENT_IN;
1424 capi_x_tmp = array_from_pyobj(NPY_FLOAT,x_Dims,x_Rank,capi_x_intent,x_capi);
1425 if (capi_x_tmp == NULL) {
1426 PyObject *exc, *val, *tb;
1427 PyErr_Fetch(&exc, &val, &tb);
1428 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 2nd argument `x' of fitacf_fit_short.lmdif to C/Fortran array" );
1429 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1430 } else {
1431 x = (float *)(PyArray_DATA(capi_x_tmp));
1432
1433 /* Processing variable fvec */
1434 ;
1435 capi_fvec_intent |= F2PY_INTENT_IN;
1436 capi_fvec_tmp = array_from_pyobj(NPY_FLOAT,fvec_Dims,fvec_Rank,capi_fvec_intent,fvec_capi);
1437 if (capi_fvec_tmp == NULL) {
1438 PyObject *exc, *val, *tb;
1439 PyErr_Fetch(&exc, &val, &tb);
1440 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 3rd argument `fvec' of fitacf_fit_short.lmdif to C/Fortran array" );
1441 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1442 } else {
1443 fvec = (float *)(PyArray_DATA(capi_fvec_tmp));
1444
1445 /* Processing variable ftol */
1446 f2py_success = float_from_pyobj(&ftol,ftol_capi,"fitacf_fit_short.lmdif() 4th argument (ftol) can't be converted to float");
1447 if (f2py_success) {
1448 /* Processing variable xtol */
1449 f2py_success = float_from_pyobj(&xtol,xtol_capi,"fitacf_fit_short.lmdif() 5th argument (xtol) can't be converted to float");
1450 if (f2py_success) {
1451 /* Processing variable gtol */
1452 f2py_success = float_from_pyobj(&gtol,gtol_capi,"fitacf_fit_short.lmdif() 6th argument (gtol) can't be converted to float");
1453 if (f2py_success) {
1454 /* Processing variable maxfev */
1455 f2py_success = int_from_pyobj(&maxfev,maxfev_capi,"fitacf_fit_short.lmdif() 7th argument (maxfev) can't be converted to int");
1456 if (f2py_success) {
1457 /* Processing variable epsfcn */
1458 f2py_success = float_from_pyobj(&epsfcn,epsfcn_capi,"fitacf_fit_short.lmdif() 8th argument (epsfcn) can't be converted to float");
1459 if (f2py_success) {
1460 /* Processing variable mode */
1461 f2py_success = int_from_pyobj(&mode,mode_capi,"fitacf_fit_short.lmdif() 10th argument (mode) can't be converted to int");
1462 if (f2py_success) {
1463 /* Processing variable factor */
1464 f2py_success = float_from_pyobj(&factor,factor_capi,"fitacf_fit_short.lmdif() 11st argument (factor) can't be converted to float");
1465 if (f2py_success) {
1466 /* Processing variable nprint */
1467 f2py_success = int_from_pyobj(&nprint,nprint_capi,"fitacf_fit_short.lmdif() 12nd argument (nprint) can't be converted to int");
1468 if (f2py_success) {
1469 /* Processing variable info */
1470 f2py_success = int_from_pyobj(&info,info_capi,"fitacf_fit_short.lmdif() 13rd argument (info) can't be converted to int");
1471 if (f2py_success) {
1472 /* Processing variable nfev */
1473 f2py_success = int_from_pyobj(&nfev,nfev_capi,"fitacf_fit_short.lmdif() 14th argument (nfev) can't be converted to int");
1474 if (f2py_success) {
1475 /* Processing variable m */
1476 if (m_capi == Py_None) m = len(fvec); else
1477 f2py_success = int_from_pyobj(&m,m_capi,"fitacf_fit_short.lmdif() 1st keyword (m) can't be converted to int");
1478 if (f2py_success) {
1479 CHECKSCALAR(len(fvec)>=m,"len(fvec)>=m","1st keyword m","lmdif:m=%d",m) {
1480 /* Processing variable n */
1481 if (n_capi == Py_None) n = len(x); else
1482 f2py_success = int_from_pyobj(&n,n_capi,"fitacf_fit_short.lmdif() 2nd keyword (n) can't be converted to int");
1483 if (f2py_success) {
1484 CHECKSCALAR(len(x)>=n,"len(x)>=n","2nd keyword n","lmdif:n=%d",n) {
1485 /* Processing variable diag */
1486 diag_Dims[0]=n;
1487 capi_diag_intent |= F2PY_INTENT_IN;
1488 capi_diag_tmp = array_from_pyobj(NPY_FLOAT,diag_Dims,diag_Rank,capi_diag_intent,diag_capi);
1489 if (capi_diag_tmp == NULL) {
1490 PyObject *exc, *val, *tb;
1491 PyErr_Fetch(&exc, &val, &tb);
1492 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 9th argument `diag' of fitacf_fit_short.lmdif to C/Fortran array" );
1493 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1494 } else {
1495 diag = (float *)(PyArray_DATA(capi_diag_tmp));
1496
1497 /* Processing variable fjac */
1498 fjac_Dims[1]=n;
1499 capi_fjac_intent |= F2PY_INTENT_IN;
1500 capi_fjac_tmp = array_from_pyobj(NPY_FLOAT,fjac_Dims,fjac_Rank,capi_fjac_intent,fjac_capi);
1501 if (capi_fjac_tmp == NULL) {
1502 PyObject *exc, *val, *tb;
1503 PyErr_Fetch(&exc, &val, &tb);
1504 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 15th argument `fjac' of fitacf_fit_short.lmdif to C/Fortran array" );
1505 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1506 } else {
1507 fjac = (float *)(PyArray_DATA(capi_fjac_tmp));
1508
1509 /* Processing variable ldfjac */
1510 if (ldfjac_capi == Py_None) ldfjac = shape(fjac,0); else
1511 f2py_success = int_from_pyobj(&ldfjac,ldfjac_capi,"fitacf_fit_short.lmdif() 3rd keyword (ldfjac) can't be converted to int");
1512 if (f2py_success) {
1513 CHECKSCALAR(shape(fjac,0)==ldfjac,"shape(fjac,0)==ldfjac","3rd keyword ldfjac","lmdif:ldfjac=%d",ldfjac) {
1514 /* Processing variable ipvt */
1515 ipvt_Dims[0]=n;
1516 capi_ipvt_intent |= F2PY_INTENT_IN;
1517 capi_ipvt_tmp = array_from_pyobj(NPY_INT,ipvt_Dims,ipvt_Rank,capi_ipvt_intent,ipvt_capi);
1518 if (capi_ipvt_tmp == NULL) {
1519 PyObject *exc, *val, *tb;
1520 PyErr_Fetch(&exc, &val, &tb);
1521 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 16th argument `ipvt' of fitacf_fit_short.lmdif to C/Fortran array" );
1522 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1523 } else {
1524 ipvt = (int *)(PyArray_DATA(capi_ipvt_tmp));
1525
1526 /* Processing variable qtf */
1527 qtf_Dims[0]=n;
1528 capi_qtf_intent |= F2PY_INTENT_IN;
1529 capi_qtf_tmp = array_from_pyobj(NPY_FLOAT,qtf_Dims,qtf_Rank,capi_qtf_intent,qtf_capi);
1530 if (capi_qtf_tmp == NULL) {
1531 PyObject *exc, *val, *tb;
1532 PyErr_Fetch(&exc, &val, &tb);
1533 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 17th argument `qtf' of fitacf_fit_short.lmdif to C/Fortran array" );
1534 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1535 } else {
1536 qtf = (float *)(PyArray_DATA(capi_qtf_tmp));
1537
1538 /* Processing variable wa1 */
1539 wa1_Dims[0]=n;
1540 capi_wa1_intent |= F2PY_INTENT_IN;
1541 capi_wa1_tmp = array_from_pyobj(NPY_FLOAT,wa1_Dims,wa1_Rank,capi_wa1_intent,wa1_capi);
1542 if (capi_wa1_tmp == NULL) {
1543 PyObject *exc, *val, *tb;
1544 PyErr_Fetch(&exc, &val, &tb);
1545 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 18th argument `wa1' of fitacf_fit_short.lmdif to C/Fortran array" );
1546 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1547 } else {
1548 wa1 = (float *)(PyArray_DATA(capi_wa1_tmp));
1549
1550 /* Processing variable wa2 */
1551 wa2_Dims[0]=n;
1552 capi_wa2_intent |= F2PY_INTENT_IN;
1553 capi_wa2_tmp = array_from_pyobj(NPY_FLOAT,wa2_Dims,wa2_Rank,capi_wa2_intent,wa2_capi);
1554 if (capi_wa2_tmp == NULL) {
1555 PyObject *exc, *val, *tb;
1556 PyErr_Fetch(&exc, &val, &tb);
1557 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 19th argument `wa2' of fitacf_fit_short.lmdif to C/Fortran array" );
1558 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1559 } else {
1560 wa2 = (float *)(PyArray_DATA(capi_wa2_tmp));
1561
1562 /* Processing variable wa3 */
1563 wa3_Dims[0]=n;
1564 capi_wa3_intent |= F2PY_INTENT_IN;
1565 capi_wa3_tmp = array_from_pyobj(NPY_FLOAT,wa3_Dims,wa3_Rank,capi_wa3_intent,wa3_capi);
1566 if (capi_wa3_tmp == NULL) {
1567 PyObject *exc, *val, *tb;
1568 PyErr_Fetch(&exc, &val, &tb);
1569 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 20th argument `wa3' of fitacf_fit_short.lmdif to C/Fortran array" );
1570 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1571 } else {
1572 wa3 = (float *)(PyArray_DATA(capi_wa3_tmp));
1573
1574 /* Processing variable wa4 */
1575 wa4_Dims[0]=m;
1576 capi_wa4_intent |= F2PY_INTENT_IN;
1577 capi_wa4_tmp = array_from_pyobj(NPY_FLOAT,wa4_Dims,wa4_Rank,capi_wa4_intent,wa4_capi);
1578 if (capi_wa4_tmp == NULL) {
1579 PyObject *exc, *val, *tb;
1580 PyErr_Fetch(&exc, &val, &tb);
1581 PyErr_SetString(exc ? exc : fitacf_fit_short_error,"failed in converting 21st argument `wa4' of fitacf_fit_short.lmdif to C/Fortran array" );
1582 npy_PyErr_ChainExceptionsCause(exc, val, tb);
1583 } else {
1584 wa4 = (float *)(PyArray_DATA(capi_wa4_tmp));
1585
1586 /*end of frompyobj*/
1587 #ifdef F2PY_REPORT_ATEXIT
1588 f2py_start_call_clock();
1589 #endif
1590 /*callfortranroutine*/
1591 if ((setjmp(cb_fcn_in_lmdif__user__routines_jmpbuf))) {
1592 f2py_success = 0;
1593 } else {
1594 (*f2py_func)(fcn_cptr,&m,&n,x,fvec,&ftol,&xtol,&gtol,&maxfev,&epsfcn,diag,&mode,&factor,&nprint,&info,&nfev,fjac,&ldfjac,ipvt,qtf,wa1,wa2,wa3,wa4);
1595 }
1596 if (PyErr_Occurred())
1597 f2py_success = 0;
1598 #ifdef F2PY_REPORT_ATEXIT
1599 f2py_stop_call_clock();
1600 #endif
1601 /*end of callfortranroutine*/
1602 if (f2py_success) {
1603 /*pyobjfrom*/
1604 /*end of pyobjfrom*/
1605 CFUNCSMESS("Building return value.\n");
1606 capi_buildvalue = Py_BuildValue("");
1607 /*closepyobjfrom*/
1608 /*end of closepyobjfrom*/
1609 } /*if (f2py_success) after callfortranroutine*/
1610 /*cleanupfrompyobj*/
1611 if((PyObject *)capi_wa4_tmp!=wa4_capi) {
1612 Py_XDECREF(capi_wa4_tmp); }
1613 } /*if (capi_wa4_tmp == NULL) ... else of wa4*/
1614 /* End of cleaning variable wa4 */
1615 if((PyObject *)capi_wa3_tmp!=wa3_capi) {
1616 Py_XDECREF(capi_wa3_tmp); }
1617 } /*if (capi_wa3_tmp == NULL) ... else of wa3*/
1618 /* End of cleaning variable wa3 */
1619 if((PyObject *)capi_wa2_tmp!=wa2_capi) {
1620 Py_XDECREF(capi_wa2_tmp); }
1621 } /*if (capi_wa2_tmp == NULL) ... else of wa2*/
1622 /* End of cleaning variable wa2 */
1623 if((PyObject *)capi_wa1_tmp!=wa1_capi) {
1624 Py_XDECREF(capi_wa1_tmp); }
1625 } /*if (capi_wa1_tmp == NULL) ... else of wa1*/
1626 /* End of cleaning variable wa1 */
1627 if((PyObject *)capi_qtf_tmp!=qtf_capi) {
1628 Py_XDECREF(capi_qtf_tmp); }
1629 } /*if (capi_qtf_tmp == NULL) ... else of qtf*/
1630 /* End of cleaning variable qtf */
1631 if((PyObject *)capi_ipvt_tmp!=ipvt_capi) {
1632 Py_XDECREF(capi_ipvt_tmp); }
1633 } /*if (capi_ipvt_tmp == NULL) ... else of ipvt*/
1634 /* End of cleaning variable ipvt */
1635 } /*CHECKSCALAR(shape(fjac,0)==ldfjac)*/
1636 } /*if (f2py_success) of ldfjac*/
1637 /* End of cleaning variable ldfjac */
1638 if((PyObject *)capi_fjac_tmp!=fjac_capi) {
1639 Py_XDECREF(capi_fjac_tmp); }
1640 } /*if (capi_fjac_tmp == NULL) ... else of fjac*/
1641 /* End of cleaning variable fjac */
1642 if((PyObject *)capi_diag_tmp!=diag_capi) {
1643 Py_XDECREF(capi_diag_tmp); }
1644 } /*if (capi_diag_tmp == NULL) ... else of diag*/
1645 /* End of cleaning variable diag */
1646 } /*CHECKSCALAR(len(x)>=n)*/
1647 } /*if (f2py_success) of n*/
1648 /* End of cleaning variable n */
1649 } /*CHECKSCALAR(len(fvec)>=m)*/
1650 } /*if (f2py_success) of m*/
1651 /* End of cleaning variable m */
1652 } /*if (f2py_success) of nfev*/
1653 /* End of cleaning variable nfev */
1654 } /*if (f2py_success) of info*/
1655 /* End of cleaning variable info */
1656 } /*if (f2py_success) of nprint*/
1657 /* End of cleaning variable nprint */
1658 } /*if (f2py_success) of factor*/
1659 /* End of cleaning variable factor */
1660 } /*if (f2py_success) of mode*/
1661 /* End of cleaning variable mode */
1662 } /*if (f2py_success) of epsfcn*/
1663 /* End of cleaning variable epsfcn */
1664 } /*if (f2py_success) of maxfev*/
1665 /* End of cleaning variable maxfev */
1666 } /*if (f2py_success) of gtol*/
1667 /* End of cleaning variable gtol */
1668 } /*if (f2py_success) of xtol*/
1669 /* End of cleaning variable xtol */
1670 } /*if (f2py_success) of ftol*/
1671 /* End of cleaning variable ftol */
1672 if((PyObject *)capi_fvec_tmp!=fvec_capi) {
1673 Py_XDECREF(capi_fvec_tmp); }
1674 } /*if (capi_fvec_tmp == NULL) ... else of fvec*/
1675 /* End of cleaning variable fvec */
1676 if((PyObject *)capi_x_tmp!=x_capi) {
1677 Py_XDECREF(capi_x_tmp); }
1678 } /*if (capi_x_tmp == NULL) ... else of x*/
1679 /* End of cleaning variable x */
1680 CFUNCSMESS("Restoring jmpbuf for `fcn`.\n");
1681 cb_fcn_in_lmdif__user__routines_capi = fcn_capi;
1682 Py_DECREF(cb_fcn_in_lmdif__user__routines_args_capi);
1683 cb_fcn_in_lmdif__user__routines_args_capi = fcn_args_capi;
1684 cb_fcn_in_lmdif__user__routines_nofargs = fcn_nofargs_capi;
1685 memcpy(&cb_fcn_in_lmdif__user__routines_jmpbuf,&fcn_jmpbuf,sizeof(jmp_buf));
1686 }
1687 /* End of cleaning variable fcn */
1688 /*end of cleanupfrompyobj*/
1689 if (capi_buildvalue == NULL) {
1690 /*routdebugfailure*/
1691 } else {
1692 /*routdebugleave*/
1693 }
1694 CFUNCSMESS("Freeing memory.\n");
1695 /*freemem*/
1696 #ifdef F2PY_REPORT_ATEXIT
1697 f2py_stop_clock();
1698 #endif
1699 return capi_buildvalue;
1700 }
1701 /******************************** end of lmdif ********************************/
1702
1703 /*********************************** spmpar ***********************************/
1704 static char doc_f2py_rout_fitacf_fit_short_spmpar[] = "\
1705 spmpar = spmpar(i)\n\nWrapper for ``spmpar``.\
1706 \n\nParameters\n----------\n"
1707 "i : input int\n"
1708 "\nReturns\n-------\n"
1709 "spmpar : float";
1710 /* extern void F_WRAPPEDFUNC(spmpar,SPMPAR)(float*,int*); */
1711 static PyObject *f2py_rout_fitacf_fit_short_spmpar(const PyObject *capi_self,
1712 PyObject *capi_args,
1713 PyObject *capi_keywds,
1714 void (*f2py_func)(float*,int*)) {
1715 PyObject * volatile capi_buildvalue = NULL;
1716 volatile int f2py_success = 1;
1717 /*decl*/
1718
1719 float spmpar = 0;
1720 int i = 0;
1721 PyObject *i_capi = Py_None;
1722 static char *capi_kwlist[] = {"i",NULL};
1723
1724 /*routdebugenter*/
1725 #ifdef F2PY_REPORT_ATEXIT
1726 f2py_start_clock();
1727 #endif
1728 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
1729 "O|:fitacf_fit_short.spmpar",\
1730 capi_kwlist,&i_capi))
1731 return NULL;
1732 /*frompyobj*/
1733 /* Processing variable i */
1734 f2py_success = int_from_pyobj(&i,i_capi,"fitacf_fit_short.spmpar() 1st argument (i) can't be converted to int");
1735 if (f2py_success) {
1736 /* Processing variable spmpar */
1737 /*end of frompyobj*/
1738 #ifdef F2PY_REPORT_ATEXIT
1739 f2py_start_call_clock();
1740 #endif
1741 /*callfortranroutine*/
1742 (*f2py_func)(&spmpar,&i);
1743 if (PyErr_Occurred())
1744 f2py_success = 0;
1745 #ifdef F2PY_REPORT_ATEXIT
1746 f2py_stop_call_clock();
1747 #endif
1748 /*end of callfortranroutine*/
1749 if (f2py_success) {
1750 /*pyobjfrom*/
1751 /*end of pyobjfrom*/
1752 CFUNCSMESS("Building return value.\n");
1753 capi_buildvalue = Py_BuildValue("f",spmpar);
1754 /*closepyobjfrom*/
1755 /*end of closepyobjfrom*/
1756 } /*if (f2py_success) after callfortranroutine*/
1757 /*cleanupfrompyobj*/
1758 /* End of cleaning variable spmpar */
1759 } /*if (f2py_success) of i*/
1760 /* End of cleaning variable i */
1761 /*end of cleanupfrompyobj*/
1762 if (capi_buildvalue == NULL) {
1763 /*routdebugfailure*/
1764 } else {
1765 /*routdebugleave*/
1766 }
1767 CFUNCSMESS("Freeing memory.\n");
1768 /*freemem*/
1769 #ifdef F2PY_REPORT_ATEXIT
1770 f2py_stop_clock();
1771 #endif
1772 return capi_buildvalue;
1773 }
1774 /******************************* end of spmpar *******************************/
1775 /*eof body*/
1776
1777 /******************* See f2py2e/f90mod_rules.py: buildhooks *******************/
1778 /*need_f90modhooks*/
1779
1780 /************** See f2py2e/rules.py: module_rules['modulebody'] **************/
1781
1782 /******************* See f2py2e/common_rules.py: buildhooks *******************/
1783
1784 static FortranDataDef f2py_spec_def[] = {
1785 {"te",0,{{-1}},NPY_FLOAT},
1786 {"ti",1,{{10}},NPY_FLOAT},
1787 {"fi",1,{{10}},NPY_FLOAT},
1788 {"ven",0,{{-1}},NPY_FLOAT},
1789 {"vin",1,{{10}},NPY_FLOAT},
1790 {"alpha",0,{{-1}},NPY_FLOAT},
1791 {"dens",0,{{-1}},NPY_FLOAT},
1792 {"bfld",0,{{-1}},NPY_FLOAT},
1793 {"nion",0,{{-1}},NPY_INT},
1794 {"wi",1,{{10}},NPY_INT},
1795 {"ak",0,{{-1}},NPY_FLOAT},
1796 {NULL}
1797 };
1798 static void f2py_setup_spec(char *te,char *ti,char *fi,char *ven,char *vin,char *alpha,char *dens,char *bfld,char *nion,char *wi,char *ak) {
1799 int i_f2py=0;
1800 f2py_spec_def[i_f2py++].data = te;
1801 f2py_spec_def[i_f2py++].data = ti;
1802 f2py_spec_def[i_f2py++].data = fi;
1803 f2py_spec_def[i_f2py++].data = ven;
1804 f2py_spec_def[i_f2py++].data = vin;
1805 f2py_spec_def[i_f2py++].data = alpha;
1806 f2py_spec_def[i_f2py++].data = dens;
1807 f2py_spec_def[i_f2py++].data = bfld;
1808 f2py_spec_def[i_f2py++].data = nion;
1809 f2py_spec_def[i_f2py++].data = wi;
1810 f2py_spec_def[i_f2py++].data = ak;
1811 }
1812 extern void F_FUNC(f2pyinitspec,F2PYINITSPEC)(void(*)(char*,char*,char*,char*,char*,char*,char*,char*,char*,char*,char*));
1813 static void f2py_init_spec(void) {
1814 F_FUNC(f2pyinitspec,F2PYINITSPEC)(f2py_setup_spec);
1815 }
1816
1817 static FortranDataDef f2py_mode_def[] = {
1818 {"imode",0,{{-1}},NPY_INT},
1819 {NULL}
1820 };
1821 static void f2py_setup_mode(char *imode) {
1822 int i_f2py=0;
1823 f2py_mode_def[i_f2py++].data = imode;
1824 }
1825 extern void F_FUNC(f2pyinitmode,F2PYINITMODE)(void(*)(char*));
1826 static void f2py_init_mode(void) {
1827 F_FUNC(f2pyinitmode,F2PYINITMODE)(f2py_setup_mode);
1828 }
1829
1830 static FortranDataDef f2py_fitter_def[] = {
1831 {"tau",1,{{100}},NPY_FLOAT},
1832 {"rho",1,{{100}},NPY_FLOAT},
1833 {"sigma2",1,{{100}},NPY_FLOAT},
1834 {"params",1,{{10}},NPY_FLOAT},
1835 {"ifit",1,{{10}},NPY_INT},
1836 {NULL}
1837 };
1838 static void f2py_setup_fitter(char *tau,char *rho,char *sigma2,char *params,char *ifit) {
1839 int i_f2py=0;
1840 f2py_fitter_def[i_f2py++].data = tau;
1841 f2py_fitter_def[i_f2py++].data = rho;
1842 f2py_fitter_def[i_f2py++].data = sigma2;
1843 f2py_fitter_def[i_f2py++].data = params;
1844 f2py_fitter_def[i_f2py++].data = ifit;
1845 }
1846 extern void F_FUNC(f2pyinitfitter,F2PYINITFITTER)(void(*)(char*,char*,char*,char*,char*));
1847 static void f2py_init_fitter(void) {
1848 F_FUNC(f2pyinitfitter,F2PYINITFITTER)(f2py_setup_fitter);
1849 }
1850
1851 static FortranDataDef f2py_trans_def[] = {
1852 {"ev",1,{{10000}},NPY_FLOAT},
1853 {NULL}
1854 };
1855 static void f2py_setup_trans(char *ev) {
1856 int i_f2py=0;
1857 f2py_trans_def[i_f2py++].data = ev;
1858 }
1859 extern void F_FUNC(f2pyinittrans,F2PYINITTRANS)(void(*)(char*));
1860 static void f2py_init_trans(void) {
1861 F_FUNC(f2pyinittrans,F2PYINITTRANS)(f2py_setup_trans);
1862 }
1863
1864 /*need_commonhooks*/
1865
1866 /**************************** See f2py2e/rules.py ****************************/
1867
1868 static FortranDataDef f2py_routine_defs[] = {
1869 {"fit",-1,{{-1}},0,(char *)F_FUNC(fit,FIT),(f2py_init_func)f2py_rout_fitacf_fit_short_fit,doc_f2py_rout_fitacf_fit_short_fit},
1870 {"spect1",-1,{{-1}},0,(char *)F_WRAPPEDFUNC(spect1,SPECT1),(f2py_init_func)f2py_rout_fitacf_fit_short_spect1,doc_f2py_rout_fitacf_fit_short_spect1},
1871 {"gaussq",-1,{{-1}},0,(char *)F_FUNC(gaussq,GAUSSQ),(f2py_init_func)f2py_rout_fitacf_fit_short_gaussq,doc_f2py_rout_fitacf_fit_short_gaussq},
1872 {"lmdif1",-1,{{-1}},0,(char *)F_FUNC(lmdif1,LMDIF1),(f2py_init_func)f2py_rout_fitacf_fit_short_lmdif1,doc_f2py_rout_fitacf_fit_short_lmdif1},
1873 {"lmdif",-1,{{-1}},0,(char *)F_FUNC(lmdif,LMDIF),(f2py_init_func)f2py_rout_fitacf_fit_short_lmdif,doc_f2py_rout_fitacf_fit_short_lmdif},
1874 {"spmpar",-1,{{-1}},0,(char *)F_WRAPPEDFUNC(spmpar,SPMPAR),(f2py_init_func)f2py_rout_fitacf_fit_short_spmpar,doc_f2py_rout_fitacf_fit_short_spmpar},
1875
1876 /*eof routine_defs*/
1877 {NULL}
1878 };
1879
1880 static PyMethodDef f2py_module_methods[] = {
1881
1882 {NULL,NULL}
1883 };
1884
1885 static struct PyModuleDef moduledef = {
1886 PyModuleDef_HEAD_INIT,
1887 "fitacf_fit_short",
1888 NULL,
1889 -1,
1890 f2py_module_methods,
1891 NULL,
1892 NULL,
1893 NULL,
1894 NULL
1895 };
1896
1897 PyMODINIT_FUNC PyInit_fitacf_fit_short(void) {
1898 int i;
1899 PyObject *m,*d, *s, *tmp;
1900 m = fitacf_fit_short_module = PyModule_Create(&moduledef);
1901 Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
1902 import_array();
1903 if (PyErr_Occurred())
1904 {PyErr_SetString(PyExc_ImportError, "can't initialize module fitacf_fit_short (failed to import numpy)"); return m;}
1905 d = PyModule_GetDict(m);
1906 s = PyString_FromString("$Revision: $");
1907 PyDict_SetItemString(d, "__version__", s);
1908 Py_DECREF(s);
1909 s = PyUnicode_FromString(
1910 "This module 'fitacf_fit_short' is auto-generated with f2py (version:2).\nFunctions:\n"
1911 " cinv,sigma2p,paramp,ebp,ist = fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,bfldp,alphap,densp,alt,time,ifitp,ist,nl=len(taup))\n"
1912 " spect1 = spect1(omega)\n"
1913 " gaussq(tau,acf)\n"
1914 " lmdif1(fcn,x,fvec,tol,info,iwa,wa,m=len(fvec),n=len(x),lwa=len(wa),fcn_extra_args=())\n"
1915 " lmdif(fcn,x,fvec,ftol,xtol,gtol,maxfev,epsfcn,diag,mode,factor,nprint,info,nfev,fjac,ipvt,qtf,wa1,wa2,wa3,wa4,m=len(fvec),n=len(x),ldfjac=shape(fjac,0),fcn_extra_args=())\n"
1916 " spmpar = spmpar(i)\n"
1917 "COMMON blocks:\n"" /spec/ te,ti(10),fi(10),ven,vin(10),alpha,dens,bfld,nion,wi(10),ak\n"" /mode/ imode\n"" /fitter/ tau(100),rho(100),sigma2(100),params(10),ifit(10)\n"" /trans/ ev(10000)\n"".");
1918 PyDict_SetItemString(d, "__doc__", s);
1919 Py_DECREF(s);
1920 fitacf_fit_short_error = PyErr_NewException ("fitacf_fit_short.error", NULL, NULL);
1921 /*
1922 * Store the error object inside the dict, so that it could get deallocated.
1923 * (in practice, this is a module, so it likely will not and cannot.)
1924 */
1925 PyDict_SetItemString(d, "_fitacf_fit_short_error", fitacf_fit_short_error);
1926 Py_DECREF(fitacf_fit_short_error);
1927 for(i=0;f2py_routine_defs[i].name!=NULL;i++) {
1928 tmp = PyFortranObject_NewAsAttr(&f2py_routine_defs[i]);
1929 PyDict_SetItemString(d, f2py_routine_defs[i].name, tmp);
1930 Py_DECREF(tmp);
1931 }
1932
1933
1934 {
1935 extern float F_FUNC(spect1,SPECT1)(void);
1936 PyObject* o = PyDict_GetItemString(d,"spect1");
1937 tmp = F2PyCapsule_FromVoidPtr((void*)F_FUNC(spect1,SPECT1),NULL);
1938 PyObject_SetAttrString(o,"_cpointer", tmp);
1939 Py_DECREF(tmp);
1940 s = PyUnicode_FromString("spect1");
1941 PyObject_SetAttrString(o,"__name__", s);
1942 Py_DECREF(s);
1943 }
1944
1945
1946
1947
1948
1949 {
1950 extern float F_FUNC(spmpar,SPMPAR)(void);
1951 PyObject* o = PyDict_GetItemString(d,"spmpar");
1952 tmp = F2PyCapsule_FromVoidPtr((void*)F_FUNC(spmpar,SPMPAR),NULL);
1953 PyObject_SetAttrString(o,"_cpointer", tmp);
1954 Py_DECREF(tmp);
1955 s = PyUnicode_FromString("spmpar");
1956 PyObject_SetAttrString(o,"__name__", s);
1957 Py_DECREF(s);
1958 }
1959
1960 /*eof initf2pywraphooks*/
1961 /*eof initf90modhooks*/
1962
1963 tmp = PyFortranObject_New(f2py_spec_def,f2py_init_spec);
1964 F2PyDict_SetItemString(d, "spec", tmp);
1965 Py_DECREF(tmp);
1966 tmp = PyFortranObject_New(f2py_mode_def,f2py_init_mode);
1967 F2PyDict_SetItemString(d, "mode", tmp);
1968 Py_DECREF(tmp);
1969 tmp = PyFortranObject_New(f2py_fitter_def,f2py_init_fitter);
1970 F2PyDict_SetItemString(d, "fitter", tmp);
1971 Py_DECREF(tmp);
1972 tmp = PyFortranObject_New(f2py_trans_def,f2py_init_trans);
1973 F2PyDict_SetItemString(d, "trans", tmp);
1974 Py_DECREF(tmp);
1975 /*eof initcommonhooks*/
1976
1977
1978 #ifdef F2PY_REPORT_ATEXIT
1979 if (! PyErr_Occurred())
1980 on_exit(f2py_report_on_exit,(void*)"fitacf_fit_short");
1981 #endif
1982 return m;
1983 }
1984 #ifdef __cplusplus
1985 }
1986 #endif
@@ -0,0 +1,20
1 C -*- fortran -*-
2 C This file is autogenerated with f2py (version:2)
3 C It contains Fortran 77 wrappers to fortran functions.
4
5 subroutine f2pywrapcdtr1 (cdtr1f2pywrap, depth)
6 external cdtr1
7 real depth
8 real cdtr1f2pywrap, cdtr1
9 cdtr1f2pywrap = cdtr1(depth)
10 end
11
12
13 subroutine f2pywrapczte1 (czte1f2pywrap, zlag, tr)
14 external czte1
15 real zlag
16 real tr
17 real czte1f2pywrap, czte1
18 czte1f2pywrap = czte1(zlag, tr)
19 end
20
This diff has been collapsed as it changes many lines, (871 lines changed) Show them Hide them
@@ -0,0 +1,871
1 /* File: fitacf_guessmodule.c
2 * This file is auto-generated with f2py (version:2).
3 * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition,
4 * written by Pearu Peterson <pearu@cens.ioc.ee>.
5 * Generation date: Wed Jan 8 13:23:37 2025
6 * Do not edit this file directly unless you know what you are doing!!!
7 */
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 /*********************** See f2py2e/cfuncs.py: includes ***********************/
14 #include "Python.h"
15 #include <stdarg.h>
16 #include "fortranobject.h"
17 #include <math.h>
18
19 /**************** See f2py2e/rules.py: mod_rules['modulebody'] ****************/
20 static PyObject *fitacf_guess_error;
21 static PyObject *fitacf_guess_module;
22
23 /*********************** See f2py2e/cfuncs.py: typedefs ***********************/
24 /*need_typedefs*/
25
26 /****************** See f2py2e/cfuncs.py: typedefs_generated ******************/
27 /*need_typedefs_generated*/
28
29 /********************** See f2py2e/cfuncs.py: cppmacros **********************/
30 #define PRINTPYOBJERR(obj)\
31 fprintf(stderr,"fitacf_guess.error is related to ");\
32 PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\
33 fprintf(stderr,"\n");
34
35 #define pyobj_from_float1(v) (PyFloat_FromDouble(v))
36 #if defined(PREPEND_FORTRAN)
37 #if defined(NO_APPEND_FORTRAN)
38 #if defined(UPPERCASE_FORTRAN)
39 #define F_FUNC(f,F) _##F
40 #else
41 #define F_FUNC(f,F) _##f
42 #endif
43 #else
44 #if defined(UPPERCASE_FORTRAN)
45 #define F_FUNC(f,F) _##F##_
46 #else
47 #define F_FUNC(f,F) _##f##_
48 #endif
49 #endif
50 #else
51 #if defined(NO_APPEND_FORTRAN)
52 #if defined(UPPERCASE_FORTRAN)
53 #define F_FUNC(f,F) F
54 #else
55 #define F_FUNC(f,F) f
56 #endif
57 #else
58 #if defined(UPPERCASE_FORTRAN)
59 #define F_FUNC(f,F) F##_
60 #else
61 #define F_FUNC(f,F) f##_
62 #endif
63 #endif
64 #endif
65 #if defined(UNDERSCORE_G77)
66 #define F_FUNC_US(f,F) F_FUNC(f##_,F##_)
67 #else
68 #define F_FUNC_US(f,F) F_FUNC(f,F)
69 #endif
70
71 #define rank(var) var ## _Rank
72 #define shape(var,dim) var ## _Dims[dim]
73 #define old_rank(var) (PyArray_NDIM((PyArrayObject *)(capi_ ## var ## _tmp)))
74 #define old_shape(var,dim) PyArray_DIM(((PyArrayObject *)(capi_ ## var ## _tmp)),dim)
75 #define fshape(var,dim) shape(var,rank(var)-dim-1)
76 #define len(var) shape(var,0)
77 #define flen(var) fshape(var,0)
78 #define old_size(var) PyArray_SIZE((PyArrayObject *)(capi_ ## var ## _tmp))
79 /* #define index(i) capi_i ## i */
80 #define slen(var) capi_ ## var ## _len
81 #define size(var, ...) f2py_size((PyArrayObject *)(capi_ ## var ## _tmp), ## __VA_ARGS__, -1)
82
83 #define CHECKSCALAR(check,tcheck,name,show,var)\
84 if (!(check)) {\
85 char errstring[256];\
86 sprintf(errstring, "%s: "show, "("tcheck") failed for "name, var);\
87 PyErr_SetString(fitacf_guess_error,errstring);\
88 /*goto capi_fail;*/\
89 } else
90 #ifdef DEBUGCFUNCS
91 #define CFUNCSMESS(mess) fprintf(stderr,"debug-capi:"mess);
92 #define CFUNCSMESSPY(mess,obj) CFUNCSMESS(mess) \
93 PyObject_Print((PyObject *)obj,stderr,Py_PRINT_RAW);\
94 fprintf(stderr,"\n");
95 #else
96 #define CFUNCSMESS(mess)
97 #define CFUNCSMESSPY(mess,obj)
98 #endif
99
100 #ifndef max
101 #define max(a,b) ((a > b) ? (a) : (b))
102 #endif
103 #ifndef min
104 #define min(a,b) ((a < b) ? (a) : (b))
105 #endif
106 #ifndef MAX
107 #define MAX(a,b) ((a > b) ? (a) : (b))
108 #endif
109 #ifndef MIN
110 #define MIN(a,b) ((a < b) ? (a) : (b))
111 #endif
112
113 #if defined(PREPEND_FORTRAN)
114 #if defined(NO_APPEND_FORTRAN)
115 #if defined(UPPERCASE_FORTRAN)
116 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F
117 #else
118 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f
119 #endif
120 #else
121 #if defined(UPPERCASE_FORTRAN)
122 #define F_WRAPPEDFUNC(f,F) _F2PYWRAP##F##_
123 #else
124 #define F_WRAPPEDFUNC(f,F) _f2pywrap##f##_
125 #endif
126 #endif
127 #else
128 #if defined(NO_APPEND_FORTRAN)
129 #if defined(UPPERCASE_FORTRAN)
130 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F
131 #else
132 #define F_WRAPPEDFUNC(f,F) f2pywrap##f
133 #endif
134 #else
135 #if defined(UPPERCASE_FORTRAN)
136 #define F_WRAPPEDFUNC(f,F) F2PYWRAP##F##_
137 #else
138 #define F_WRAPPEDFUNC(f,F) f2pywrap##f##_
139 #endif
140 #endif
141 #endif
142 #if defined(UNDERSCORE_G77)
143 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f##_,F##_)
144 #else
145 #define F_WRAPPEDFUNC_US(f,F) F_WRAPPEDFUNC(f,F)
146 #endif
147
148 /* New SciPy */
149 #define TRYPYARRAYTEMPLATECHAR case NPY_STRING: *(char *)(PyArray_DATA(arr))=*v; break;
150 #define TRYPYARRAYTEMPLATELONG case NPY_LONG: *(long *)(PyArray_DATA(arr))=*v; break;
151 #define TRYPYARRAYTEMPLATEOBJECT case NPY_OBJECT: PyArray_SETITEM(arr,PyArray_DATA(arr),pyobj_from_ ## ctype ## 1(*v)); break;
152
153 #define TRYPYARRAYTEMPLATE(ctype,typecode) \
154 PyArrayObject *arr = NULL;\
155 if (!obj) return -2;\
156 if (!PyArray_Check(obj)) return -1;\
157 if (!(arr=(PyArrayObject *)obj)) {fprintf(stderr,"TRYPYARRAYTEMPLATE:");PRINTPYOBJERR(obj);return 0;}\
158 if (PyArray_DESCR(arr)->type==typecode) {*(ctype *)(PyArray_DATA(arr))=*v; return 1;}\
159 switch (PyArray_TYPE(arr)) {\
160 case NPY_DOUBLE: *(double *)(PyArray_DATA(arr))=*v; break;\
161 case NPY_INT: *(int *)(PyArray_DATA(arr))=*v; break;\
162 case NPY_LONG: *(long *)(PyArray_DATA(arr))=*v; break;\
163 case NPY_FLOAT: *(float *)(PyArray_DATA(arr))=*v; break;\
164 case NPY_CDOUBLE: *(double *)(PyArray_DATA(arr))=*v; break;\
165 case NPY_CFLOAT: *(float *)(PyArray_DATA(arr))=*v; break;\
166 case NPY_BOOL: *(npy_bool *)(PyArray_DATA(arr))=(*v!=0); break;\
167 case NPY_UBYTE: *(unsigned char *)(PyArray_DATA(arr))=*v; break;\
168 case NPY_BYTE: *(signed char *)(PyArray_DATA(arr))=*v; break;\
169 case NPY_SHORT: *(short *)(PyArray_DATA(arr))=*v; break;\
170 case NPY_USHORT: *(npy_ushort *)(PyArray_DATA(arr))=*v; break;\
171 case NPY_UINT: *(npy_uint *)(PyArray_DATA(arr))=*v; break;\
172 case NPY_ULONG: *(npy_ulong *)(PyArray_DATA(arr))=*v; break;\
173 case NPY_LONGLONG: *(npy_longlong *)(PyArray_DATA(arr))=*v; break;\
174 case NPY_ULONGLONG: *(npy_ulonglong *)(PyArray_DATA(arr))=*v; break;\
175 case NPY_LONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=*v; break;\
176 case NPY_CLONGDOUBLE: *(npy_longdouble *)(PyArray_DATA(arr))=*v; break;\
177 case NPY_OBJECT: PyArray_SETITEM(arr, PyArray_DATA(arr), pyobj_from_ ## ctype ## 1(*v)); break;\
178 default: return -2;\
179 };\
180 return 1
181
182
183 /************************ See f2py2e/cfuncs.py: cfuncs ************************/
184 static int double_from_pyobj(double* v,PyObject *obj,const char *errmess) {
185 PyObject* tmp = NULL;
186 if (PyFloat_Check(obj)) {
187 #ifdef __sgi
188 *v = PyFloat_AsDouble(obj);
189 #else
190 *v = PyFloat_AS_DOUBLE(obj);
191 #endif
192 return 1;
193 }
194 tmp = PyNumber_Float(obj);
195 if (tmp) {
196 #ifdef __sgi
197 *v = PyFloat_AsDouble(tmp);
198 #else
199 *v = PyFloat_AS_DOUBLE(tmp);
200 #endif
201 Py_DECREF(tmp);
202 return 1;
203 }
204 if (PyComplex_Check(obj))
205 tmp = PyObject_GetAttrString(obj,"real");
206 else if (PyString_Check(obj) || PyUnicode_Check(obj))
207 /*pass*/;
208 else if (PySequence_Check(obj))
209 tmp = PySequence_GetItem(obj,0);
210 if (tmp) {
211 PyErr_Clear();
212 if (double_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
213 Py_DECREF(tmp);
214 }
215 {
216 PyObject* err = PyErr_Occurred();
217 if (err==NULL) err = fitacf_guess_error;
218 PyErr_SetString(err,errmess);
219 }
220 return 0;
221 }
222
223 static int f2py_size(PyArrayObject* var, ...)
224 {
225 npy_int sz = 0;
226 npy_int dim;
227 npy_int rank;
228 va_list argp;
229 va_start(argp, var);
230 dim = va_arg(argp, npy_int);
231 if (dim==-1)
232 {
233 sz = PyArray_SIZE(var);
234 }
235 else
236 {
237 rank = PyArray_NDIM(var);
238 if (dim>=1 && dim<=rank)
239 sz = PyArray_DIM(var, dim-1);
240 else
241 fprintf(stderr, "f2py_size: 2nd argument value=%d fails to satisfy 1<=value<=%d. Result will be 0.\n", dim, rank);
242 }
243 va_end(argp);
244 return sz;
245 }
246
247 static int try_pyarr_from_float(PyObject* obj,float* v) {
248 TRYPYARRAYTEMPLATE(float,'f');
249 }
250
251 static int float_from_pyobj(float* v,PyObject *obj,const char *errmess) {
252 double d=0.0;
253 if (double_from_pyobj(&d,obj,errmess)) {
254 *v = (float)d;
255 return 1;
256 }
257 return 0;
258 }
259
260 static int int_from_pyobj(int* v,PyObject *obj,const char *errmess) {
261 PyObject* tmp = NULL;
262 if (PyInt_Check(obj)) {
263 *v = (int)PyInt_AS_LONG(obj);
264 return 1;
265 }
266 tmp = PyNumber_Int(obj);
267 if (tmp) {
268 *v = PyInt_AS_LONG(tmp);
269 Py_DECREF(tmp);
270 return 1;
271 }
272 if (PyComplex_Check(obj))
273 tmp = PyObject_GetAttrString(obj,"real");
274 else if (PyString_Check(obj) || PyUnicode_Check(obj))
275 /*pass*/;
276 else if (PySequence_Check(obj))
277 tmp = PySequence_GetItem(obj,0);
278 if (tmp) {
279 PyErr_Clear();
280 if (int_from_pyobj(v,tmp,errmess)) {Py_DECREF(tmp); return 1;}
281 Py_DECREF(tmp);
282 }
283 {
284 PyObject* err = PyErr_Occurred();
285 if (err==NULL) err = fitacf_guess_error;
286 PyErr_SetString(err,errmess);
287 }
288 return 0;
289 }
290
291
292 /********************* See f2py2e/cfuncs.py: userincludes *********************/
293 /*need_userincludes*/
294
295 /********************* See f2py2e/capi_rules.py: usercode *********************/
296
297
298 /* See f2py2e/rules.py */
299 extern void F_FUNC(guess,GUESS)(float*,float*,int*,float*,float*,float*,float*);
300 extern void F_FUNC(parab1,PARAB1)(float*,float*,float*,float*,float*);
301 extern void F_WRAPPEDFUNC(cdtr1,CDTR1)(float*,float*);
302 extern void F_WRAPPEDFUNC(czte1,CZTE1)(float*,float*,float*);
303 /*eof externroutines*/
304
305 /******************** See f2py2e/capi_rules.py: usercode1 ********************/
306
307
308 /******************* See f2py2e/cb_rules.py: buildcallback *******************/
309 /*need_callbacks*/
310
311 /*********************** See f2py2e/rules.py: buildapi ***********************/
312
313 /*********************************** guess ***********************************/
314 static char doc_f2py_rout_fitacf_guess_guess[] = "\
315 guess(acf,tau,zero,amin,te,tr,[npts])\n\nWrapper for ``guess``.\
316 \n\nParameters\n----------\n"
317 "acf : input rank-1 array('f') with bounds (npts)\n"
318 "tau : input rank-1 array('f') with bounds (npts)\n"
319 "zero : in/output rank-0 array(float,'f')\n"
320 "amin : in/output rank-0 array(float,'f')\n"
321 "te : in/output rank-0 array(float,'f')\n"
322 "tr : in/output rank-0 array(float,'f')\n"
323 "\nOther Parameters\n----------------\n"
324 "npts : input int, optional\n Default: len(acf)";
325 /* extern void F_FUNC(guess,GUESS)(float*,float*,int*,float*,float*,float*,float*); */
326 static PyObject *f2py_rout_fitacf_guess_guess(const PyObject *capi_self,
327 PyObject *capi_args,
328 PyObject *capi_keywds,
329 void (*f2py_func)(float*,float*,int*,float*,float*,float*,float*)) {
330 PyObject * volatile capi_buildvalue = NULL;
331 volatile int f2py_success = 1;
332 /*decl*/
333
334 float *acf = NULL;
335 npy_intp acf_Dims[1] = {-1};
336 const int acf_Rank = 1;
337 PyArrayObject *capi_acf_tmp = NULL;
338 int capi_acf_intent = 0;
339 PyObject *acf_capi = Py_None;
340 float *tau = NULL;
341 npy_intp tau_Dims[1] = {-1};
342 const int tau_Rank = 1;
343 PyArrayObject *capi_tau_tmp = NULL;
344 int capi_tau_intent = 0;
345 PyObject *tau_capi = Py_None;
346 int npts = 0;
347 PyObject *npts_capi = Py_None;
348 float zero = 0;
349 PyObject *zero_capi = Py_None;
350 float amin = 0;
351 PyObject *amin_capi = Py_None;
352 float te = 0;
353 PyObject *te_capi = Py_None;
354 float tr = 0;
355 PyObject *tr_capi = Py_None;
356 static char *capi_kwlist[] = {"acf","tau","zero","amin","te","tr","npts",NULL};
357
358 /*routdebugenter*/
359 #ifdef F2PY_REPORT_ATEXIT
360 f2py_start_clock();
361 #endif
362 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
363 "OOOOOO|O:fitacf_guess.guess",\
364 capi_kwlist,&acf_capi,&tau_capi,&zero_capi,&amin_capi,&te_capi,&tr_capi,&npts_capi))
365 return NULL;
366 /*frompyobj*/
367 /* Processing variable acf */
368 ;
369 capi_acf_intent |= F2PY_INTENT_IN;
370 capi_acf_tmp = array_from_pyobj(NPY_FLOAT,acf_Dims,acf_Rank,capi_acf_intent,acf_capi);
371 if (capi_acf_tmp == NULL) {
372 PyObject *exc, *val, *tb;
373 PyErr_Fetch(&exc, &val, &tb);
374 PyErr_SetString(exc ? exc : fitacf_guess_error,"failed in converting 1st argument `acf' of fitacf_guess.guess to C/Fortran array" );
375 npy_PyErr_ChainExceptionsCause(exc, val, tb);
376 } else {
377 acf = (float *)(PyArray_DATA(capi_acf_tmp));
378
379 /* Processing variable zero */
380 f2py_success = float_from_pyobj(&zero,zero_capi,"fitacf_guess.guess() 3rd argument (zero) can't be converted to float");
381 if (f2py_success) {
382 /* Processing variable amin */
383 f2py_success = float_from_pyobj(&amin,amin_capi,"fitacf_guess.guess() 4th argument (amin) can't be converted to float");
384 if (f2py_success) {
385 /* Processing variable te */
386 f2py_success = float_from_pyobj(&te,te_capi,"fitacf_guess.guess() 5th argument (te) can't be converted to float");
387 if (f2py_success) {
388 /* Processing variable tr */
389 f2py_success = float_from_pyobj(&tr,tr_capi,"fitacf_guess.guess() 6th argument (tr) can't be converted to float");
390 if (f2py_success) {
391 /* Processing variable npts */
392 if (npts_capi == Py_None) npts = len(acf); else
393 f2py_success = int_from_pyobj(&npts,npts_capi,"fitacf_guess.guess() 1st keyword (npts) can't be converted to int");
394 if (f2py_success) {
395 CHECKSCALAR(len(acf)>=npts,"len(acf)>=npts","1st keyword npts","guess:npts=%d",npts) {
396 /* Processing variable tau */
397 tau_Dims[0]=npts;
398 capi_tau_intent |= F2PY_INTENT_IN;
399 capi_tau_tmp = array_from_pyobj(NPY_FLOAT,tau_Dims,tau_Rank,capi_tau_intent,tau_capi);
400 if (capi_tau_tmp == NULL) {
401 PyObject *exc, *val, *tb;
402 PyErr_Fetch(&exc, &val, &tb);
403 PyErr_SetString(exc ? exc : fitacf_guess_error,"failed in converting 2nd argument `tau' of fitacf_guess.guess to C/Fortran array" );
404 npy_PyErr_ChainExceptionsCause(exc, val, tb);
405 } else {
406 tau = (float *)(PyArray_DATA(capi_tau_tmp));
407
408 /*end of frompyobj*/
409 #ifdef F2PY_REPORT_ATEXIT
410 f2py_start_call_clock();
411 #endif
412 /*callfortranroutine*/
413 (*f2py_func)(acf,tau,&npts,&zero,&amin,&te,&tr);
414 if (PyErr_Occurred())
415 f2py_success = 0;
416 #ifdef F2PY_REPORT_ATEXIT
417 f2py_stop_call_clock();
418 #endif
419 /*end of callfortranroutine*/
420 if (f2py_success) {
421 /*pyobjfrom*/
422 f2py_success = try_pyarr_from_float(zero_capi,&zero);
423 if (f2py_success) {
424 f2py_success = try_pyarr_from_float(amin_capi,&amin);
425 if (f2py_success) {
426 f2py_success = try_pyarr_from_float(te_capi,&te);
427 if (f2py_success) {
428 f2py_success = try_pyarr_from_float(tr_capi,&tr);
429 if (f2py_success) {
430 /*end of pyobjfrom*/
431 CFUNCSMESS("Building return value.\n");
432 capi_buildvalue = Py_BuildValue("");
433 /*closepyobjfrom*/
434 } /*if (f2py_success) of tr pyobjfrom*/
435 } /*if (f2py_success) of te pyobjfrom*/
436 } /*if (f2py_success) of amin pyobjfrom*/
437 } /*if (f2py_success) of zero pyobjfrom*/
438 /*end of closepyobjfrom*/
439 } /*if (f2py_success) after callfortranroutine*/
440 /*cleanupfrompyobj*/
441 if((PyObject *)capi_tau_tmp!=tau_capi) {
442 Py_XDECREF(capi_tau_tmp); }
443 } /*if (capi_tau_tmp == NULL) ... else of tau*/
444 /* End of cleaning variable tau */
445 } /*CHECKSCALAR(len(acf)>=npts)*/
446 } /*if (f2py_success) of npts*/
447 /* End of cleaning variable npts */
448 } /*if (f2py_success) of tr*/
449 /* End of cleaning variable tr */
450 } /*if (f2py_success) of te*/
451 /* End of cleaning variable te */
452 } /*if (f2py_success) of amin*/
453 /* End of cleaning variable amin */
454 } /*if (f2py_success) of zero*/
455 /* End of cleaning variable zero */
456 if((PyObject *)capi_acf_tmp!=acf_capi) {
457 Py_XDECREF(capi_acf_tmp); }
458 } /*if (capi_acf_tmp == NULL) ... else of acf*/
459 /* End of cleaning variable acf */
460 /*end of cleanupfrompyobj*/
461 if (capi_buildvalue == NULL) {
462 /*routdebugfailure*/
463 } else {
464 /*routdebugleave*/
465 }
466 CFUNCSMESS("Freeing memory.\n");
467 /*freemem*/
468 #ifdef F2PY_REPORT_ATEXIT
469 f2py_stop_clock();
470 #endif
471 return capi_buildvalue;
472 }
473 /******************************** end of guess ********************************/
474
475 /*********************************** parab1 ***********************************/
476 static char doc_f2py_rout_fitacf_guess_parab1[] = "\
477 parab1(x,y,a,b,c)\n\nWrapper for ``parab1``.\
478 \n\nParameters\n----------\n"
479 "x : input rank-1 array('f') with bounds (3)\n"
480 "y : input rank-1 array('f') with bounds (3)\n"
481 "a : input float\n"
482 "b : input float\n"
483 "c : input float";
484 /* extern void F_FUNC(parab1,PARAB1)(float*,float*,float*,float*,float*); */
485 static PyObject *f2py_rout_fitacf_guess_parab1(const PyObject *capi_self,
486 PyObject *capi_args,
487 PyObject *capi_keywds,
488 void (*f2py_func)(float*,float*,float*,float*,float*)) {
489 PyObject * volatile capi_buildvalue = NULL;
490 volatile int f2py_success = 1;
491 /*decl*/
492
493 float *x = NULL;
494 npy_intp x_Dims[1] = {-1};
495 const int x_Rank = 1;
496 PyArrayObject *capi_x_tmp = NULL;
497 int capi_x_intent = 0;
498 PyObject *x_capi = Py_None;
499 float *y = NULL;
500 npy_intp y_Dims[1] = {-1};
501 const int y_Rank = 1;
502 PyArrayObject *capi_y_tmp = NULL;
503 int capi_y_intent = 0;
504 PyObject *y_capi = Py_None;
505 float a = 0;
506 PyObject *a_capi = Py_None;
507 float b = 0;
508 PyObject *b_capi = Py_None;
509 float c = 0;
510 PyObject *c_capi = Py_None;
511 static char *capi_kwlist[] = {"x","y","a","b","c",NULL};
512
513 /*routdebugenter*/
514 #ifdef F2PY_REPORT_ATEXIT
515 f2py_start_clock();
516 #endif
517 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
518 "OOOOO|:fitacf_guess.parab1",\
519 capi_kwlist,&x_capi,&y_capi,&a_capi,&b_capi,&c_capi))
520 return NULL;
521 /*frompyobj*/
522 /* Processing variable x */
523 x_Dims[0]=3;
524 capi_x_intent |= F2PY_INTENT_IN;
525 capi_x_tmp = array_from_pyobj(NPY_FLOAT,x_Dims,x_Rank,capi_x_intent,x_capi);
526 if (capi_x_tmp == NULL) {
527 PyObject *exc, *val, *tb;
528 PyErr_Fetch(&exc, &val, &tb);
529 PyErr_SetString(exc ? exc : fitacf_guess_error,"failed in converting 1st argument `x' of fitacf_guess.parab1 to C/Fortran array" );
530 npy_PyErr_ChainExceptionsCause(exc, val, tb);
531 } else {
532 x = (float *)(PyArray_DATA(capi_x_tmp));
533
534 /* Processing variable y */
535 y_Dims[0]=3;
536 capi_y_intent |= F2PY_INTENT_IN;
537 capi_y_tmp = array_from_pyobj(NPY_FLOAT,y_Dims,y_Rank,capi_y_intent,y_capi);
538 if (capi_y_tmp == NULL) {
539 PyObject *exc, *val, *tb;
540 PyErr_Fetch(&exc, &val, &tb);
541 PyErr_SetString(exc ? exc : fitacf_guess_error,"failed in converting 2nd argument `y' of fitacf_guess.parab1 to C/Fortran array" );
542 npy_PyErr_ChainExceptionsCause(exc, val, tb);
543 } else {
544 y = (float *)(PyArray_DATA(capi_y_tmp));
545
546 /* Processing variable a */
547 f2py_success = float_from_pyobj(&a,a_capi,"fitacf_guess.parab1() 3rd argument (a) can't be converted to float");
548 if (f2py_success) {
549 /* Processing variable b */
550 f2py_success = float_from_pyobj(&b,b_capi,"fitacf_guess.parab1() 4th argument (b) can't be converted to float");
551 if (f2py_success) {
552 /* Processing variable c */
553 f2py_success = float_from_pyobj(&c,c_capi,"fitacf_guess.parab1() 5th argument (c) can't be converted to float");
554 if (f2py_success) {
555 /*end of frompyobj*/
556 #ifdef F2PY_REPORT_ATEXIT
557 f2py_start_call_clock();
558 #endif
559 /*callfortranroutine*/
560 (*f2py_func)(x,y,&a,&b,&c);
561 if (PyErr_Occurred())
562 f2py_success = 0;
563 #ifdef F2PY_REPORT_ATEXIT
564 f2py_stop_call_clock();
565 #endif
566 /*end of callfortranroutine*/
567 if (f2py_success) {
568 /*pyobjfrom*/
569 /*end of pyobjfrom*/
570 CFUNCSMESS("Building return value.\n");
571 capi_buildvalue = Py_BuildValue("");
572 /*closepyobjfrom*/
573 /*end of closepyobjfrom*/
574 } /*if (f2py_success) after callfortranroutine*/
575 /*cleanupfrompyobj*/
576 } /*if (f2py_success) of c*/
577 /* End of cleaning variable c */
578 } /*if (f2py_success) of b*/
579 /* End of cleaning variable b */
580 } /*if (f2py_success) of a*/
581 /* End of cleaning variable a */
582 if((PyObject *)capi_y_tmp!=y_capi) {
583 Py_XDECREF(capi_y_tmp); }
584 } /*if (capi_y_tmp == NULL) ... else of y*/
585 /* End of cleaning variable y */
586 if((PyObject *)capi_x_tmp!=x_capi) {
587 Py_XDECREF(capi_x_tmp); }
588 } /*if (capi_x_tmp == NULL) ... else of x*/
589 /* End of cleaning variable x */
590 /*end of cleanupfrompyobj*/
591 if (capi_buildvalue == NULL) {
592 /*routdebugfailure*/
593 } else {
594 /*routdebugleave*/
595 }
596 CFUNCSMESS("Freeing memory.\n");
597 /*freemem*/
598 #ifdef F2PY_REPORT_ATEXIT
599 f2py_stop_clock();
600 #endif
601 return capi_buildvalue;
602 }
603 /******************************* end of parab1 *******************************/
604
605 /*********************************** cdtr1 ***********************************/
606 static char doc_f2py_rout_fitacf_guess_cdtr1[] = "\
607 cdtr1 = cdtr1(depth)\n\nWrapper for ``cdtr1``.\
608 \n\nParameters\n----------\n"
609 "depth : input float\n"
610 "\nReturns\n-------\n"
611 "cdtr1 : float";
612 /* extern void F_WRAPPEDFUNC(cdtr1,CDTR1)(float*,float*); */
613 static PyObject *f2py_rout_fitacf_guess_cdtr1(const PyObject *capi_self,
614 PyObject *capi_args,
615 PyObject *capi_keywds,
616 void (*f2py_func)(float*,float*)) {
617 PyObject * volatile capi_buildvalue = NULL;
618 volatile int f2py_success = 1;
619 /*decl*/
620
621 float cdtr1 = 0;
622 float depth = 0;
623 PyObject *depth_capi = Py_None;
624 static char *capi_kwlist[] = {"depth",NULL};
625
626 /*routdebugenter*/
627 #ifdef F2PY_REPORT_ATEXIT
628 f2py_start_clock();
629 #endif
630 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
631 "O|:fitacf_guess.cdtr1",\
632 capi_kwlist,&depth_capi))
633 return NULL;
634 /*frompyobj*/
635 /* Processing variable depth */
636 f2py_success = float_from_pyobj(&depth,depth_capi,"fitacf_guess.cdtr1() 1st argument (depth) can't be converted to float");
637 if (f2py_success) {
638 /* Processing variable cdtr1 */
639 /*end of frompyobj*/
640 #ifdef F2PY_REPORT_ATEXIT
641 f2py_start_call_clock();
642 #endif
643 /*callfortranroutine*/
644 (*f2py_func)(&cdtr1,&depth);
645 if (PyErr_Occurred())
646 f2py_success = 0;
647 #ifdef F2PY_REPORT_ATEXIT
648 f2py_stop_call_clock();
649 #endif
650 /*end of callfortranroutine*/
651 if (f2py_success) {
652 /*pyobjfrom*/
653 /*end of pyobjfrom*/
654 CFUNCSMESS("Building return value.\n");
655 capi_buildvalue = Py_BuildValue("f",cdtr1);
656 /*closepyobjfrom*/
657 /*end of closepyobjfrom*/
658 } /*if (f2py_success) after callfortranroutine*/
659 /*cleanupfrompyobj*/
660 /* End of cleaning variable cdtr1 */
661 } /*if (f2py_success) of depth*/
662 /* End of cleaning variable depth */
663 /*end of cleanupfrompyobj*/
664 if (capi_buildvalue == NULL) {
665 /*routdebugfailure*/
666 } else {
667 /*routdebugleave*/
668 }
669 CFUNCSMESS("Freeing memory.\n");
670 /*freemem*/
671 #ifdef F2PY_REPORT_ATEXIT
672 f2py_stop_clock();
673 #endif
674 return capi_buildvalue;
675 }
676 /******************************** end of cdtr1 ********************************/
677
678 /*********************************** czte1 ***********************************/
679 static char doc_f2py_rout_fitacf_guess_czte1[] = "\
680 czte1 = czte1(zlag,tr)\n\nWrapper for ``czte1``.\
681 \n\nParameters\n----------\n"
682 "zlag : input float\n"
683 "tr : input float\n"
684 "\nReturns\n-------\n"
685 "czte1 : float";
686 /* extern void F_WRAPPEDFUNC(czte1,CZTE1)(float*,float*,float*); */
687 static PyObject *f2py_rout_fitacf_guess_czte1(const PyObject *capi_self,
688 PyObject *capi_args,
689 PyObject *capi_keywds,
690 void (*f2py_func)(float*,float*,float*)) {
691 PyObject * volatile capi_buildvalue = NULL;
692 volatile int f2py_success = 1;
693 /*decl*/
694
695 float czte1 = 0;
696 float zlag = 0;
697 PyObject *zlag_capi = Py_None;
698 float tr = 0;
699 PyObject *tr_capi = Py_None;
700 static char *capi_kwlist[] = {"zlag","tr",NULL};
701
702 /*routdebugenter*/
703 #ifdef F2PY_REPORT_ATEXIT
704 f2py_start_clock();
705 #endif
706 if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
707 "OO|:fitacf_guess.czte1",\
708 capi_kwlist,&zlag_capi,&tr_capi))
709 return NULL;
710 /*frompyobj*/
711 /* Processing variable zlag */
712 f2py_success = float_from_pyobj(&zlag,zlag_capi,"fitacf_guess.czte1() 1st argument (zlag) can't be converted to float");
713 if (f2py_success) {
714 /* Processing variable tr */
715 f2py_success = float_from_pyobj(&tr,tr_capi,"fitacf_guess.czte1() 2nd argument (tr) can't be converted to float");
716 if (f2py_success) {
717 /* Processing variable czte1 */
718 /*end of frompyobj*/
719 #ifdef F2PY_REPORT_ATEXIT
720 f2py_start_call_clock();
721 #endif
722 /*callfortranroutine*/
723 (*f2py_func)(&czte1,&zlag,&tr);
724 if (PyErr_Occurred())
725 f2py_success = 0;
726 #ifdef F2PY_REPORT_ATEXIT
727 f2py_stop_call_clock();
728 #endif
729 /*end of callfortranroutine*/
730 if (f2py_success) {
731 /*pyobjfrom*/
732 /*end of pyobjfrom*/
733 CFUNCSMESS("Building return value.\n");
734 capi_buildvalue = Py_BuildValue("f",czte1);
735 /*closepyobjfrom*/
736 /*end of closepyobjfrom*/
737 } /*if (f2py_success) after callfortranroutine*/
738 /*cleanupfrompyobj*/
739 /* End of cleaning variable czte1 */
740 } /*if (f2py_success) of tr*/
741 /* End of cleaning variable tr */
742 } /*if (f2py_success) of zlag*/
743 /* End of cleaning variable zlag */
744 /*end of cleanupfrompyobj*/
745 if (capi_buildvalue == NULL) {
746 /*routdebugfailure*/
747 } else {
748 /*routdebugleave*/
749 }
750 CFUNCSMESS("Freeing memory.\n");
751 /*freemem*/
752 #ifdef F2PY_REPORT_ATEXIT
753 f2py_stop_clock();
754 #endif
755 return capi_buildvalue;
756 }
757 /******************************** end of czte1 ********************************/
758 /*eof body*/
759
760 /******************* See f2py2e/f90mod_rules.py: buildhooks *******************/
761 /*need_f90modhooks*/
762
763 /************** See f2py2e/rules.py: module_rules['modulebody'] **************/
764
765 /******************* See f2py2e/common_rules.py: buildhooks *******************/
766
767 /*need_commonhooks*/
768
769 /**************************** See f2py2e/rules.py ****************************/
770
771 static FortranDataDef f2py_routine_defs[] = {
772 {"guess",-1,{{-1}},0,(char *)F_FUNC(guess,GUESS),(f2py_init_func)f2py_rout_fitacf_guess_guess,doc_f2py_rout_fitacf_guess_guess},
773 {"parab1",-1,{{-1}},0,(char *)F_FUNC(parab1,PARAB1),(f2py_init_func)f2py_rout_fitacf_guess_parab1,doc_f2py_rout_fitacf_guess_parab1},
774 {"cdtr1",-1,{{-1}},0,(char *)F_WRAPPEDFUNC(cdtr1,CDTR1),(f2py_init_func)f2py_rout_fitacf_guess_cdtr1,doc_f2py_rout_fitacf_guess_cdtr1},
775 {"czte1",-1,{{-1}},0,(char *)F_WRAPPEDFUNC(czte1,CZTE1),(f2py_init_func)f2py_rout_fitacf_guess_czte1,doc_f2py_rout_fitacf_guess_czte1},
776
777 /*eof routine_defs*/
778 {NULL}
779 };
780
781 static PyMethodDef f2py_module_methods[] = {
782
783 {NULL,NULL}
784 };
785
786 static struct PyModuleDef moduledef = {
787 PyModuleDef_HEAD_INIT,
788 "fitacf_guess",
789 NULL,
790 -1,
791 f2py_module_methods,
792 NULL,
793 NULL,
794 NULL,
795 NULL
796 };
797
798 PyMODINIT_FUNC PyInit_fitacf_guess(void) {
799 int i;
800 PyObject *m,*d, *s, *tmp;
801 m = fitacf_guess_module = PyModule_Create(&moduledef);
802 Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
803 import_array();
804 if (PyErr_Occurred())
805 {PyErr_SetString(PyExc_ImportError, "can't initialize module fitacf_guess (failed to import numpy)"); return m;}
806 d = PyModule_GetDict(m);
807 s = PyString_FromString("$Revision: $");
808 PyDict_SetItemString(d, "__version__", s);
809 Py_DECREF(s);
810 s = PyUnicode_FromString(
811 "This module 'fitacf_guess' is auto-generated with f2py (version:2).\nFunctions:\n"
812 " guess(acf,tau,zero,amin,te,tr,npts=len(acf))\n"
813 " parab1(x,y,a,b,c)\n"
814 " cdtr1 = cdtr1(depth)\n"
815 " czte1 = czte1(zlag,tr)\n"
816 ".");
817 PyDict_SetItemString(d, "__doc__", s);
818 Py_DECREF(s);
819 fitacf_guess_error = PyErr_NewException ("fitacf_guess.error", NULL, NULL);
820 /*
821 * Store the error object inside the dict, so that it could get deallocated.
822 * (in practice, this is a module, so it likely will not and cannot.)
823 */
824 PyDict_SetItemString(d, "_fitacf_guess_error", fitacf_guess_error);
825 Py_DECREF(fitacf_guess_error);
826 for(i=0;f2py_routine_defs[i].name!=NULL;i++) {
827 tmp = PyFortranObject_NewAsAttr(&f2py_routine_defs[i]);
828 PyDict_SetItemString(d, f2py_routine_defs[i].name, tmp);
829 Py_DECREF(tmp);
830 }
831
832
833
834 {
835 extern float F_FUNC(cdtr1,CDTR1)(void);
836 PyObject* o = PyDict_GetItemString(d,"cdtr1");
837 tmp = F2PyCapsule_FromVoidPtr((void*)F_FUNC(cdtr1,CDTR1),NULL);
838 PyObject_SetAttrString(o,"_cpointer", tmp);
839 Py_DECREF(tmp);
840 s = PyUnicode_FromString("cdtr1");
841 PyObject_SetAttrString(o,"__name__", s);
842 Py_DECREF(s);
843 }
844
845
846 {
847 extern float F_FUNC(czte1,CZTE1)(void);
848 PyObject* o = PyDict_GetItemString(d,"czte1");
849 tmp = F2PyCapsule_FromVoidPtr((void*)F_FUNC(czte1,CZTE1),NULL);
850 PyObject_SetAttrString(o,"_cpointer", tmp);
851 Py_DECREF(tmp);
852 s = PyUnicode_FromString("czte1");
853 PyObject_SetAttrString(o,"__name__", s);
854 Py_DECREF(s);
855 }
856
857 /*eof initf2pywraphooks*/
858 /*eof initf90modhooks*/
859
860 /*eof initcommonhooks*/
861
862
863 #ifdef F2PY_REPORT_ATEXIT
864 if (! PyErr_Occurred())
865 on_exit(f2py_report_on_exit,(void*)"fitacf_guess");
866 #endif
867 return m;
868 }
869 #ifdef __cplusplus
870 }
871 #endif
@@ -0,0 +1,240
1 C -*- fortran -*-
2 C This file is autogenerated with f2py (version:2)
3 C It contains Fortran 77 wrappers to fortran functions.
4
5 subroutine f2pywrapenorm (enormf2pywrap, n, x)
6 external enorm
7 integer n
8 real x(n)
9 real enormf2pywrap, enorm
10 enormf2pywrap = enorm(n, x)
11 end
12
13
14 subroutine f2pywrapspmpar (spmparf2pywrap, i)
15 external spmpar
16 integer i
17 real spmparf2pywrap, spmpar
18 spmparf2pywrap = spmpar(i)
19 end
20
21
22 subroutine f2pywrapcdtr1 (cdtr1f2pywrap, depth)
23 external cdtr1
24 real depth
25 real cdtr1f2pywrap, cdtr1
26 cdtr1f2pywrap = cdtr1(depth)
27 end
28
29
30 subroutine f2pywrapczte1 (czte1f2pywrap, zlag, tr)
31 external czte1
32 real zlag
33 real tr
34 real czte1f2pywrap, czte1
35 czte1f2pywrap = czte1(zlag, tr)
36 end
37
38
39 subroutine f2pywrapcj_ion (cj_ionf2pywrap, theta, psi)
40 external cj_ion
41 real theta
42 real psi
43 complex cj_ionf2pywrap, cj_ion
44 cj_ionf2pywrap = cj_ion(theta, psi)
45 end
46
47
48 subroutine f2pywrapcj_electron (cj_electronf2pywrap, theta,
49 &phi, psi, alpha)
50 external cj_electron
51 real theta
52 real phi
53 real psi
54 real alpha
55 complex cj_electronf2pywrap, cj_electron
56 cj_electronf2pywrap = cj_electron(theta, phi, psi, alpha)
57 end
58
59
60 subroutine f2pywrapy_ion (y_ionf2pywrap, theta, psi)
61 external y_ion
62 real theta
63 real psi
64 complex y_ionf2pywrap, y_ion
65 y_ionf2pywrap = y_ion(theta, psi)
66 end
67
68
69 subroutine f2pywrapy_electron (y_electronf2pywrap, theta, ph
70 &i, psi, alpha)
71 external y_electron
72 real theta
73 real phi
74 real psi
75 real alpha
76 complex y_electronf2pywrap, y_electron
77 y_electronf2pywrap = y_electron(theta, phi, psi, alpha)
78 end
79
80
81 subroutine f2pywrapspect1 (spect1f2pywrap, omega)
82 external spect1
83 real omega
84 real spect1f2pywrap, spect1
85 spect1f2pywrap = spect1(omega)
86 end
87
88
89 subroutine f2pywrapatanh (atanhf2pywrap, x)
90 external atanh
91 real x
92 real atanhf2pywrap, atanh
93 atanhf2pywrap = atanh(x)
94 end
95
96
97 subroutine f2pywrapbvalue (bvaluef2pywrap, t, bcoef, n, k, x
98 &, jderiv)
99 external bvalue
100 integer n
101 integer k
102 real x
103 integer jderiv
104 real t(n+k)
105 real bcoef(n)
106 real bvaluef2pywrap, bvalue
107 bvaluef2pywrap = bvalue(t, bcoef, n, k, x, jderiv)
108 end
109
110
111 subroutine f2pywrapr1mach (r1machf2pywrap, i)
112 external r1mach
113 integer i
114 real r1machf2pywrap, r1mach
115 r1machf2pywrap = r1mach(i)
116 end
117
118
119 subroutine f2pyinitchisq(setupfunc)
120 external setupfunc
121 real chi2
122 common /chisq/ chi2
123 call setupfunc(chi2)
124 end
125
126 subroutine f2pyinitfpa(setupfunc)
127 external setupfunc
128 real densp(91)
129 real tep(91)
130 real trp(91)
131 real tip(91)
132 real hfp(91)
133 real hefp(91)
134 real altp(91)
135 real r0
136 real dr
137 real wl
138 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
139 call setupfunc(densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl)
140 end
141
142 subroutine f2pyinitdata(setupfunc)
143 external setupfunc
144 real plag(16,91)
145 real plag_errors(16,91)
146 common /data/ plag,plag_errors
147 call setupfunc(plag,plag_errors)
148 end
149
150 subroutine f2pyinitsys(setupfunc)
151 external setupfunc
152 real sconst
153 common /sys/ sconst
154 call setupfunc(sconst)
155 end
156
157 subroutine f2pyiniterrs(setupfunc)
158 external setupfunc
159 real edensp(91)
160 real etep(91)
161 real etip(91)
162 real ehfp(91)
163 real ehefp(91)
164 common /errs/ edensp,etep,etip,ehfp,ehefp
165 call setupfunc(edensp,etep,etip,ehfp,ehefp)
166 end
167
168 subroutine f2pyinitmag(setupfunc)
169 external setupfunc
170 real bfld_prof(85)
171 real alpha_prof(85)
172 common /mag/ bfld_prof,alpha_prof
173 call setupfunc(bfld_prof,alpha_prof)
174 end
175
176 subroutine f2pyinitmode(setupfunc)
177 external setupfunc
178 integer imode
179 common /mode/ imode
180 call setupfunc(imode)
181 end
182
183 subroutine f2pyinitutime(setupfunc)
184 external setupfunc
185 real uttime
186 common /utime/ uttime
187 call setupfunc(uttime)
188 end
189
190 subroutine f2pyinitspline(setupfunc)
191 external setupfunc
192 real ta(34)
193 real bcoef(30,5)
194 common /spline/ ta,bcoef
195 call setupfunc(ta,bcoef)
196 end
197
198 subroutine f2pyinitspec(setupfunc)
199 external setupfunc
200 real te
201 real ti(10)
202 real fi(10)
203 real ven
204 real vin(10)
205 real alpha
206 real dens
207 real bfld
208 integer nion
209 integer wi(10)
210 real ak
211 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
212 call setupfunc(te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak)
213 end
214
215 subroutine f2pyinitfitter(setupfunc)
216 external setupfunc
217 real tau(100)
218 real rho(100)
219 real sigma2(100)
220 real params(10)
221 integer ifit(10)
222 common /fitter/ tau,rho,sigma2,params,ifit
223 call setupfunc(tau,rho,sigma2,params,ifit)
224 end
225
226 subroutine f2pyinittrans(setupfunc)
227 external setupfunc
228 real ev(10000)
229 common /trans/ ev
230 call setupfunc(ev)
231 end
232
233 subroutine f2pyinitd8mach(setupfunc)
234 external setupfunc
235 integer cray1
236 common /d8mach/ cray1
237 call setupfunc(cray1)
238 end
239
240
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -0,0 +1,17
1
2 subroutine get_path(fqual_temp)
3 c
4 c create table of magnetic field components
5 c
6 c character*47 L
7
8 character(1024) :: fqual_temp
9 character(512) :: ppath
10 character(512) :: cpath
11 ppath = "/home/cportilla/DIR_MADRIGAL/schain"
12 cpath = "/schainf/Ffiles/bfmodel/"
13 c write(*,*) "Len:", L
14 fqual_temp = TRIM(ppath)//TRIM(cpath)
15 c write(*,*) "Len:", fqual_temp
16 return
17 end
@@ -0,0 +1,36
1
2 subroutine get_len(the_len,fqual_temp)
3 c
4 c create table of magnetic field components
5 c
6 c character*47 L
7
8 character(1024) :: fqual_temp
9 character(512) :: ppath
10 character(512) :: cpath
11 integer the_len
12 ppath = "/home/cportilla/DIR_MADRIGAL/schain"
13 cpath = "/schainf/Ffiles/jlib26feb2001"
14 fqual_temp = TRIM(ppath)//TRIM(cpath)
15 the_len = LEN_TRIM(fqual_temp)
16
17 return
18 end
19
20 subroutine get_path_reader(fqual,the_len)
21 c
22 c create table of magnetic field components
23 c
24 c character*47 L
25
26 integer the_len
27 character(the_len) :: fqual
28 character(1024) :: fqual_temp
29
30 call get_len(the_len,fqual_temp)
31 fqual = TRIM(fqual_temp)
32 write(*,*) "Done"
33
34 return
35 end
36
@@ -0,0 +1,141
1 {"conditions": [
2
3 {"year": 2024, "doy": 47, "initial_time": [5,32], "final_time": [6,42], "aux_index": [ null, 11]},
4
5 {"year": 2024, "doy": 247, "initial_time": [2,0], "final_time": [5,0], "aux_index": [ null, 11]},
6 {"year": 2024, "doy": 247, "initial_time": [1,40], "final_time": [2,0], "aux_index": [ null, 26]},
7 {"year": 2024, "doy": 247, "initial_time": [0,45], "final_time": [0,45], "aux_index": [ null, 28]},
8 {"year": 2024, "doy": 246, "initial_time": [23,15], "final_time": [23,59], "aux_index": [ null, 21]},
9 {"year": 2024, "doy": 246, "initial_time": [13,55], "final_time": [23,59], "aux_index": [ null, 11]},
10 {"year": 2024, "doy": 247, "initial_time": [0,0], "final_time": [2,25], "aux_index": [ null, 22]},
11 {"year": 2024, "doy": 247, "initial_time": [3,0], "final_time": [3,0], "aux_index": [ 34, null]},
12
13 {"year": 2024, "doy": 247, "initial_time": [5,0], "final_time": [23,59], "aux_index": [ null, 11]},
14 {"year": 2024, "doy": 247, "initial_time": [5,0], "final_time": [11,25], "aux_index": [ 11, 13]},
15 {"year": 2024, "doy": 247, "initial_time": [5,30], "final_time": [9,50], "aux_index": [ 13, 13]},
16 {"year": 2024, "doy": 247, "initial_time": [23,15], "final_time": [23,59], "aux_index": [ null, 15]},
17 {"year": 2024, "doy": 248, "initial_time": [0,0], "final_time": [4,59], "aux_index": [ null, 13]},
18 {"year": 2024, "doy": 248, "initial_time": [0,0], "final_time": [1,50], "aux_index": [ null, 21]},
19 {"year": 2024, "doy": 248, "initial_time": [0,0], "final_time": [2,50], "aux_index": [ null, 17]},
20 {"year": 2024, "doy": 247, "initial_time": [8,5], "final_time": [8,10], "aux_index": [ null, null]},
21 {"year": 2024, "doy": 248, "initial_time": [2,50], "final_time": [2,50], "aux_index": [ 30, null]},
22 {"year": 2024, "doy": 248, "initial_time": [3,55], "final_time": [4,0], "aux_index": [ 26, null]},
23 {"year": 2024, "doy": 247, "initial_time": [5,0], "final_time": [5,0], "aux_index": [ 18, 24]},
24 {"year": 2024, "doy": 247, "initial_time": [5,5], "final_time": [5,5], "aux_index": [ 21, 26]},
25 {"year": 2024, "doy": 247, "initial_time": [5,15], "final_time": [5,15], "aux_index": [ 19, 21]},
26 {"year": 2024, "doy": 247, "initial_time": [5,20], "final_time": [5,20], "aux_index": [ 21, 23]},
27 {"year": 2024, "doy": 247, "initial_time": [5,25], "final_time": [5,25], "aux_index": [ 21, 26]},
28 {"year": 2024, "doy": 247, "initial_time": [5,30], "final_time": [5,30], "aux_index": [ 20, 27]},
29 {"year": 2024, "doy": 247, "initial_time": [5,35], "final_time": [5,35], "aux_index": [ 22, 27]},
30 {"year": 2024, "doy": 247, "initial_time": [8,5], "final_time": [8,10], "aux_index": [ null, null]},
31 {"year": 2024, "doy": 247, "initial_time": [15,30], "final_time": [15,30], "aux_index": [ null, null]},
32
33
34 {"year": 2024, "doy": 248, "initial_time": [5,20], "final_time": [5,35], "aux_index": [ 20, null]},
35 {"year": 2024, "doy": 248, "initial_time": [5,40], "final_time": [5,55], "aux_index": [ 23, null]},
36 {"year": 2024, "doy": 248, "initial_time": [5,0], "final_time": [23,59], "aux_index": [ null, 11]},
37 {"year": 2024, "doy": 249, "initial_time": [0,0], "final_time": [4,59], "aux_index": [ null, 12]},
38 {"year": 2024, "doy": 248, "initial_time": [5,0], "final_time": [9,0], "aux_index": [ null, 13]},
39 {"year": 2024, "doy": 249, "initial_time": [2,0], "final_time": [2,20], "aux_index": [ null, 17]},
40 {"year": 2024, "doy": 249, "initial_time": [2,55], "final_time": [2,55], "aux_index": [ 27, null]},
41 {"year": 2024, "doy": 249, "initial_time": [3,0], "final_time": [3,5], "aux_index": [ 25, null]},
42 {"year": 2024, "doy": 249, "initial_time": [4,5], "final_time": [4,5], "aux_index": [ 23, null]},
43 {"year": 2024, "doy": 249, "initial_time": [4,10], "final_time": [4,10], "aux_index": [ 26, null]},
44 {"year": 2024, "doy": 249, "initial_time": [4,15], "final_time": [4,15], "aux_index": [ 30, null]},
45 {"year": 2024, "doy": 249, "initial_time": [0,30], "final_time": [0,40], "aux_index": [ null, null]},
46
47 {"year": 2024, "doy": 249, "initial_time": [5,20], "final_time": [5,20], "aux_index": [ 22, null]},
48 {"year": 2024, "doy": 249, "initial_time": [5,25], "final_time": [5,25], "aux_index": [ 23, null]},
49 {"year": 2024, "doy": 249, "initial_time": [5,30], "final_time": [5,30], "aux_index": [ 18, 37]},
50 {"year": 2024, "doy": 249, "initial_time": [5,35], "final_time": [5,40], "aux_index": [ 18, 34]},
51 {"year": 2024, "doy": 249, "initial_time": [5,45], "final_time": [5,45], "aux_index": [ 20, 30]},
52 {"year": 2024, "doy": 249, "initial_time": [6,5], "final_time": [6,5], "aux_index": [ 24, null]},
53 {"year": 2024, "doy": 249, "initial_time": [10,5], "final_time": [10,5], "aux_index": [ null, null]},
54 {"year": 2024, "doy": 249, "initial_time": [6,10], "final_time": [6,10], "aux_index": [ 29, null]},
55 {"year": 2024, "doy": 249, "initial_time": [6,45], "final_time": [6,45], "aux_index": [ 21, null]},
56 {"year": 2024, "doy": 249, "initial_time": [5,0], "final_time": [20,0], "aux_index": [ null, 11]},
57 {"year": 2024, "doy": 249, "initial_time": [23,10], "final_time": [23,59], "aux_index": [ null, 11]},
58 {"year": 2024, "doy": 250, "initial_time": [0,0], "final_time": [4,59], "aux_index": [ null, 13]},
59 {"year": 2024, "doy": 249, "initial_time": [5,0], "final_time": [8,50], "aux_index": [ null, 12]},
60 {"year": 2024, "doy": 250, "initial_time": [0,0], "final_time": [3,35], "aux_index": [ null, 23]},
61 {"year": 2024, "doy": 250, "initial_time": [0,0], "final_time": [0,55], "aux_index": [ null, null]},
62 {"year": 2024, "doy": 249, "initial_time": [7,15], "final_time": [7,15], "aux_index": [ null, 14]},
63 {"year": 2024, "doy": 250, "initial_time": [3,15], "final_time": [3,35], "aux_index": [ 46, null]},
64 {"year": 2024, "doy": 250, "initial_time": [3,25], "final_time": [3,25], "aux_index": [ null, 30]},
65 {"year": 2024, "doy": 250, "initial_time": [3,30], "final_time": [3,30], "aux_index": [ null, 32]},
66 {"year": 2024, "doy": 250, "initial_time": [3,35], "final_time": [3,35], "aux_index": [ null, 34]},
67 {"year": 2024, "doy": 250, "initial_time": [3,40], "final_time": [3,40], "aux_index": [ 21, 38]},
68 {"year": 2024, "doy": 250, "initial_time": [3,45], "final_time": [3,45], "aux_index": [ 22, 37]},
69 {"year": 2024, "doy": 250, "initial_time": [1,35], "final_time": [1,35], "aux_index": [ 36, null]},
70 {"year": 2024, "doy": 250, "initial_time": [1,40], "final_time": [1,40], "aux_index": [ 32, null]},
71 {"year": 2024, "doy": 250, "initial_time": [1,45], "final_time": [1,45], "aux_index": [ 31, null]},
72 {"year": 2024, "doy": 250, "initial_time": [2,30], "final_time": [2,30], "aux_index": [ 30, null]},
73 {"year": 2024, "doy": 250, "initial_time": [2,35], "final_time": [2,35], "aux_index": [ 33, null]},
74 {"year": 2024, "doy": 250, "initial_time": [2,40], "final_time": [2,40], "aux_index": [ 27, null]},
75
76 {"year": 2024, "doy": 251, "initial_time": [3,0], "final_time": [3,45], "aux_index": [ null, null]},
77 {"year": 2024, "doy": 251, "initial_time": [0,30], "final_time": [0,45], "aux_index": [ null, null]},
78
79 {"year": 2024, "doy": 250, "initial_time": [5,0], "final_time": [5,0], "aux_index": [ 20, 41]},
80 {"year": 2024, "doy": 250, "initial_time": [5,5], "final_time": [5,10], "aux_index": [ 24, 37]},
81 {"year": 2024, "doy": 250, "initial_time": [5,20], "final_time": [5,25], "aux_index": [ 23, 39]},
82 {"year": 2024, "doy": 250, "initial_time": [5,30], "final_time": [5,30], "aux_index": [ 19, null]},
83 {"year": 2024, "doy": 250, "initial_time": [6,5], "final_time": [6,5], "aux_index": [ 24, null]},
84 {"year": 2024, "doy": 250, "initial_time": [6,10], "final_time": [6,10], "aux_index": [ 20, 41]},
85 {"year": 2024, "doy": 250, "initial_time": [6,15], "final_time": [6,15], "aux_index": [ 20, 39]},
86 {"year": 2024, "doy": 250, "initial_time": [6,20], "final_time": [6,20], "aux_index": [ 20, 37]},
87 {"year": 2024, "doy": 250, "initial_time": [6,25], "final_time": [6,25], "aux_index": [ 21, 29]},
88 {"year": 2024, "doy": 250, "initial_time": [6,30], "final_time": [6,30], "aux_index": [ 22, 29]},
89 {"year": 2024, "doy": 250, "initial_time": [6,45], "final_time": [6,45], "aux_index": [ 20, null]},
90 {"year": 2024, "doy": 250, "initial_time": [6,50], "final_time": [6,50], "aux_index": [ 19, 38]},
91 {"year": 2024, "doy": 250, "initial_time": [6,55], "final_time": [6,55], "aux_index": [ 23, 42]},
92 {"year": 2024, "doy": 250, "initial_time": [7,0], "final_time": [7,0], "aux_index": [ 20, null]},
93 {"year": 2024, "doy": 250, "initial_time": [7,5], "final_time": [7,5], "aux_index": [ 23, 40]},
94 {"year": 2024, "doy": 250, "initial_time": [7,10], "final_time": [7,10], "aux_index": [ 23, 42]},
95 {"year": 2024, "doy": 250, "initial_time": [7,15], "final_time": [7,15], "aux_index": [ 25, 37]},
96 {"year": 2024, "doy": 250, "initial_time": [7,30], "final_time": [7,30], "aux_index": [ 25, 40]},
97 {"year": 2024, "doy": 250, "initial_time": [7,35], "final_time": [7,35], "aux_index": [ 25, 39]},
98 {"year": 2024, "doy": 250, "initial_time": [7,40], "final_time": [7,40], "aux_index": [ 23, 41]},
99 {"year": 2024, "doy": 250, "initial_time": [7,45], "final_time": [7,45], "aux_index": [ 27, 38]},
100 {"year": 2024, "doy": 250, "initial_time": [23,10], "final_time": [23,59], "aux_index": [ null, 12]},
101 {"year": 2024, "doy": 251, "initial_time": [0,0], "final_time": [4,59], "aux_index": [ null, 13]},
102 {"year": 2024, "doy": 250, "initial_time": [5,0], "final_time": [8,10], "aux_index": [ null, 12]},
103 {"year": 2024, "doy": 250, "initial_time": [9,10], "final_time": [10,50], "aux_index": [ null, 12]},
104 {"year": 2024, "doy": 251, "initial_time": [0,0], "final_time": [3,30], "aux_index": [ null, 27]},
105 {"year": 2024, "doy": 250, "initial_time": [19,30], "final_time": [19,30], "aux_index": [ 19, 26]},
106 {"year": 2024, "doy": 250, "initial_time": [10,50], "final_time": [13,20], "aux_index": [ null, 12]},
107
108
109 {"year": 2024, "doy": 251, "initial_time": [5,0], "final_time": [5,0], "aux_index": [ 23, 40]},
110 {"year": 2024, "doy": 251, "initial_time": [5,5], "final_time": [5,10], "aux_index": [ 25, 40]},
111 {"year": 2024, "doy": 251, "initial_time": [17,30], "final_time": [20,30], "aux_index": [ 56, null]},
112 {"year": 2024, "doy": 251, "initial_time": [5,0], "final_time": [8,10], "aux_index": [ null, 12]},
113 {"year": 2024, "doy": 251, "initial_time": [5,0], "final_time": [20,0], "aux_index": [ null, 11]},
114 {"year": 2024, "doy": 251, "initial_time": [19,50], "final_time": [19,50], "aux_index": [ null, null]},
115 {"year": 2024, "doy": 252, "initial_time": [0,30], "final_time": [0,55], "aux_index": [ null, null]},
116 {"year": 2024, "doy": 252, "initial_time": [0,55], "final_time": [1,0], "aux_index": [ null, 40]},
117 {"year": 2024, "doy": 252, "initial_time": [1,0], "final_time": [1,15], "aux_index": [ null, 34]},
118 {"year": 2024, "doy": 252, "initial_time": [0,30], "final_time": [0,55], "aux_index": [ null, null]},
119 {"year": 2024, "doy": 252, "initial_time": [1,35], "final_time": [1,55], "aux_index": [ null, null]},
120 {"year": 2024, "doy": 251, "initial_time": [23,10], "final_time": [23,59], "aux_index": [ null, 20]},
121 {"year": 2024, "doy": 252, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 12]},
122 {"year": 2024, "doy": 252, "initial_time": [0,0], "final_time": [1,50], "aux_index": [ null, 31]},
123 {"year": 2024, "doy": 252, "initial_time": [3,20], "final_time": [3,25], "aux_index": [ 22, null]},
124 {"year": 2024, "doy": 252, "initial_time": [3,30], "final_time": [3,35], "aux_index": [ 23, null]},
125 {"year": 2024, "doy": 252, "initial_time": [3,50], "final_time": [3,50], "aux_index": [ 22, null]},
126 {"year": 2024, "doy": 252, "initial_time": [3,55], "final_time": [4,5], "aux_index": [ 21, null]},
127 {"year": 2024, "doy": 252, "initial_time": [4,10], "final_time": [4,10], "aux_index": [ 21, 36]},
128
129 {"year": 2024, "doy": 252, "initial_time": [5,0], "final_time": [20,0], "aux_index": [ null, 12]},
130 {"year": 2024, "doy": 252, "initial_time": [13,0], "final_time": [13,0], "aux_index": [ null, null]},
131 {"year": 2024, "doy": 252, "initial_time": [5,15], "final_time": [5,20], "aux_index": [ 23, null]},
132 {"year": 2024, "doy": 252, "initial_time": [5,25], "final_time": [5,25], "aux_index": [ 27, 36]},
133 {"year": 2024, "doy": 252, "initial_time": [5,30], "final_time": [5,30], "aux_index": [ 27, null]},
134 {"year": 2024, "doy": 252, "initial_time": [5,35], "final_time": [5,35], "aux_index": [ 31, null]},
135 {"year": 2024, "doy": 252, "initial_time": [5,20], "final_time": [5,40], "aux_index": [ 33, null]},
136 {"year": 2024, "doy": 252, "initial_time": [7,5], "final_time": [7,5], "aux_index": [ 21, null]},
137 {"year": 2024, "doy": 252, "initial_time": [7,10], "final_time": [7,10], "aux_index": [ 23, null]}
138
139
140 ]}
141
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -14,7 +14,7 from threading import Thread
14 from multiprocessing import Process, Queue
14 from multiprocessing import Process, Queue
15 from schainpy.utils import log
15 from schainpy.utils import log
16
16
17 QUEUE_SIZE = int(os.environ.get('QUEUE_MAX_SIZE', '10'))
17 QUEUE_SIZE = int(os.environ.get('QUEUE_MAX_SIZE', '100'))
18
18
19 class ProcessingUnit(object):
19 class ProcessingUnit(object):
20 '''
20 '''
@@ -1827,7 +1827,7 class Oblique_Gauss_Fit(Operation):
1827 #print("After data_snr: ", dataOut.data_snr)
1827 #print("After data_snr: ", dataOut.data_snr)
1828 dataOut.mode = mode
1828 dataOut.mode = mode
1829 dataOut.flagNoData = numpy.all(numpy.isnan(dataOut.Dop_EEJ_T1)) #Si todos los valores son NaN no se prosigue
1829 dataOut.flagNoData = numpy.all(numpy.isnan(dataOut.Dop_EEJ_T1)) #Si todos los valores son NaN no se prosigue
1830 ###dataOut.flagNoData = False #Descomentar solo para ploteo sino mantener comentado (para guardado)
1830 dataOut.flagNoData = False #Descomentar solo para ploteo sino mantener comentado (para guardado)
1831
1831
1832 return dataOut
1832 return dataOut
1833
1833
@@ -7188,9 +7188,10 class IGRFModel(Operation):
7188 log.warning('You should install "mkfact_short_2020" module to process IGRF Model')
7188 log.warning('You should install "mkfact_short_2020" module to process IGRF Model')
7189
7189
7190 if self.aux==1:
7190 if self.aux==1:
7191
7191
7192 #dataOut.TimeBlockSeconds_First_Time=time.mktime(time.strptime(dataOut.TimeBlockDate))
7192 #dataOut.TimeBlockSeconds_First_Time=time.mktime(time.strptime(dataOut.TimeBlockDate))
7193 #### we do not use dataOut.datatime.ctime() because it's the time of the second (next) block
7193 #### we do not use dataOut.datatime.ctime() because it's the time of the second (next) block
7194 dataOut.TimeBlockSeconds = 1727848800.0
7194 dataOut.TimeBlockSeconds_First_Time=dataOut.TimeBlockSeconds
7195 dataOut.TimeBlockSeconds_First_Time=dataOut.TimeBlockSeconds
7195 dataOut.bd_time=time.gmtime(dataOut.TimeBlockSeconds_First_Time)
7196 dataOut.bd_time=time.gmtime(dataOut.TimeBlockSeconds_First_Time)
7196 dataOut.year=dataOut.bd_time.tm_year+(dataOut.bd_time.tm_yday-1)/364.0
7197 dataOut.year=dataOut.bd_time.tm_year+(dataOut.bd_time.tm_yday-1)/364.0
@@ -7199,6 +7200,7 class IGRFModel(Operation):
7199 self.aux=0
7200 self.aux=0
7200 dh = dataOut.heightList[1]-dataOut.heightList[0]
7201 dh = dataOut.heightList[1]-dataOut.heightList[0]
7201 #dataOut.h=numpy.arange(0.0,15.0*dataOut.MAXNRANGENDT,15.0,dtype='float32')
7202 #dataOut.h=numpy.arange(0.0,15.0*dataOut.MAXNRANGENDT,15.0,dtype='float32')
7203 dataOut.MAXNRANGENDT = dataOut.nHeights
7202 dataOut.h=numpy.arange(0.0,dh*dataOut.MAXNRANGENDT,dh,dtype='float32')
7204 dataOut.h=numpy.arange(0.0,dh*dataOut.MAXNRANGENDT,dh,dtype='float32')
7203 dataOut.bfm=numpy.zeros(dataOut.MAXNRANGENDT,dtype='float32')
7205 dataOut.bfm=numpy.zeros(dataOut.MAXNRANGENDT,dtype='float32')
7204 dataOut.bfm=numpy.array(dataOut.bfm,order='F')
7206 dataOut.bfm=numpy.array(dataOut.bfm,order='F')
@@ -7210,10 +7212,12 class IGRFModel(Operation):
7210 #print("**** mkfact WRAPPER ***** ",mkfact_short_2020.mkfact.__doc__ )
7212 #print("**** mkfact WRAPPER ***** ",mkfact_short_2020.mkfact.__doc__ )
7211 #print("IDs: ", id(dataOut.bki))
7213 #print("IDs: ", id(dataOut.bki))
7212 #print("bki shape: ", numpy.shape(dataOut.bki),numpy.shape(dataOut.h),dataOut.year)
7214 #print("bki shape: ", numpy.shape(dataOut.bki),numpy.shape(dataOut.h),dataOut.year)
7213
7215 print(dataOut.year,dataOut.h,dataOut.bfm,dataOut.thb,dataOut.bki,dataOut.MAXNRANGENDT)
7214 mkfact_short_2020_2.mkfact(dataOut.year,dataOut.h,dataOut.bfm,dataOut.thb,dataOut.bki,dataOut.MAXNRANGENDT)
7216 mkfact_short_2020_2.mkfact(dataOut.year,dataOut.h,dataOut.bfm,dataOut.thb,dataOut.bki,dataOut.MAXNRANGENDT)
7215
7217
7216 #mkfact_short_2020.mkfact(dataOut.year,dataOut.h,dataOut.bfm,dataOut.thb,dataOut.bki,dataOut.MAXNRANGENDT)
7218 #mkfact_short_2020.mkfact(dataOut.year,dataOut.h,dataOut.bfm,dataOut.thb,dataOut.bki,dataOut.MAXNRANGENDT)
7219
7220 print("bki: ", dataOut.bki)
7217 #print("bki: ", dataOut.bki[:10])
7221 #print("bki: ", dataOut.bki[:10])
7218 #print("thb: ", dataOut.thb[:10])
7222 #print("thb: ", dataOut.thb[:10])
7219 #print("bfm: ", dataOut.bfm[:10])
7223 #print("bfm: ", dataOut.bfm[:10])
This diff has been collapsed as it changes many lines, (1918 lines changed) Show them Hide them
@@ -12,6 +12,8 import time
12 import itertools
12 import itertools
13
13
14 import numpy
14 import numpy
15 import matplotlib.pyplot as plt
16 import datetime
15
17
16 from schainpy.model.proc.jroproc_base import ProcessingUnit, MPDecorator, Operation
18 from schainpy.model.proc.jroproc_base import ProcessingUnit, MPDecorator, Operation
17 from schainpy.model.data.jrodata import Spectra
19 from schainpy.model.data.jrodata import Spectra
@@ -22,7 +24,7 from schainpy.model.data import _HS_algorithm
22 from schainpy.model.proc.jroproc_voltage import CleanCohEchoes
24 from schainpy.model.proc.jroproc_voltage import CleanCohEchoes
23
25
24 from time import time, mktime, strptime, gmtime, ctime
26 from time import time, mktime, strptime, gmtime, ctime
25
27 from scipy.stats import norm
26
28
27 class SpectraLagProc(ProcessingUnit):
29 class SpectraLagProc(ProcessingUnit):
28 '''
30 '''
@@ -34,14 +36,23 class SpectraLagProc(ProcessingUnit):
34
36
35 self.buffer = None
37 self.buffer = None
36 self.buffer_Lag = None
38 self.buffer_Lag = None
37 self.firstdatatime = None
39 self.firstdatatime = None # Tracks the time of the first data entry.
38 self.profIndex = 0
40 self.profIndex = 0 # Profile Index
39 self.dataOut = Spectra()
41 self.dataOut = Spectra()
40 self.id_min = None
42 self.id_min = None
41 self.id_max = None
43 self.id_max = None
42 self.setupReq = False #Agregar a todas las unidades de proc
44 self.setupReq = False #Agregar a todas las unidades de proc
45 # DataIn: Voltage raw data
46 # DataOut: Spectra data
43
47
44 def __updateSpecFromVoltage(self):
48 def __updateSpecFromVoltage(self):
49
50 '''
51 Assign all the metadata of dataIn (Voltage data) to dataOut (Spectra Data)
52
53 Metadata dataIn -> Metadata dataOut
54
55 '''
45
56
46 self.dataOut.timeZone = self.dataIn.timeZone
57 self.dataOut.timeZone = self.dataIn.timeZone
47 self.dataOut.dstFlag = self.dataIn.dstFlag
58 self.dataOut.dstFlag = self.dataIn.dstFlag
@@ -82,6 +93,9 class SpectraLagProc(ProcessingUnit):
82 """
93 """
83 Convierte valores de Voltaje a Spectra
94 Convierte valores de Voltaje a Spectra
84
95
96 Returns:
97 Self-spectra, Cross-spectra, DC
98
85 Affected:
99 Affected:
86 self.dataOut.data_spc
100 self.dataOut.data_spc
87 self.dataOut.data_cspc
101 self.dataOut.data_cspc
@@ -91,16 +105,15 class SpectraLagProc(ProcessingUnit):
91 self.buffer
105 self.buffer
92 self.dataOut.flagNoData
106 self.dataOut.flagNoData
93 """
107 """
94 #print(self.buffer[1,:,0])
108
95 #exit(1)
96 #print("buffer shape",self.buffer.shape)
97 fft_volt = numpy.fft.fft(
109 fft_volt = numpy.fft.fft(
98 self.buffer, n=self.dataOut.nFFTPoints, axis=1)
110 self.buffer, n=self.dataOut.nFFTPoints, axis=1)
99 fft_volt = fft_volt.astype(numpy.dtype('complex'))
111 fft_volt = fft_volt.astype(numpy.dtype('complex'))
100 dc = fft_volt[:, 0, :]
112 dc = fft_volt[:, 0, :]
101
113
102 # calculo de self-spectra
114 ### Calculate self-spectra
103 fft_volt = numpy.fft.fftshift(fft_volt, axes=(1,))
115 # Reorder the frequency distribution to set 0 at center
116 fft_volt = numpy.fft.fftshift(fft_volt, axes = (1,))
104 spc = fft_volt * numpy.conjugate(fft_volt)
117 spc = fft_volt * numpy.conjugate(fft_volt)
105 spc = spc.real
118 spc = spc.real
106
119
@@ -111,11 +124,11 class SpectraLagProc(ProcessingUnit):
111 cspc = None
124 cspc = None
112 pairIndex = 0
125 pairIndex = 0
113 if self.dataOut.pairsList != None:
126 if self.dataOut.pairsList != None:
114 # calculo de cross-spectra
127 # Calculate cross-spectra
115 #print("HERE")
116 cspc = numpy.zeros(
128 cspc = numpy.zeros(
117 (self.dataOut.nPairs, self.dataOut.nFFTPoints, self.dataOut.nHeights), dtype='complex')
129 (self.dataOut.nPairs, self.dataOut.nFFTPoints, self.dataOut.nHeights), dtype='complex')
118 for pair in self.dataOut.pairsList:
130 for pair in self.dataOut.pairsList:
131 # Check if channel of pairs are in the channellist
119 if pair[0] not in self.dataOut.channelList:
132 if pair[0] not in self.dataOut.channelList:
120 raise ValueError("Error getting CrossSpectra: pair 0 of %s is not in channelList = %s" % (
133 raise ValueError("Error getting CrossSpectra: pair 0 of %s is not in channelList = %s" % (
121 str(pair), str(self.dataOut.channelList)))
134 str(pair), str(self.dataOut.channelList)))
@@ -157,26 +170,30 class SpectraLagProc(ProcessingUnit):
157 self.dataIn.nHeights),
170 self.dataIn.nHeights),
158 dtype='complex')
171 dtype='complex')
159
172
160 if self.dataIn.flagDataAsBlock:
173 # Usually FFTPoints should be equal to nProfiles N = L
161 nVoltProfiles = self.dataIn.data.shape[1]
174 # So, Buffer dimensions [channels (2), FFTPoints (24), Heights (99)]
162
175
163 if nVoltProfiles == nProfiles:
176 ### Sets the .buffer and .profIndex
177 if self.dataIn.flagDataAsBlock: # Data was readed as block of [channel, profile, height]
178 nVoltProfiles = self.dataIn.data.shape[1] # number of profiles
179
180 #Comparison of FFT points (nProfiles) with sample points (vVoltProfiles)
181 if nVoltProfiles == nProfiles: #even-DFT case
164 self.buffer = self.dataIn.data.copy()
182 self.buffer = self.dataIn.data.copy()
165 self.profIndex = nVoltProfiles
183 self.profIndex = nVoltProfiles
166
184
167 elif nVoltProfiles < nProfiles:
185 elif nVoltProfiles < nProfiles: # Frequency Interpolation case (most common)
168
169 if self.profIndex == 0:
186 if self.profIndex == 0:
170 self.id_min = 0
187 self.id_min = 0
171 self.id_max = nVoltProfiles
188 self.id_max = nVoltProfiles
172
189
173 self.buffer[:, self.id_min:self.id_max,
190 self.buffer[:, self.id_min:self.id_max,
174 :] = self.dataIn.data
191 :] = self.dataIn.data # Coppy only the profiles of voltage, VoltProfiles = FFT Point
175
176 self.profIndex += nVoltProfiles
192 self.profIndex += nVoltProfiles
177 self.id_min += nVoltProfiles
193 self.id_min += nVoltProfiles
178 self.id_max += nVoltProfiles
194 self.id_max += nVoltProfiles
179 else:
195 else:
196
180 raise ValueError("The type object %s has %d profiles, it should just has %d profiles" % (
197 raise ValueError("The type object %s has %d profiles, it should just has %d profiles" % (
181 self.dataIn.type, self.dataIn.data.shape[1], nProfiles))
198 self.dataIn.type, self.dataIn.data.shape[1], nProfiles))
182 self.dataOut.flagNoData = True
199 self.dataOut.flagNoData = True
@@ -187,19 +204,19 class SpectraLagProc(ProcessingUnit):
187 if self.firstdatatime == None:
204 if self.firstdatatime == None:
188 self.firstdatatime = self.dataIn.utctime
205 self.firstdatatime = self.dataIn.utctime
189
206
190 if self.profIndex == nProfiles:
207 if self.profIndex == nProfiles: # Num of profiles considered are correct
191 self.__updateSpecFromVoltage()
208 self.__updateSpecFromVoltage() # Assign all the metadata of dataIn (Voltage data) to dataOut (Spectra Data)
209 # Create List of pairs between channels: e.g. (0,1) (1,0)
192 if pairsList == None:
210 if pairsList == None:
193 self.dataOut.pairsList = [pair for pair in itertools.combinations(self.dataOut.channelList, 2)]
211 self.dataOut.pairsList = [pair for pair in itertools.combinations(self.dataOut.channelList, 2)]
194 else:
212 else:
195 self.dataOut.pairsList = pairsList
213 self.dataOut.pairsList = pairsList
196 #print(self.dataOut.pairsList)
214
197 self.__getFft()
215 self.__getFft() # Calculate FFT
216
198 self.dataOut.flagNoData = False
217 self.dataOut.flagNoData = False
199 self.firstdatatime = None
218 self.firstdatatime = None
200 #print(self.profIndex)
201 self.profIndex = 0
219 self.profIndex = 0
202 #input()
203
220
204 '''
221 '''
205 if not self.dataOut.ByLags:
222 if not self.dataOut.ByLags:
@@ -268,20 +285,19 class SpectraLagProc(ProcessingUnit):
268
285
269
286
270 if i>0 and self.id_min is not None:
287 if i>0 and self.id_min is not None:
271
288 # Reboot the Indexs
272 self.profIndex -= self.dataIn.data.shape[1]
289 self.profIndex -= self.dataIn.data.shape[1]
273 self.id_min -= self.dataIn.data.shape[1]
290 self.id_min -= self.dataIn.data.shape[1]
274 self.id_max -= self.dataIn.data.shape[1]
291 self.id_max -= self.dataIn.data.shape[1]
275
292
276 if self.profIndex>0 and self.id_min is not None:
293 if self.profIndex>0 and self.id_min is not None:
277
294 # buffer <- bufferlag with lag i
278 self.buffer[:,:self.id_max-self.dataIn.data.shape[1],:]=self.buffer_Lag[:,:self.id_max-self.dataIn.data.shape[1],:,i]
295 self.buffer[:,:self.id_max-self.dataIn.data.shape[1],:]=self.buffer_Lag[:,:self.id_max-self.dataIn.data.shape[1],:,i]
279
296
297 # Voltage to Spectra
280 self.VoltageType(nFFTPoints,nProfiles,ippFactor,pairsList)
298 self.VoltageType(nFFTPoints,nProfiles,ippFactor,pairsList)
281
299
282
300 if self.id_min is not None: # Could be eliminated?
283 if self.id_min is not None:
284
285 self.buffer_Lag[:,self.id_min-self.dataIn.data.shape[1]:self.id_max-self.dataIn.data.shape[1],:,i]=self.buffer[:,self.id_min-self.dataIn.data.shape[1]:self.id_max-self.dataIn.data.shape[1],:]
301 self.buffer_Lag[:,self.id_min-self.dataIn.data.shape[1]:self.id_max-self.dataIn.data.shape[1],:,i]=self.buffer[:,self.id_min-self.dataIn.data.shape[1]:self.id_max-self.dataIn.data.shape[1],:]
286
302
287 if not self.dataOut.flagNoData:
303 if not self.dataOut.flagNoData:
@@ -290,23 +306,29 class SpectraLagProc(ProcessingUnit):
290 if i==self.dataOut.nLags-1:
306 if i==self.dataOut.nLags-1:
291 self.profIndex=0
307 self.profIndex=0
292 self.firstdatatime = None
308 self.firstdatatime = None
309 # Add data for each lag to dataLag
293 self.dataOut.dataLag_spc.append(self.dataOut.data_spc)
310 self.dataOut.dataLag_spc.append(self.dataOut.data_spc)
294 self.dataOut.dataLag_cspc.append(self.dataOut.data_cspc)
311 self.dataOut.dataLag_cspc.append(self.dataOut.data_cspc)
295 self.dataOut.dataLag_dc.append(self.dataOut.data_dc)
312 self.dataOut.dataLag_dc.append(self.dataOut.data_dc)
296
313
297
314
298 if not self.dataOut.flagNoData:
315 if not self.dataOut.flagNoData:
316 #Convert Data to array
299 self.dataOut.dataLag_spc=numpy.array(self.dataOut.dataLag_spc)
317 self.dataOut.dataLag_spc=numpy.array(self.dataOut.dataLag_spc)
300 self.dataOut.dataLag_cspc=numpy.array(self.dataOut.dataLag_cspc)
318 self.dataOut.dataLag_cspc=numpy.array(self.dataOut.dataLag_cspc)
301 self.dataOut.dataLag_dc=numpy.array(self.dataOut.dataLag_dc)
319 self.dataOut.dataLag_dc = numpy.array(self.dataOut.dataLag_dc)
302 self.dataOut.dataLag_spc=self.dataOut.dataLag_spc.transpose(1,2,3,0)
320
321 # Return the shape of the data to[channel, profile, heigh, lag]
322 self.dataOut.dataLag_spc = self.dataOut.dataLag_spc.transpose(1, 2, 3, 0)
303 self.dataOut.dataLag_cspc=self.dataOut.dataLag_cspc.transpose(1,2,3,0)
323 self.dataOut.dataLag_cspc=self.dataOut.dataLag_cspc.transpose(1,2,3,0)
304 self.dataOut.dataLag_dc=self.dataOut.dataLag_dc.transpose(1,2,0)
324 self.dataOut.dataLag_dc = self.dataOut.dataLag_dc.transpose(1, 2, 0)
305
325
326 # Save the Lagdata into a copy with the channel select to be plotted
306 self.dataOut.data_spc=self.dataOut.dataLag_spc[:,:,:,self.dataOut.LagPlot]
327 self.dataOut.data_spc=self.dataOut.dataLag_spc[:,:,:,self.dataOut.LagPlot]
307 self.dataOut.data_cspc=self.dataOut.dataLag_cspc[:,:,:,self.dataOut.LagPlot]
328 self.dataOut.data_cspc=self.dataOut.dataLag_cspc[:,:,:,self.dataOut.LagPlot]
308 self.dataOut.data_dc=self.dataOut.dataLag_dc[:,:,self.dataOut.LagPlot]
329 self.dataOut.data_dc=self.dataOut.dataLag_dc[:,:,self.dataOut.LagPlot]
309
330
331 # Copy metadata
310 self.dataOut.TimeBlockSeconds=self.dataIn.TimeBlockSeconds
332 self.dataOut.TimeBlockSeconds=self.dataIn.TimeBlockSeconds
311 self.dataOut.flagDataAsBlock=self.dataIn.flagDataAsBlock
333 self.dataOut.flagDataAsBlock=self.dataIn.flagDataAsBlock
312 try:
334 try:
@@ -444,7 +466,7 class removeDCLagFlip(Operation):
444 num_pairs = jcspectra.shape[0]
466 num_pairs = jcspectra.shape[0]
445 else:
467 else:
446 jcspectraExist = False
468 jcspectraExist = False
447
469
448 freq_dc = int(jspectra.shape[1] / 2)
470 freq_dc = int(jspectra.shape[1] / 2)
449 ind_vel = numpy.array([-2, -1, 1, 2]) + freq_dc
471 ind_vel = numpy.array([-2, -1, 1, 2]) + freq_dc
450 ind_vel = ind_vel.astype(int)
472 ind_vel = ind_vel.astype(int)
@@ -453,6 +475,7 class removeDCLagFlip(Operation):
453 ind_vel[list(range(0, 1))] = ind_vel[list(range(0, 1))] + self.num_prof
475 ind_vel[list(range(0, 1))] = ind_vel[list(range(0, 1))] + self.num_prof
454
476
455 if mode == 1:
477 if mode == 1:
478 ''' DC correction is taked as an average of the first neighboords at w=0'''
456 jspectra[:, freq_dc, :] = (
479 jspectra[:, freq_dc, :] = (
457 jspectra[:, ind_vel[1], :] + jspectra[:, ind_vel[2], :]) / 2 # CORRECCION
480 jspectra[:, ind_vel[1], :] + jspectra[:, ind_vel[2], :]) / 2 # CORRECCION
458
481
@@ -462,6 +485,8 class removeDCLagFlip(Operation):
462
485
463 if mode == 2:
486 if mode == 2:
464
487
488 ''' '''
489
465 vel = numpy.array([-2, -1, 1, 2])
490 vel = numpy.array([-2, -1, 1, 2])
466 xx = numpy.zeros([4, 4])
491 xx = numpy.zeros([4, 4])
467
492
@@ -472,9 +497,10 class removeDCLagFlip(Operation):
472 xx_aux = xx_inv[0, :]
497 xx_aux = xx_inv[0, :]
473
498
474 for ich in range(num_chan):
499 for ich in range(num_chan):
500 ''' Flipped signal -> DC at most negative value '''
475 if ich in self.dataOut.FlipChannels:
501 if ich in self.dataOut.FlipChannels:
476
502 ''' Flipped case.- DC at 0 index '''
477
503
478 ind_freq_flip=[-1, -2, 1, 2]
504 ind_freq_flip=[-1, -2, 1, 2]
479
505
480 yy = jspectra[ich, ind_freq_flip, :]
506 yy = jspectra[ich, ind_freq_flip, :]
@@ -490,6 +516,7 class removeDCLagFlip(Operation):
490
516
491
517
492 else:
518 else:
519 ''' Unflipped case.- DC at freq_dc (center) index '''
493 yy = jspectra[ich, ind_vel, :]
520 yy = jspectra[ich, ind_vel, :]
494 jspectra[ich, freq_dc, :] = numpy.dot(xx_aux, yy)
521 jspectra[ich, freq_dc, :] = numpy.dot(xx_aux, yy)
495
522
@@ -1111,6 +1138,10 class removeInterference(Operation):
1111 class IntegrationFaradaySpectra(Operation):
1138 class IntegrationFaradaySpectra(Operation):
1112 '''
1139 '''
1113 Written by R. Flores
1140 Written by R. Flores
1141
1142 spc: Spectra
1143 cspc: Cross Spectra
1144 dc: Direct Current
1114 '''
1145 '''
1115 __profIndex = 0
1146 __profIndex = 0
1116 __withOverapping = False
1147 __withOverapping = False
@@ -1136,1440 +1167,113 class IntegrationFaradaySpectra(Operation):
1136
1167
1137 def setup(self, n=None, timeInterval=None, overlapping=False):
1168 def setup(self, n=None, timeInterval=None, overlapping=False):
1138 """
1169 """
1139 Set the parameters of the integration class.
1170 Set the parameters of the integration class.
1140
1141 Inputs:
1142
1143 n : Number of coherent integrations
1144 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
1145 overlapping :
1146
1147 """
1148
1149 self.__initime = None
1150 self.__lastdatatime = 0
1151
1152 self.__buffer_spc = []
1153 self.__buffer_cspc = []
1154 self.__buffer_dc = 0
1155
1156 self.__profIndex = 0
1157 self.__dataReady = False
1158 self.__byTime = False
1159
1160 if n is None and timeInterval is None:
1161 raise ValueError("n or timeInterval should be specified ...")
1162
1163 if n is not None:
1164 self.n = int(n)
1165 else:
1166
1167 self.__integrationtime = int(timeInterval)
1168 self.n = None
1169 self.__byTime = True
1170
1171 def putData(self, data_spc, data_cspc, data_dc):
1172 """
1173 Add a profile to the __buffer_spc and increase in one the __profileIndex
1174
1175 """
1176
1177 self.__buffer_spc.append(data_spc)
1178
1179 if data_cspc is None:
1180 self.__buffer_cspc = None
1181 else:
1182 self.__buffer_cspc.append(data_cspc)
1183
1184 if data_dc is None:
1185 self.__buffer_dc = None
1186 else:
1187 self.__buffer_dc += data_dc
1188
1189 self.__profIndex += 1
1190
1191 return
1192
1193 def hildebrand_sekhon_Integration(self,data,navg):
1194
1195 sortdata = numpy.sort(data, axis=None)
1196 sortID=data.argsort()
1197 lenOfData = len(sortdata)
1198 nums_min = lenOfData*0.75
1199 if nums_min <= 5:
1200 nums_min = 5
1201 sump = 0.
1202 sumq = 0.
1203 j = 0
1204 cont = 1
1205 while((cont == 1)and(j < lenOfData)):
1206 sump += sortdata[j]
1207 sumq += sortdata[j]**2
1208 if j > nums_min:
1209 rtest = float(j)/(j-1) + 1.0/navg
1210 if ((sumq*j) > (rtest*sump**2)):
1211 j = j - 1
1212 sump = sump - sortdata[j]
1213 sumq = sumq - sortdata[j]**2
1214 cont = 0
1215 j += 1
1216 #lnoise = sump / j
1217
1218 return j,sortID
1219
1220 def pushData(self):
1221 """
1222 Return the sum of the last profiles and the profiles used in the sum.
1223
1224 Affected:
1225
1226 self.__profileIndex
1227
1228 """
1229 bufferH=None
1230 buffer=None
1231 buffer1=None
1232 buffer_cspc=None
1233 self.__buffer_spc=numpy.array(self.__buffer_spc)
1234 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
1235 freq_dc = int(self.__buffer_spc.shape[2] / 2)
1236 #print("FREQ_DC",freq_dc)
1237 #print(self.__buffer_spc[:,1,5,37,0])
1238 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
1239 for l in range(self.DPL):#dataOut.DPL):
1240 #breakFlag=False
1241 for k in range(7,self.nHeights):
1242 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
1243 outliers_IDs_cspc=[]
1244 cspc_outliers_exist=False
1245 #indexmin_cspc=0
1246 for i in range(self.nChannels):#dataOut.nChannels):
1247 if i==1 and k >= self.nHeights-2*l:
1248 #breakFlag=True
1249 continue
1250 #pass
1251 else:
1252 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l])
1253 indexes=[]
1254 #sortIDs=[]
1255 outliers_IDs=[]
1256 for j in range(self.nProfiles):
1257 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
1258 continue
1259 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1260 continue
1261 buffer=buffer1[:,j]
1262 #index,sortID=self.hildebrand_sekhon_Integration(buffer,1)
1263 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
1264 sortID = buffer.argsort()
1265 '''
1266 if i==1 and l==0 and k==37:
1267 print("j",j)
1268 print("INDEX",index)
1269 print(sortID[index:])
1270 if j==5:
1271 aa=numpy.mean(buffer,axis=0)
1272 bb=numpy.sort(buffer)
1273 print(buffer)
1274 print(aa)
1275 print(bb[-1])
1276 '''
1277 indexes.append(index)
1278 #sortIDs.append(sortID)
1279 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
1280
1281 outliers_IDs=numpy.array(outliers_IDs)
1282 outliers_IDs=outliers_IDs.ravel()
1283 outliers_IDs=numpy.unique(outliers_IDs)
1284 outliers_IDs=outliers_IDs.astype(numpy.dtype('int64'))
1285 indexes=numpy.array(indexes)
1286 indexmin=numpy.min(indexes)
1287
1288 if indexmin != buffer1.shape[0]:
1289 cspc_outliers_exist=True
1290 ###sortdata=numpy.sort(buffer1,axis=0)
1291 ###avg2=numpy.mean(sortdata[:indexmin,:],axis=0)
1292 lt=outliers_IDs
1293 avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1294 '''
1295 if k==37 and i==1 and l==0:
1296 #cc=
1297 print("index_min",indexmin)
1298 print("outliers_ID",lt)
1299 print("AVG",avg[5])
1300 print("AVG_2",avg2[5])
1301 '''
1302
1303 for p in list(outliers_IDs):
1304 buffer1[p,:]=avg
1305
1306 self.__buffer_spc[:,i,:,k,l]=numpy.copy(buffer1)
1307 ###cspc IDs
1308 #indexmin_cspc+=indexmin_cspc
1309 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
1310
1311 #if not breakFlag:
1312 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
1313 if cspc_outliers_exist:
1314 #sortdata=numpy.sort(buffer_cspc,axis=0)
1315 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
1316 lt=outliers_IDs_cspc
1317
1318 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1319 for p in list(outliers_IDs_cspc):
1320 buffer_cspc[p,:]=avg
1321
1322 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
1323 #else:
1324 #break
1325
1326
1327
1328
1329 buffer=None
1330 bufferH=None
1331 buffer1=None
1332 buffer_cspc=None
1333
1334 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
1335 #print(self.__profIndex)
1336 #exit()
1337
1338 buffer=None
1339 #print(self.__buffer_spc[:,1,3,20,0])
1340 #print(self.__buffer_spc[:,1,5,37,0])
1341 data_spc = numpy.sum(self.__buffer_spc,axis=0)
1342 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
1343
1344 #print(numpy.shape(data_spc))
1345 #data_spc[1,4,20,0]=numpy.nan
1346
1347 #data_cspc = self.__buffer_cspc
1348 data_dc = self.__buffer_dc
1349 n = self.__profIndex
1350
1351 self.__buffer_spc = []
1352 self.__buffer_cspc = []
1353 self.__buffer_dc = 0
1354 self.__profIndex = 0
1355
1356 return data_spc, data_cspc, data_dc, n
1357
1358 def byProfiles(self, *args):
1359
1360 self.__dataReady = False
1361 avgdata_spc = None
1362 avgdata_cspc = None
1363 avgdata_dc = None
1364
1365 self.putData(*args)
1366
1367 if self.__profIndex == self.n:
1368
1369 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
1370 self.n = n
1371 self.__dataReady = True
1372
1373 return avgdata_spc, avgdata_cspc, avgdata_dc
1374
1375 def byTime(self, datatime, *args):
1376
1377 self.__dataReady = False
1378 avgdata_spc = None
1379 avgdata_cspc = None
1380 avgdata_dc = None
1381
1382 self.putData(*args)
1383
1384 if (datatime - self.__initime) >= self.__integrationtime:
1385 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
1386 self.n = n
1387 self.__dataReady = True
1388
1389 return avgdata_spc, avgdata_cspc, avgdata_dc
1390
1391 def integrate(self, datatime, *args):
1392
1393 if self.__profIndex == 0:
1394 self.__initime = datatime
1395
1396 if self.__byTime:
1397 avgdata_spc, avgdata_cspc, avgdata_dc = self.byTime(
1398 datatime, *args)
1399 else:
1400 avgdata_spc, avgdata_cspc, avgdata_dc = self.byProfiles(*args)
1401
1402 if not self.__dataReady:
1403 return None, None, None, None
1404
1405 return self.__initime, avgdata_spc, avgdata_cspc, avgdata_dc
1406
1407 def run(self, dataOut, n=None, timeInterval=None, overlapping=False):
1408 if n == 1:
1409 dataOut.VelRange = dataOut.getVelRange(0)
1410 return dataOut
1411 #print("holo")
1412 dataOut.flagNoData = True
1413
1414 if not self.isConfig:
1415 self.setup(n, timeInterval, overlapping)
1416 self.isConfig = True
1417
1418 if not dataOut.ByLags:
1419 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
1420 dataOut.data_spc,
1421 dataOut.data_cspc,
1422 dataOut.data_dc)
1423 else:
1424 self.nProfiles=dataOut.nProfiles
1425 self.nChannels=dataOut.nChannels
1426 self.nHeights=dataOut.nHeights
1427 self.DPL=dataOut.DPL
1428 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
1429 dataOut.dataLag_spc,
1430 dataOut.dataLag_cspc,
1431 dataOut.dataLag_dc)
1432
1433 if self.__dataReady:
1434
1435 if not dataOut.ByLags:
1436 dataOut.data_spc = avgdata_spc
1437 dataOut.data_cspc = avgdata_cspc
1438 dataOut.data_dc = avgdata_dc
1439 else:
1440 dataOut.dataLag_spc = avgdata_spc
1441 dataOut.dataLag_cspc = avgdata_cspc
1442 dataOut.dataLag_dc = avgdata_dc
1443
1444 dataOut.data_spc=dataOut.dataLag_spc[:,:,:,dataOut.LagPlot]
1445 dataOut.data_cspc=dataOut.dataLag_cspc[:,:,:,dataOut.LagPlot]
1446 dataOut.data_dc=dataOut.dataLag_dc[:,:,dataOut.LagPlot]
1447
1448 dataOut.VelRange = dataOut.getVelRange(0)
1449 dataOut.nIncohInt *= self.n
1450 dataOut.utctime = avgdatatime
1451 dataOut.flagNoData = False
1452
1453 return dataOut
1454
1455
1456
1457 class IntegrationFaradaySpectra2(Operation):
1458 '''
1459 Written by R. Flores
1460 '''
1461 __profIndex = 0
1462 __withOverapping = False
1463
1464 __byTime = False
1465 __initime = None
1466 __lastdatatime = None
1467 __integrationtime = None
1468
1469 __buffer_spc = None
1470 __buffer_cspc = None
1471 __buffer_dc = None
1472
1473 __dataReady = False
1474
1475 __timeInterval = None
1476
1477 n = None
1478
1479 def __init__(self):
1480
1481 Operation.__init__(self)
1482
1483 def setup(self, n=None, timeInterval=None, overlapping=False):
1484 """
1485 Set the parameters of the integration class.
1486
1487 Inputs:
1488
1489 n : Number of coherent integrations
1490 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
1491 overlapping :
1492
1493 """
1494
1495 self.__initime = None
1496 self.__lastdatatime = 0
1497
1498 self.__buffer_spc = None
1499 self.__buffer_cspc = None
1500 self.__buffer_dc = 0
1501
1502 self.__profIndex = 0
1503 self.__dataReady = False
1504 self.__byTime = False
1505
1506 if n is None and timeInterval is None:
1507 raise ValueError("n or timeInterval should be specified ...")
1508
1509 if n is not None:
1510 self.n = int(n)
1511 else:
1512
1513 self.__integrationtime = int(timeInterval)
1514 self.n = None
1515 self.__byTime = True
1516
1517 def putData(self, data_spc, data_cspc, data_dc):
1518 """
1519 Add a profile to the __buffer_spc and increase in one the __profileIndex
1520
1521 """
1522
1523 #print(numpy.shape(self.__buffer_spc))
1524 ##print(numpy.shape(data_spc))
1525
1526 #self.__buffer_spc = numpy.insert(self.__buffer_spc,[],data_spc,axis=0)
1527 self.__buffer_spc[self.__profIndex,:]=data_spc[:]
1528 ##self.__buffer_spc.append(data_spc)
1529 #self.__buffer_spc = numpy.array(self.__buffer_spc)
1530 #print(numpy.shape(self.__buffer_spc))
1531 #print("bytes",sys.getsizeof(self.__buffer_spc))
1532 #print("bytes",asizeof(self.__buffer_spc))
1533 if data_cspc is None:
1534 self.__buffer_cspc = None
1535
1536 else:
1537 self.__buffer_cspc[self.__profIndex,:]=data_cspc[:]
1538
1539 if data_dc is None:
1540 self.__buffer_dc = None
1541 else:
1542 self.__buffer_dc += data_dc
1543
1544 self.__profIndex += 1
1545
1546 return
1547
1548 def hildebrand_sekhon_Integration(self,data,navg):
1549
1550 sortdata = numpy.sort(data, axis=None)
1551 sortID=data.argsort()
1552 lenOfData = len(sortdata)
1553 nums_min = lenOfData*0.75
1554 if nums_min <= 5:
1555 nums_min = 5
1556 sump = 0.
1557 sumq = 0.
1558 j = 0
1559 cont = 1
1560 while((cont == 1)and(j < lenOfData)):
1561 sump += sortdata[j]
1562 sumq += sortdata[j]**2
1563 if j > nums_min:
1564 rtest = float(j)/(j-1) + 1.0/navg
1565 if ((sumq*j) > (rtest*sump**2)):
1566 j = j - 1
1567 sump = sump - sortdata[j]
1568 sumq = sumq - sortdata[j]**2
1569 cont = 0
1570 j += 1
1571 #lnoise = sump / j
1572
1573 return j,sortID
1574
1575 def pushData_V0(self):
1576 """
1577 Return the sum of the last profiles and the profiles used in the sum.
1578
1579 Affected:
1580
1581 self.__profileIndex
1582
1583 """
1584 bufferH=None
1585 buffer=None
1586 buffer1=None
1587 buffer_cspc=None
1588 self.__buffer_spc=numpy.array(self.__buffer_spc)
1589 if self.__buffer_cspc is not None:
1590 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
1591 freq_dc = int(self.__buffer_spc.shape[2] / 2)
1592 #print("FREQ_DC",freq_dc)
1593 #print(self.__buffer_spc[:,1,5,37,0])
1594 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
1595
1596 if self.nLags == 11:
1597 h0 = 7
1598 elif self.nLags == 16:
1599 h0 = 180
1600
1601
1602 '''
1603 import matplotlib.pyplot as plt
1604 plt.plot(self.__buffer_spc[:,0,freq_dc,33,0],marker='*')
1605 plt.ylim((0,700000))
1606 plt.show()
1607 import time
1608 time.sleep(60)
1609 exit(1)
1610 '''
1611 #'''
1612 import matplotlib.pyplot as plt
1613 #plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
1614 plt.plot(sorted(self.__buffer_spc[:,0,freq_dc-2,33,1]),marker='*')
1615 plt.ylim((0,1.1*1.e6))
1616 plt.show()
1617 import time
1618 time.sleep(60)
1619 exit(1)
1620 #'''
1621
1622 print(self.nLags)
1623 '''
1624 if self.nLags == 16:
1625 self.nLags = 0
1626 #exit(1)
1627 '''
1628
1629 for l in range(self.nLags):#dataOut.DPL):
1630 #breakFlag=False
1631 for k in range(7,self.nHeights):
1632 if self.__buffer_cspc is not None:
1633 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
1634 outliers_IDs_cspc=[]
1635 cspc_outliers_exist=False
1636 #indexmin_cspc=0
1637 for i in range(2):
1638 #for i in range(self.nChannels):#dataOut.nChannels):
1639 #if self.TrueLags:
1640 #print("HERE")
1641 if i==1 and k >= self.nHeights-2*l and self.TrueLags:
1642 #breakFlag=True
1643 continue
1644
1645 #pass
1646 else:
1647 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l])
1648 indexes=[]
1649 #sortIDs=[]
1650 outliers_IDs=[]
1651 for j in range(self.nProfiles):
1652 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
1653 continue
1654 if self.FlipChannelsExist:
1655 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1656 continue
1657 else:
1658 if i==1 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1659 continue
1660 #buffer=buffer1[:,j]
1661 buffer=(buffer1[:,j]).real
1662 '''
1663 if self.nLags ==16 and l!=0:
1664 print(buffer)
1665 exit(1)
1666 '''
1667 #index,sortID=self.hildebrand_sekhon_Integration(buffer,1)
1668 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
1669 sortID = buffer.argsort()
1670
1671 indexes.append(index)
1672 #sortIDs.append(sortID)
1673 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
1674
1675 outliers_IDs=numpy.array(outliers_IDs)
1676 outliers_IDs=outliers_IDs.ravel()
1677 outliers_IDs=numpy.unique(outliers_IDs)
1678 outliers_IDs=outliers_IDs.astype(numpy.dtype('int64'))
1679 indexes=numpy.array(indexes)
1680 indexmin=numpy.min(indexes)
1681
1682 if indexmin != buffer1.shape[0]:
1683 cspc_outliers_exist=True
1684 ###sortdata=numpy.sort(buffer1,axis=0)
1685 ###avg2=numpy.mean(sortdata[:indexmin,:],axis=0)
1686 lt=outliers_IDs
1687 avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1688
1689
1690 for p in list(outliers_IDs):
1691 buffer1[p,:]=avg
1692
1693 self.__buffer_spc[:,i,:,k,l]=numpy.copy(buffer1)
1694 ###cspc IDs
1695 #indexmin_cspc+=indexmin_cspc
1696 if self.__buffer_cspc is not None:
1697 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
1698
1699 #if not breakFlag:
1700 #print(outliers_IDs_cspc)
1701 if self.__buffer_cspc is not None:
1702 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
1703 if cspc_outliers_exist:
1704 #sortdata=numpy.sort(buffer_cspc,axis=0)
1705 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
1706 lt=outliers_IDs_cspc
1707
1708 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1709 for p in list(outliers_IDs_cspc):
1710 buffer_cspc[p,:]=avg
1711
1712 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
1713
1714 #else:
1715 #break
1716 #'''
1717 import matplotlib.pyplot as plt
1718 plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
1719 plt.ylim((0,1.1*1.e6))
1720 plt.show()
1721 import time
1722 time.sleep(60)
1723 exit(1)
1724 #'''
1725
1726 buffer=None
1727 bufferH=None
1728 buffer1=None
1729 buffer_cspc=None
1730
1731 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
1732 #print(self.__profIndex)
1733 #exit()
1734 '''
1735 if self.nLags == 16:
1736 print(self.__buffer_spc[:,0,0,0,2])
1737 exit(1)
1738 '''
1739
1740 buffer=None
1741 #print(self.__buffer_spc[:,1,3,20,0])
1742 #print(self.__buffer_spc[:,1,5,37,0])
1743 data_spc = numpy.sum(self.__buffer_spc,axis=0)
1744
1745 if self.__buffer_cspc is not None:
1746 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
1747 else:
1748 data_cspc = None
1749
1750 #print(numpy.shape(data_spc))
1751 #data_spc[1,4,20,0]=numpy.nan
1752
1753
1754 data_dc = self.__buffer_dc
1755
1756 n = self.__profIndex
1757
1758 self.__buffer_spc = None
1759 self.__buffer_cspc = None
1760 self.__buffer_dc = 0
1761 self.__profIndex = 0
1762
1763 return data_spc, data_cspc, data_dc, n
1764
1765 def pushData(self):
1766 """
1767 Return the sum of the last profiles and the profiles used in the sum.
1768
1769 Affected:
1770
1771 self.__profileIndex
1772
1773 """
1774 bufferH=None
1775 buffer=None
1776 buffer1=None
1777 buffer_cspc=None
1778 self.__buffer_spc=numpy.array(self.__buffer_spc)
1779 if self.__buffer_cspc is not None:
1780 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
1781 freq_dc = int(self.__buffer_spc.shape[2] / 2)
1782 #print("FREQ_DC",freq_dc)
1783 #print(self.__buffer_spc[:,1,5,37,0])
1784 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
1785
1786 if self.nLags == 11:
1787 h0 = 7
1788 elif self.nLags == 16:
1789 h0 = 180
1790
1791
1792
1793 '''
1794 import matplotlib.pyplot as plt
1795 #plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
1796 aux = self.__buffer_spc[:,0,freq_dc-2,66,1]
1797 a,b=self.hildebrand_sekhon_Integration(numpy.abs(aux),1)
1798 print(a)
1799 plt.plot(sorted(aux),marker='*')
1800 plt.vlines(x=a,ymin=min(aux),ymax=max(aux))
1801 #plt.ylim((-35000,65000))
1802 plt.show()
1803 import time
1804 time.sleep(60)
1805 exit(1)
1806 '''
1807
1808 #print(self.nLags)
1809 '''
1810 if self.nLags == 16:
1811 self.nLags = 3
1812 #exit(1)
1813 '''
1814 #print(self.nHeights)
1815 #exit(1)
1816 for l in range(self.nLags):#dataOut.DPL): #if DP --> nLags=11, elif HP --> nLags=16
1817 #breakFlag=False
1818 for k in range(7,self.nHeights):
1819 if self.__buffer_cspc is not None:
1820 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
1821 outliers_IDs_cspc=[]
1822 cspc_outliers_exist=False
1823 #indexmin_cspc=0
1824 for i in range(2): #Solo nos interesa los 2 primeros canales que son los canales con señal
1825 #for i in range(self.nChannels):#dataOut.nChannels):
1826 #if self.TrueLags:
1827 #print("HERE")
1828 '''
1829 if i==1 and k >= self.nHeights-2*l and self.TrueLags:
1830 #breakFlag=True
1831 print("here")
1832 exit(1)
1833 continue
1834 '''
1835
1836 #pass
1837 #else:
1838 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l])
1839 indexes=[]
1840 #sortIDs=[]
1841 outliers_IDs=[]
1842 for j in range(self.nProfiles):
1843 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
1844 continue
1845 if self.FlipChannelsExist:
1846 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1847 continue
1848 else:
1849 if i==1 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1850 continue
1851 #buffer=buffer1[:,j]
1852 buffer=(buffer1[:,j])
1853 '''
1854 if self.nLags ==16 and l!=0:
1855 print(buffer)
1856 exit(1)
1857 '''
1858 #index,sortID=self.hildebrand_sekhon_Integration(numpy.abs(buffer),1)
1859 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
1860 sortID = buffer.argsort()
1861
1862 indexes.append(index)
1863 #sortIDs.append(sortID)
1864 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
1865
1866 sortdata=numpy.sort(buffer,axis=0)
1867 avg=numpy.mean(sortdata[:index],axis=0)
1868 #lt=outliers_IDs
1869 #avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1870
1871 if index != buffer.shape[0]:
1872 for p in list(sortID[index:]):
1873 buffer1[p,j]=avg
1874
1875
1876 self.__buffer_spc[:,i,j,k,l]=numpy.copy(buffer1[:,j])
1877 ###cspc IDs
1878 #indexmin_cspc+=indexmin_cspc
1879 if self.__buffer_cspc is not None:
1880 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
1881
1882 #if not breakFlag:
1883 #print(outliers_IDs_cspc)
1884 if self.__buffer_cspc is not None:
1885 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
1886 if cspc_outliers_exist:
1887 #sortdata=numpy.sort(buffer_cspc,axis=0)
1888 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
1889 lt=outliers_IDs_cspc
1890
1891 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1892 for p in list(outliers_IDs_cspc):
1893 buffer_cspc[p,:]=avg
1894
1895 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
1896
1897 #else:
1898 #break
1899 '''
1900 import matplotlib.pyplot as plt
1901 plt.plot(sorted(self.__buffer_spc[:,0,freq_dc-2,66,1]),marker='*')
1902 #plt.ylim((0,1.1*1.e6))
1903 plt.ylim((-30000,65000))
1904 plt.show()
1905 import time
1906 time.sleep(60)
1907 exit(1)
1908 '''
1909
1910 buffer=None
1911 bufferH=None
1912 buffer1=None
1913 buffer_cspc=None
1914
1915 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
1916 #print(self.__profIndex)
1917 #exit()
1918 '''
1919 if self.nLags == 16:
1920 print(self.__buffer_spc[:,0,0,0,2])
1921 exit(1)
1922 '''
1923
1924 buffer=None
1925 #print(self.__buffer_spc[:,1,3,20,0])
1926 #print(self.__buffer_spc[:,1,5,37,0])
1927 data_spc = numpy.sum(self.__buffer_spc,axis=0)
1928
1929 if self.__buffer_cspc is not None:
1930 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
1931 else:
1932 data_cspc = None
1933
1934 #print(numpy.shape(data_spc))
1935 #data_spc[1,4,20,0]=numpy.nan
1936
1937
1938 data_dc = self.__buffer_dc
1939
1940 n = self.__profIndex
1941
1942 self.__buffer_spc = None
1943 self.__buffer_cspc = None
1944 self.__buffer_dc = 0
1945 self.__profIndex = 0
1946
1947 return data_spc, data_cspc, data_dc, n
1948
1949 def byProfiles(self, data_spc, data_cspc, *args):
1950
1951 self.__dataReady = False
1952 avgdata_spc = None
1953 avgdata_cspc = None
1954 avgdata_dc = None
1955
1956 self.putData(data_spc, data_cspc, *args)
1957
1958 if self.__profIndex == self.n:
1959
1960 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
1961 self.n = n
1962 self.__dataReady = True
1963
1964 return avgdata_spc, avgdata_cspc, avgdata_dc
1965
1966 def byTime(self, datatime, *args):
1967
1968 self.__dataReady = False
1969 avgdata_spc = None
1970 avgdata_cspc = None
1971 avgdata_dc = None
1972
1973 self.putData(*args)
1974
1975 if (datatime - self.__initime) >= self.__integrationtime:
1976 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
1977 self.n = n
1978 self.__dataReady = True
1979
1980 return avgdata_spc, avgdata_cspc, avgdata_dc
1981
1982 def integrate(self, datatime, data_spc, data_cspc, *args):
1983
1984 if self.__profIndex == 0:
1985 self.__initime = datatime
1986 #print(data_cspc.shape)
1987
1988 #self.__buffer_spc = numpy.empty_like(data_spc,shape=(self.n,self.nChannels,self.nProfiles,self.nHeights,self.nLags))
1989 self.__buffer_spc = numpy.ones_like(data_spc,shape=(self.n,self.nChannels,self.nProfiles,self.nHeights,self.nLags))*numpy.NAN
1990
1991 #print(self.__buffer_spc[0])
1992 #print(self.__buffer_spc.dtype)
1993 #print(data_spc.dtype)
1994
1995 if data_cspc is not None:
1996 nLags = numpy.shape(data_cspc)[-1]
1997 nCrossChannels = numpy.shape(data_cspc)[0]
1998
1999 #self.__buffer_cspc = numpy.empty_like(data_cspc,shape=(self.n,crossChannels,self.nProfiles,self.nHeights,self.nLags))
2000 self.__buffer_cspc = numpy.ones_like(data_cspc,shape=(self.n,nCrossChannels,self.nProfiles,self.nHeights,nLags))*numpy.NAN
2001 else:
2002 self.__buffer_cspc = None
2003 #print("HEREEEE")
2004 #print(self.__buffer_cspc.dtype)
2005 #print(data_cspc.dtype)
2006 #exit(1)
2007 if self.__byTime:
2008 avgdata_spc, avgdata_cspc, avgdata_dc = self.byTime(
2009 datatime, *args)
2010 else:
2011 avgdata_spc, avgdata_cspc, avgdata_dc = self.byProfiles(data_spc, data_cspc, *args)
2012
2013 if not self.__dataReady:
2014 return None, None, None, None
2015
2016 return self.__initime, avgdata_spc, avgdata_cspc, avgdata_dc
2017
2018 def run(self, dataOut, n=None, timeInterval=None, overlapping=False,TrueLags=True):
2019 if n == 1:
2020 return dataOut
2021
2022 dataOut.flagNoData = True
2023
2024 if not self.isConfig:
2025 self.setup(n, timeInterval, overlapping)
2026 try:
2027 dataOut.FlipChannels
2028 self.FlipChannelsExist=1
2029 except:
2030 self.FlipChannelsExist=0
2031 self.isConfig = True
2032
2033 self.nProfiles=dataOut.nProfiles
2034 self.nChannels=dataOut.nChannels
2035 self.nHeights=dataOut.nHeights
2036 if not dataOut.ByLags:
2037 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
2038 dataOut.data_spc,
2039 dataOut.data_cspc,
2040 dataOut.data_dc)
2041 else:
2042 #self.nProfiles=dataOut.nProfiles
2043 #self.nChannels=dataOut.nChannels
2044 #self.nHeights=dataOut.nHeights
2045 self.nLags=dataOut.nLags
2046 self.TrueLags=TrueLags
2047
2048
2049
2050 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
2051 dataOut.dataLag_spc,
2052 dataOut.dataLag_cspc,
2053 dataOut.dataLag_dc)
2054
2055 if self.__dataReady:
2056
2057 if not dataOut.ByLags:
2058 dataOut.data_spc = avgdata_spc
2059 dataOut.data_cspc = avgdata_cspc
2060 dataOut.data_dc = avgdata_dc
2061 else:
2062 dataOut.dataLag_spc = avgdata_spc
2063 dataOut.dataLag_cspc = avgdata_cspc
2064 dataOut.dataLag_dc = avgdata_dc
2065
2066 dataOut.data_spc=dataOut.dataLag_spc[:,:,:,dataOut.LagPlot].real
2067
2068 if self.__buffer_cspc is not None:
2069 dataOut.data_cspc=dataOut.dataLag_cspc[:,:,:,dataOut.LagPlot]
2070 dataOut.data_dc=dataOut.dataLag_dc[:,:,dataOut.LagPlot]
2071
2072
2073 dataOut.nIncohInt *= self.n
2074 dataOut.utctime = avgdatatime
2075 dataOut.flagNoData = False
2076
2077 return dataOut
2078
2079 class IntegrationFaradaySpectra3(Operation): #This class should manage data with no lags as well
2080 '''
2081 Written by R. Flores
2082 '''
2083 __profIndex = 0
2084 __withOverapping = False
2085
2086 __byTime = False
2087 __initime = None
2088 __lastdatatime = None
2089 __integrationtime = None
2090
2091 __buffer_spc = None
2092 __buffer_cspc = None
2093 __buffer_dc = None
2094
2095 __dataReady = False
2096
2097 __timeInterval = None
2098
2099 n = None
2100
2101 def __init__(self):
2102
2103 Operation.__init__(self)
2104
2105 def setup(self, n=None, timeInterval=None, overlapping=False):
2106 """
2107 Set the parameters of the integration class.
2108
2109 Inputs:
2110
2111 n : Number of coherent integrations
2112 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
2113 overlapping :
2114
2115 """
2116
2117 self.__initime = None
2118 self.__lastdatatime = 0
2119
2120 self.__buffer_spc = None
2121 self.__buffer_cspc = None
2122 self.__buffer_dc = 0
2123
2124 self.__profIndex = 0
2125 self.__dataReady = False
2126 self.__byTime = False
2127
2128 if n is None and timeInterval is None:
2129 raise ValueError("n or timeInterval should be specified ...")
2130
2131 if n is not None:
2132 self.n = int(n)
2133 else:
2134
2135 self.__integrationtime = int(timeInterval)
2136 self.n = None
2137 self.__byTime = True
2138
2139 def putData(self, data_spc, data_cspc, data_dc):
2140 """
2141 Add a profile to the __buffer_spc and increase in one the __profileIndex
2142
2143 """
2144
2145 #print(numpy.shape(self.__buffer_spc))
2146 ##print(numpy.shape(data_spc))
2147
2148 #self.__buffer_spc = numpy.insert(self.__buffer_spc,[],data_spc,axis=0)
2149 self.__buffer_spc[self.__profIndex,:]=data_spc[:]
2150 ##self.__buffer_spc.append(data_spc)
2151 #self.__buffer_spc = numpy.array(self.__buffer_spc)
2152 #print(numpy.shape(self.__buffer_spc))
2153 #print("bytes",sys.getsizeof(self.__buffer_spc))
2154 #print("bytes",asizeof(self.__buffer_spc))
2155 if self.clean_cspc:
2156 if data_cspc is None:
2157 self.__buffer_cspc = None
2158
2159 else:
2160 self.__buffer_cspc[self.__profIndex,:]=data_cspc[:]
2161 else:
2162 self.__buffer_cspc += data_cspc
2163
2164 if data_dc is None:
2165 self.__buffer_dc = None
2166 else:
2167 self.__buffer_dc += data_dc
2168
2169 self.__profIndex += 1
2170
2171 return
2172
2173 def hildebrand_sekhon_Integration(self,data,navg):
2174
2175 sortdata = numpy.sort(data, axis=None)
2176 sortID=data.argsort()
2177 lenOfData = len(sortdata)
2178 nums_min = lenOfData*0.75
2179 if nums_min <= 5:
2180 nums_min = 5
2181 sump = 0.
2182 sumq = 0.
2183 j = 0
2184 cont = 1
2185 while((cont == 1)and(j < lenOfData)):
2186 sump += sortdata[j]
2187 sumq += sortdata[j]**2
2188 if j > nums_min:
2189 rtest = float(j)/(j-1) + 1.0/navg
2190 if ((sumq*j) > (rtest*sump**2)):
2191 j = j - 1
2192 sump = sump - sortdata[j]
2193 sumq = sumq - sortdata[j]**2
2194 cont = 0
2195 j += 1
2196 #lnoise = sump / j
2197
2198 return j,sortID
2199
2200 def pushData_V0(self):
2201 """
2202 Return the sum of the last profiles and the profiles used in the sum.
2203
2204 Affected:
2205
2206 self.__profileIndex
2207
2208 """
2209 bufferH=None
2210 buffer=None
2211 buffer1=None
2212 buffer_cspc=None
2213 self.__buffer_spc=numpy.array(self.__buffer_spc)
2214 if self.__buffer_cspc is not None:
2215 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
2216 freq_dc = int(self.__buffer_spc.shape[2] / 2)
2217 #print("FREQ_DC",freq_dc)
2218 #print(self.__buffer_spc[:,1,5,37,0])
2219 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
2220
2221 if self.nLags == 11:
2222 h0 = 7
2223 elif self.nLags == 16:
2224 h0 = 180
2225
2226
2227 '''
2228 import matplotlib.pyplot as plt
2229 plt.plot(self.__buffer_spc[:,0,freq_dc,33,0],marker='*')
2230 plt.ylim((0,700000))
2231 plt.show()
2232 import time
2233 time.sleep(60)
2234 exit(1)
2235 '''
2236 #'''
2237 import matplotlib.pyplot as plt
2238 #plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
2239 plt.plot(sorted(self.__buffer_spc[:,0,freq_dc-2,33,1]),marker='*')
2240 plt.ylim((0,1.1*1.e6))
2241 plt.show()
2242 import time
2243 time.sleep(60)
2244 exit(1)
2245 #'''
2246
2247 print(self.nLags)
2248 '''
2249 if self.nLags == 16:
2250 self.nLags = 0
2251 #exit(1)
2252 '''
2253
2254 for l in range(self.nLags):#dataOut.DPL):
2255 #breakFlag=False
2256 for k in range(7,self.nHeights):
2257 if self.__buffer_cspc is not None:
2258 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
2259 outliers_IDs_cspc=[]
2260 cspc_outliers_exist=False
2261 #indexmin_cspc=0
2262 for i in range(2):
2263 #for i in range(self.nChannels):#dataOut.nChannels):
2264 #if self.TrueLags:
2265 #print("HERE")
2266 if i==1 and k >= self.nHeights-2*l and self.TrueLags:
2267 #breakFlag=True
2268 continue
2269
2270 #pass
2271 else:
2272 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l])
2273 indexes=[]
2274 #sortIDs=[]
2275 outliers_IDs=[]
2276 for j in range(self.nProfiles):
2277 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
2278 continue
2279 if self.FlipChannelsExist:
2280 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2281 continue
2282 else:
2283 if i==1 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2284 continue
2285 #buffer=buffer1[:,j]
2286 buffer=(buffer1[:,j]).real
2287 '''
2288 if self.nLags ==16 and l!=0:
2289 print(buffer)
2290 exit(1)
2291 '''
2292 #index,sortID=self.hildebrand_sekhon_Integration(buffer,1)
2293 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
2294 sortID = buffer.argsort()
2295
2296 indexes.append(index)
2297 #sortIDs.append(sortID)
2298 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
2299
2300 outliers_IDs=numpy.array(outliers_IDs)
2301 outliers_IDs=outliers_IDs.ravel()
2302 outliers_IDs=numpy.unique(outliers_IDs)
2303 outliers_IDs=outliers_IDs.astype(numpy.dtype('int64'))
2304 indexes=numpy.array(indexes)
2305 indexmin=numpy.min(indexes)
2306
2307 if indexmin != buffer1.shape[0]:
2308 cspc_outliers_exist=True
2309 ###sortdata=numpy.sort(buffer1,axis=0)
2310 ###avg2=numpy.mean(sortdata[:indexmin,:],axis=0)
2311 lt=outliers_IDs
2312 avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
2313
2314
2315 for p in list(outliers_IDs):
2316 buffer1[p,:]=avg
2317
2318 self.__buffer_spc[:,i,:,k,l]=numpy.copy(buffer1)
2319 ###cspc IDs
2320 #indexmin_cspc+=indexmin_cspc
2321 if self.__buffer_cspc is not None:
2322 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
2323
2324 #if not breakFlag:
2325 #print(outliers_IDs_cspc)
2326 if self.__buffer_cspc is not None:
2327 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
2328 if cspc_outliers_exist:
2329 #sortdata=numpy.sort(buffer_cspc,axis=0)
2330 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
2331 lt=outliers_IDs_cspc
2332
2333 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
2334 for p in list(outliers_IDs_cspc):
2335 buffer_cspc[p,:]=avg
2336
2337 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
2338
2339 #else:
2340 #break
2341 #'''
2342 import matplotlib.pyplot as plt
2343 plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
2344 plt.ylim((0,1.1*1.e6))
2345 plt.show()
2346 import time
2347 time.sleep(60)
2348 exit(1)
2349 #'''
2350
2351 buffer=None
2352 bufferH=None
2353 buffer1=None
2354 buffer_cspc=None
2355
2356 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
2357 #print(self.__profIndex)
2358 #exit()
2359 '''
2360 if self.nLags == 16:
2361 print(self.__buffer_spc[:,0,0,0,2])
2362 exit(1)
2363 '''
2364
2365 buffer=None
2366 #print(self.__buffer_spc[:,1,3,20,0])
2367 #print(self.__buffer_spc[:,1,5,37,0])
2368 data_spc = numpy.sum(self.__buffer_spc,axis=0)
2369
2370 if self.__buffer_cspc is not None:
2371 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
2372 else:
2373 data_cspc = None
2374
2375 #print(numpy.shape(data_spc))
2376 #data_spc[1,4,20,0]=numpy.nan
2377
2378
2379 data_dc = self.__buffer_dc
2380
2381 n = self.__profIndex
2382
2383 self.__buffer_spc = None
2384 self.__buffer_cspc = None
2385 self.__buffer_dc = 0
2386 self.__profIndex = 0
2387
2388 return data_spc, data_cspc, data_dc, n
2389
2390 def pushData_ByLags(self):
2391 """
2392 Return the sum of the last profiles and the profiles used in the sum.
2393
2394 Affected:
2395
2396 self.__profileIndex
2397
2398 """
2399 bufferH=None
2400 buffer=None
2401 buffer1=None
2402 buffer_cspc=None
2403 self.__buffer_spc=numpy.array(self.__buffer_spc)
2404 if self.__buffer_cspc is not None:
2405 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
2406 freq_dc = int(self.__buffer_spc.shape[2] / 2)
2407 #print("FREQ_DC",freq_dc)
2408 #print(self.__buffer_spc[:,1,5,37,0])
2409 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
2410
2411 if self.nLags == 11:
2412 h0 = 7
2413 elif self.nLags == 16:
2414 h0 = 180
2415
2416
2417
2418 '''
2419 import matplotlib.pyplot as plt
2420 #plt.plot(self.__buffer_spc[:,0,freq_dc-2,33,1],marker='*')
2421 aux = self.__buffer_spc[:,0,freq_dc-2,66,1]
2422 a,b=self.hildebrand_sekhon_Integration(numpy.abs(aux),1)
2423 print(a)
2424 plt.plot(sorted(aux),marker='*')
2425 plt.vlines(x=a,ymin=min(aux),ymax=max(aux))
2426 #plt.ylim((-35000,65000))
2427 plt.show()
2428 import time
2429 time.sleep(60)
2430 exit(1)
2431 '''
2432
2433 print(self.nLags)
2434 '''
2435 if self.nLags == 16:
2436 self.nLags = 3
2437 #exit(1)
2438 '''
2439 #print(self.nHeights)
2440 #exit(1)
2441 for l in range(self.nLags):#dataOut.DPL):
2442 #breakFlag=False
2443 for k in range(7,self.nHeights):
2444 if self.__buffer_cspc is not None:
2445 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
2446 outliers_IDs_cspc=[]
2447 cspc_outliers_exist=False
2448 #indexmin_cspc=0
2449 for i in range(2):
2450 #for i in range(self.nChannels):#dataOut.nChannels):
2451 #if self.TrueLags:
2452 #print("HERE")
2453 '''
2454 if i==1 and k >= self.nHeights-2*l and self.TrueLags:
2455 #breakFlag=True
2456 print("here")
2457 exit(1)
2458 continue
2459 '''
2460
2461 #pass
2462 #else:
2463 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l])
2464 indexes=[]
2465 #sortIDs=[]
2466 outliers_IDs=[]
2467 for j in range(self.nProfiles):
2468 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
2469 continue
2470 if self.FlipChannelsExist:
2471 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2472 continue
2473 else:
2474 if i==1 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2475 continue
2476 #buffer=buffer1[:,j]
2477 buffer=(buffer1[:,j])
2478 '''
2479 if self.nLags ==16 and l!=0:
2480 print(buffer)
2481 exit(1)
2482 '''
2483 #index,sortID=self.hildebrand_sekhon_Integration(numpy.abs(buffer),1)
2484 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
2485 sortID = buffer.argsort()
2486
1171
2487 indexes.append(index)
1172 Inputs:
2488 #sortIDs.append(sortID)
2489 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
2490
1173
2491 sortdata=numpy.sort(buffer,axis=0)
1174 n : Number of coherent integrations
2492 avg=numpy.mean(sortdata[:index],axis=0)
1175 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
2493 #lt=outliers_IDs
1176 overlapping :
2494 #avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
2495
1177
2496 if index != buffer.shape[0]:
1178 """
2497 for p in list(sortID[index:]):
2498 buffer1[p,j]=avg
2499
1179
1180 self.__initime = None
1181 self.__lastdatatime = 0
2500
1182
2501 self.__buffer_spc[:,i,j,k,l]=numpy.copy(buffer1[:,j])
1183 self.__buffer_spc = []
2502 ###cspc IDs
1184 self.__buffer_cspc = []
2503 #indexmin_cspc+=indexmin_cspc
1185 self.__buffer_dc = 0
2504 if self.__buffer_cspc is not None:
2505 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
2506
1186
2507 #if not breakFlag:
1187 self.__profIndex = 0
2508 #print(outliers_IDs_cspc)
1188 self.__dataReady = False
2509 if self.__buffer_cspc is not None:
1189 self.__byTime = False
2510 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
2511 if cspc_outliers_exist:
2512 #sortdata=numpy.sort(buffer_cspc,axis=0)
2513 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
2514 lt=outliers_IDs_cspc
2515
1190
2516 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1191 if n is None and timeInterval is None:
2517 for p in list(outliers_IDs_cspc):
1192 raise ValueError("n or timeInterval should be specified ...")
2518 buffer_cspc[p,:]=avg
2519
1193
2520 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
1194 if n is not None:
1195 self.n = int(n)
1196 else:
2521
1197
2522 #else:
1198 self.__integrationtime = int(timeInterval)
2523 #break
1199 self.n = None
2524 '''
1200 self.__byTime = True
2525 import matplotlib.pyplot as plt
2526 plt.plot(sorted(self.__buffer_spc[:,0,freq_dc-2,66,1]),marker='*')
2527 #plt.ylim((0,1.1*1.e6))
2528 plt.ylim((-30000,65000))
2529 plt.show()
2530 import time
2531 time.sleep(60)
2532 exit(1)
2533 '''
2534
1201
2535 buffer=None
1202 def putData(self, data_spc, data_cspc, data_dc):
2536 bufferH=None
1203 """
2537 buffer1=None
1204 Add a profile to the __buffer_spc and increase in one the __profileIndex
2538 buffer_cspc=None
1205 """
2539
1206
2540 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
1207 self.__buffer_spc.append(data_spc)
2541 #print(self.__profIndex)
2542 #exit()
2543 '''
2544 if self.nLags == 16:
2545 print(self.__buffer_spc[:,0,0,0,2])
2546 exit(1)
2547 '''
2548
1208
2549 buffer=None
2550 #print(self.__buffer_spc[:,1,3,20,0])
2551 #print(self.__buffer_spc[:,1,5,37,0])
2552 data_spc = numpy.sum(self.__buffer_spc,axis=0)
2553
1209
2554 if self.__buffer_cspc is not None:
1210 if data_cspc is None:
2555 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
1211 self.__buffer_cspc = None
2556 else:
1212 else:
2557 data_cspc = None
1213 self.__buffer_cspc.append(data_cspc)
2558
1214
2559 #print(numpy.shape(data_spc))
1215 if data_dc is None:
2560 #data_spc[1,4,20,0]=numpy.nan
1216 self.__buffer_dc = None
1217 else:
1218 self.__buffer_dc += data_dc
2561
1219
1220 self.__profIndex += 1
2562
1221
2563 data_dc = self.__buffer_dc
1222 return
2564
1223
2565 n = self.__profIndex
1224 def hildebrand_sekhon_Integration_V2(self,data,navg):
1225 sortdata = numpy.sort(data, axis=None)
1226 sortID=data.argsort()
1227 lenOfData = len(sortdata)
1228 nums_min = lenOfData*0.75
1229 if nums_min <= 5:
1230 nums_min = 5
1231 sump = 0.
1232 sumq = 0.
1233 j = 0
1234 cont = 1
1235 while((cont == 1)and(j < lenOfData)):
1236 sump += sortdata[j]
1237 sumq += sortdata[j]**2
1238 if j > nums_min:
1239 P = sump / j
1240 Q = sumq/j - P **2
1241 R2 = P**2/(Q*navg)
1242 if R2 < 1:
1243 j = j - 1
1244 sump = sump - sortdata[j]
1245 sumq = sumq - sortdata[j]**2
1246 cont = 0
1247 j += 1
1248 #lnoise = sump / j
2566
1249
2567 self.__buffer_spc = None
1250 return j,sortID
2568 self.__buffer_cspc = None
2569 self.__buffer_dc = 0
2570 self.__profIndex = 0
2571
1251
2572 return data_spc, data_cspc, data_dc, n
1252 def hildebrand_sekhon_Integration(self,data,navg):
1253 sortdata = numpy.sort(data, axis=None)
1254 sortID=data.argsort()
1255 lenOfData = len(sortdata)
1256 nums_min = lenOfData*0.75 #*0.87
1257 if nums_min <= 5:
1258 nums_min = 5
1259 sump = 0.
1260 sumq = 0.
1261 j = 0
1262 cont = 1
1263 while((cont == 1)and(j < lenOfData)):
1264 sump += sortdata[j]
1265 sumq += sortdata[j]**2
1266 if j > nums_min:
1267 rtest = float(j)/(j-1) + 1.0/navg
1268 if ((sumq*j) > (rtest*sump**2)):
1269 j = j - 1
1270 sump = sump - sortdata[j]
1271 sumq = sumq - sortdata[j]**2
1272 cont = 0
1273 j += 1
1274 #lnoise = sump / j
1275
1276 return j,sortID
2573
1277
2574 def pushData(self):
1278 def pushData(self):
2575 """
1279 """
@@ -2584,126 +1288,200 class IntegrationFaradaySpectra3(Operation): #This class should manage data with
2584 buffer=None
1288 buffer=None
2585 buffer1=None
1289 buffer1=None
2586 buffer_cspc=None
1290 buffer_cspc=None
1291
2587 self.__buffer_spc=numpy.array(self.__buffer_spc)
1292 self.__buffer_spc=numpy.array(self.__buffer_spc)
2588 if self.__buffer_cspc is not None and self.clean_cspc:
1293 self.__buffer_cspc = numpy.array(self.__buffer_cspc)
2589 self.__buffer_cspc=numpy.array(self.__buffer_cspc)
1294
2590 freq_dc = int(self.__buffer_spc.shape[2] / 2)
1295 freq_dc = int(self.__buffer_spc.shape[2] / 2)
1296 #print("FREQ_DC",freq_dc)
1297 #print(self.__buffer_spc[:,1,5,37,0])
1298 #lag_array=[0,2,4,6,8,10,12,14,16,18,20]
2591
1299
2592 for k in range(7,self.nHeights):
1300 '''
2593 if self.__buffer_cspc is not None and self.clean_cspc:
1301 l lags
2594 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k])
1302 k heights
2595 outliers_IDs_cspc=[]
1303 i channel
2596 cspc_outliers_exist=False
1304 j profiles
2597
1305
2598 for i in range(2):
1306 Buffer_cspc and spc with dimensions
1307 [integration number(n), channel, profile, height, lag]
1308 '''
2599
1309
2600 #else:
1310 for l in range(self.DPL):#dataOut.DPL):
2601 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k])
1311 #breakFlag=False
2602 indexes=[]
1312 for k in range(7,self.nHeights):
2603 #sortIDs=[]
1313 buffer_cspc=numpy.copy(self.__buffer_cspc[:,0,:,k,l])
2604 outliers_IDs=[]
1314 outliers_IDs_cspc=[]
2605 for j in range(self.nProfiles):
1315 cspc_outliers_exist=False
2606 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
1316 #indexmin_cspc=0
1317 for i in range(self.nChannels): #dataOut.nChannels):
1318 ''' Recognition of index with outliers'''
1319 if i==1 and k >= self.nHeights-2*l:
1320 #breakFlag=True
2607 continue
1321 continue
2608 if self.FlipChannelsExist:
1322 #pass
2609 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2610 continue
2611 else:
1323 else:
2612 if i==1 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
1324 buffer1=numpy.copy(self.__buffer_spc[:,i,:,k,l]) # [int, profile]
2613 continue
1325 indexes=[]
2614 #buffer=buffer1[:,j]
1326 #sortIDs=[]
2615 buffer=(buffer1[:,j])
1327 outliers_IDs=[]
2616
1328 for j in range(self.nProfiles):
2617 #index,sortID=self.hildebrand_sekhon_Integration(numpy.abs(buffer),1)
1329 if i==0 and j==freq_dc: #NOT CONSIDERING DC PROFILE AT CHANNEL 0
2618 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
1330 continue
2619 sortID = buffer.argsort()
1331 if i==1 and j==0: #NOT CONSIDERING DC PROFILE AT CHANNEL 1
2620
1332 continue
2621 indexes.append(index)
1333 buffer=buffer1[:,j] # [int]
2622 #sortIDs.append(sortID)
1334
2623 outliers_IDs=numpy.append(outliers_IDs,sortID[index:])
1335 '''Finding the outlier index with Hildebrand Sekhon algorithm'''
2624
1336 index=int(_HS_algorithm.HS_algorithm(numpy.sort(buffer, axis=None),1))
2625 sortdata=numpy.sort(buffer,axis=0)
1337 sortID = buffer.argsort()
2626 avg=numpy.mean(sortdata[:index],axis=0)
1338 #index,sortID=self.hildebrand_sekhon_Integration(buffer,1)
2627 #lt=outliers_IDs
1339 indexes.append(index)
2628 #avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1340
2629
1341 #sortIDs.append(sortID)
2630 if index != buffer.shape[0]:
1342 outliers_IDs = numpy.append(outliers_IDs, sortID[index:])
2631 for p in list(sortID[index:]):
1343
2632 buffer1[p,j]=avg
1344 '''
1345 #if k == 39 or k == 38:
1346 m = 2.
1347 d = numpy.abs(buffer - numpy.median(buffer))
1348 mdev = numpy.median(d)
1349 s=d / mdev if mdev else numpy.zeros(len(d))
1350 outliers_IDs2 = numpy.where(s >= m)[0]
1351 outliers_IDs2 = numpy.sort(numpy.concatenate((sortID[index:], outliers_IDs2)))
1352 #print(sortID[index:], outliers_IDs2)
1353 outliers_IDs = numpy.append(outliers_IDs, outliers_IDs2)
1354 '''
1355
1356 '''
1357 #
1358 if k == 39:
1359 print("channel", i, " Profile", j, " Buffer:", buffer)
1360
1361 print("outliers_IDs ", sortID[index:])
1362 outliers_IDs_buffer = numpy.array(sortID[index:],dtype = int)
1363 NUM=numpy.size(buffer)
1364 plt.plot(range(NUM), buffer, 'b')
1365 plt.plot(outliers_IDs_buffer, buffer[numpy.array(outliers_IDs_buffer,dtype = int)], 'r.', label='Outliers')
1366 text_time = datetime.datetime.utcfromtimestamp(self.__initime)
1367 title = '{}Height{}km_Ch{}_Lag{}_Profile{}.png'.format(text_time,k*15,i,l,j)
1368 plt.title(title)
1369 plt.savefig('{}.png'.format(title),dpi = 50)
1370 plt.clf()
1371 '''
1372
1373
1374
1375
2633
1376
1377 outliers_IDs=numpy.array(outliers_IDs)
1378 outliers_IDs=outliers_IDs.ravel()
1379 outliers_IDs=numpy.unique(outliers_IDs)
1380 outliers_IDs=outliers_IDs.astype(numpy.dtype('int64'))
1381 indexes=numpy.array(indexes)
1382 indexmin=numpy.min(indexes)
2634
1383
2635 self.__buffer_spc[:,i,j,k]=numpy.copy(buffer1[:,j])
1384 #if indexmin != buffer1.shape[0]:
2636 ###cspc IDs
1385 if (indexmin != buffer1.shape[0]):
2637 #indexmin_cspc+=indexmin_cspc
1386 cspc_outliers_exist=True
2638 if self.__buffer_cspc is not None and self.clean_cspc:
1387 ###sortdata=numpy.sort(buffer1,axis=0)
1388 ###avg2=numpy.mean(sortdata[:indexmin,:],axis=0)
1389 lt = outliers_IDs
1390 time_text = datetime.datetime.utcfromtimestamp(self.__initime)
1391 '''Average profile signal value without taking account outleirs '''
1392 #if time_text.hour >= 11 or time_text.hour <= 19:
1393 if True:
1394 data_buffer1 = buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:]
1395 (mu, sigma) = numpy.apply_along_axis(lambda x: norm.fit(x), 0, data_buffer1)
1396 filtered_data = data_buffer1[(data_buffer1 >= 0) & (data_buffer1 <= 2 * mu[numpy.newaxis, :])]
1397 avg = numpy.median(filtered_data, axis=0)
1398 #avg=numpy.median(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1399 else:
1400 avg=numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:],axis=0)
1401
1402 ''' New outlier value take the average'''
1403 for p in list(outliers_IDs):
1404 buffer1[p,:] = avg
1405
1406 else:
1407 print("No average!!")
1408 '''Reasignate the buffer 1 edition to the original buffer'''
1409 self.__buffer_spc[:,i,:,k,l]=numpy.copy(buffer1)
1410 ###cspc IDs
1411 #indexmin_cspc+=indexmin_cspc
2639 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
1412 outliers_IDs_cspc=numpy.append(outliers_IDs_cspc,outliers_IDs)
2640
1413
2641 #if not breakFlag:
1414 ''' Same process for cross-spectra'''
2642 #print(outliers_IDs_cspc)
1415 #if not breakFlag:
2643 if self.__buffer_cspc is not None and self.clean_cspc:
2644 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
1416 outliers_IDs_cspc=outliers_IDs_cspc.astype(numpy.dtype('int64'))
2645 if cspc_outliers_exist:
1417 if cspc_outliers_exist:
2646 #sortdata=numpy.sort(buffer_cspc,axis=0)
1418 #sortdata=numpy.sort(buffer_cspc,axis=0)
2647 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
1419 #avg=numpy.mean(sortdata[:indexmin_cpsc,:],axis=0)
2648 lt=outliers_IDs_cspc
1420 lt = outliers_IDs_cspc
2649
1421 #if time_text.hour >= 11 or time_text.hour <= 19:
2650 avg=numpy.mean(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1422 if True:
1423 data_buffer_cspc = buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:]
1424 (mu, sigma) = numpy.apply_along_axis(lambda x: norm.fit(numpy.abs(x)), 0, data_buffer_cspc)
1425 mu = mu[numpy.newaxis, :]
1426 mask = (numpy.abs(data_buffer_cspc ) >= 0) & (numpy.abs(data_buffer_cspc ) <= 2 * mu)
1427 filtered_data = numpy.where(mask, data_buffer_cspc, numpy.nan)
1428 avg = numpy.nanmean(filtered_data, axis=0)
1429
1430 #avg=numpy.median(buffer_cspc[[t for t in range(buffer_cspc.shape[0]) if t not in lt],:],axis=0)
1431 else:
1432 avg = numpy.mean(buffer1[[t for t in range(buffer1.shape[0]) if t not in lt],:], axis=0)
1433
1434 #print("avg2",avg)
2651 for p in list(outliers_IDs_cspc):
1435 for p in list(outliers_IDs_cspc):
2652 buffer_cspc[p,:]=avg
1436 buffer_cspc[p,:]= avg
2653
2654 self.__buffer_cspc[:,0,:,k]=numpy.copy(buffer_cspc)
2655
1437
1438 self.__buffer_cspc[:,0,:,k,l]=numpy.copy(buffer_cspc)
1439 #else:
1440 #break
2656
1441
2657 buffer=None
1442 buffer=None
2658 bufferH=None
1443 bufferH=None
2659 buffer1=None
1444 buffer1=None
2660 buffer_cspc=None
1445 buffer_cspc=None
2661
1446
1447 #print("cpsc",self.__buffer_cspc[:,0,0,0,0])
1448 #print(self.__profIndex)
1449 #exit()
1450
2662 buffer=None
1451 buffer=None
2663 #print(self.__buffer_spc[:,1,3,20,0])
1452 #print(self.__buffer_spc[:,1,3,20,0])
2664 #print(self.__buffer_spc[:,1,5,37,0])
1453 #print(self.__buffer_spc[:,1,5,37,0])
1454 '''Integration of the improved spectra and cross-spectra'''
2665 data_spc = numpy.sum(self.__buffer_spc,axis=0)
1455 data_spc = numpy.sum(self.__buffer_spc,axis=0)
2666
1456 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
2667 if self.clean_cspc:
2668 if self.__buffer_cspc is not None:
2669 data_cspc = numpy.sum(self.__buffer_cspc,axis=0)
2670 else:
2671 data_cspc = None
2672 else:
2673 data_cspc = self.__buffer_cspc
2674
1457
2675 #print(numpy.shape(data_spc))
1458 #print(numpy.shape(data_spc))
2676 #data_spc[1,4,20,0]=numpy.nan
1459 #data_spc[1,4,20,0]=numpy.nan
2677
1460
2678
1461 #data_cspc = self.__buffer_cspc
2679 data_dc = self.__buffer_dc
1462 data_dc = self.__buffer_dc
2680
2681 n = self.__profIndex
1463 n = self.__profIndex
2682
1464
2683 self.__buffer_spc = None
1465 self.__buffer_spc = []
2684 if self.clean_cspc:
1466 self.__buffer_cspc = []
2685 self.__buffer_cspc = None
2686 else:
2687 self.__buffer_cspc = 0
2688 self.__buffer_dc = 0
1467 self.__buffer_dc = 0
2689 self.__profIndex = 0
1468 self.__profIndex = 0
2690
1469
2691 return data_spc, data_cspc, data_dc, n
1470 return data_spc, data_cspc, data_dc, n
2692
1471
2693 def byProfiles(self, data_spc, data_cspc, *args):
1472 def byProfiles(self, *args):
2694
1473
1474 """Call variables and push data"""
2695 self.__dataReady = False
1475 self.__dataReady = False
2696 avgdata_spc = None
1476 avgdata_spc = None
2697 avgdata_cspc = None
1477 avgdata_cspc = None
2698 avgdata_dc = None
1478 avgdata_dc = None
2699
1479
2700 self.putData(data_spc, data_cspc, *args)
1480 self.putData(*args)
2701
1481
2702 if self.__profIndex == self.n:
1482 if self.__profIndex == self.n:
2703 if self.ByLags:
1483
2704 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData_ByLags()
1484 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
2705 else:
2706 avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData()
2707 self.n = n
1485 self.n = n
2708 self.__dataReady = True
1486 self.__dataReady = True
2709
1487
@@ -2725,89 +1503,53 class IntegrationFaradaySpectra3(Operation): #This class should manage data with
2725
1503
2726 return avgdata_spc, avgdata_cspc, avgdata_dc
1504 return avgdata_spc, avgdata_cspc, avgdata_dc
2727
1505
2728 def integrate(self, datatime, data_spc, data_cspc, *args):
1506 def integrate(self, datatime, *args):
1507
1508 """Integration if the signal by n datablocks"""
2729
1509
2730 if self.__profIndex == 0:
1510 if self.__profIndex == 0:
2731 self.__initime = datatime
1511 self.__initime = datatime
2732 #print(data_cspc.shape)
2733
2734 #self.__buffer_spc = numpy.empty_like(data_spc,shape=(self.n,self.nChannels,self.nProfiles,self.nHeights,self.nLags))
2735 if self.ByLags:
2736 self.__buffer_spc = numpy.ones_like(data_spc,shape=(self.n,self.nChannels,self.nProfiles,self.nHeights,self.nLags))*numpy.NAN
2737 else:
2738 self.__buffer_spc = numpy.ones_like(data_spc,shape=(self.n,self.nChannels,self.nProfiles,self.nHeights))*numpy.NAN
2739
1512
2740 #print(self.__buffer_spc[0])
2741 #print(self.__buffer_spc.dtype)
2742 #print(data_spc.dtype)
2743
2744 if data_cspc is not None:
2745 nCrossChannels = numpy.shape(data_cspc)[0]
2746 if self.ByLags:
2747 nLags = numpy.shape(data_cspc)[-1]
2748
2749 self.__buffer_cspc = numpy.ones_like(data_cspc,shape=(self.n,nCrossChannels,self.nProfiles,self.nHeights,nLags))*numpy.NAN
2750 else:
2751 if self.clean_cspc:
2752 self.__buffer_cspc = numpy.ones_like(data_cspc,shape=(self.n,nCrossChannels,self.nProfiles,self.nHeights))*numpy.NAN
2753 else:
2754 self.__buffer_cspc = 0
2755 else:
2756 self.__buffer_cspc = None
2757 #print("HEREEEE")
2758 #print(self.__buffer_cspc.dtype)
2759 #print(data_cspc.dtype)
2760 #exit(1)
2761 if self.__byTime:
1513 if self.__byTime:
2762 avgdata_spc, avgdata_cspc, avgdata_dc = self.byTime(
1514 avgdata_spc, avgdata_cspc, avgdata_dc = self.byTime(
2763 datatime, *args)
1515 datatime, *args)
2764 else:
1516 else:
2765 avgdata_spc, avgdata_cspc, avgdata_dc = self.byProfiles(data_spc, data_cspc, *args)
1517 avgdata_spc, avgdata_cspc, avgdata_dc = self.byProfiles(*args)
2766
1518
2767 if not self.__dataReady:
1519 if not self.__dataReady:
2768 return None, None, None, None
1520 return None, None, None, None
2769
1521
2770 return self.__initime, avgdata_spc, avgdata_cspc, avgdata_dc
1522 return self.__initime, avgdata_spc, avgdata_cspc, avgdata_dc
2771
1523
2772 def run(self, dataOut, n=None, timeInterval=None, overlapping=False,TrueLags=True,clean_cspc=True):
1524 def run(self, dataOut, n=None, timeInterval=None, overlapping=False):
1525 '''If no integration then exit'''
2773 if n == 1:
1526 if n == 1:
1527 dataOut.VelRange = dataOut.getVelRange(0)
2774 return dataOut
1528 return dataOut
2775
1529
2776 dataOut.flagNoData = True
1530 dataOut.flagNoData = True
2777 self.clean_cspc = clean_cspc
1531 ''' Assignation setup of integration time or number of integrations '''
2778
1532 if not self.isConfig: #assignation setup of integration time or number of integrations
2779 if not self.isConfig:
2780 self.setup(n, timeInterval, overlapping)
1533 self.setup(n, timeInterval, overlapping)
2781 try:
2782 dataOut.FlipChannels
2783 self.FlipChannelsExist=1
2784 except:
2785 self.FlipChannelsExist=0
2786 self.isConfig = True
1534 self.isConfig = True
2787
1535
2788 self.nProfiles=dataOut.nProfiles
1536 '''Integration call'''
2789 self.nChannels=dataOut.nChannels
2790 self.nHeights=dataOut.nHeights
2791 self.ByLags = dataOut.ByLags
2792 if not dataOut.ByLags:
1537 if not dataOut.ByLags:
2793 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
1538 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
2794 dataOut.data_spc,
1539 dataOut.data_spc,
2795 dataOut.data_cspc,
1540 dataOut.data_cspc,
2796 dataOut.data_dc)
1541 dataOut.data_dc)
2797 else:
1542 else:
2798 #self.nProfiles=dataOut.nProfiles
1543 self.nProfiles=dataOut.nProfiles
2799 #self.nChannels=dataOut.nChannels
1544 self.nChannels=dataOut.nChannels
2800 #self.nHeights=dataOut.nHeights
1545 self.nHeights=dataOut.nHeights
2801 self.nLags=dataOut.nLags
1546 self.DPL=dataOut.DPL
2802 self.TrueLags=TrueLags
2803
2804
2805
2806 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
1547 avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime,
2807 dataOut.dataLag_spc,
1548 dataOut.dataLag_spc,
2808 dataOut.dataLag_cspc,
1549 dataOut.dataLag_cspc,
2809 dataOut.dataLag_dc)
1550 dataOut.dataLag_dc)
2810
1551
1552 '''Asignate integrated data to output'''
2811 if self.__dataReady:
1553 if self.__dataReady:
2812
1554
2813 if not dataOut.ByLags:
1555 if not dataOut.ByLags:
@@ -2819,19 +1561,19 class IntegrationFaradaySpectra3(Operation): #This class should manage data with
2819 dataOut.dataLag_cspc = avgdata_cspc
1561 dataOut.dataLag_cspc = avgdata_cspc
2820 dataOut.dataLag_dc = avgdata_dc
1562 dataOut.dataLag_dc = avgdata_dc
2821
1563
2822 dataOut.data_spc=dataOut.dataLag_spc[:,:,:,dataOut.LagPlot].real
1564 dataOut.data_spc=dataOut.dataLag_spc[:,:,:,dataOut.LagPlot]
2823
1565 dataOut.data_cspc=dataOut.dataLag_cspc[:,:,:,dataOut.LagPlot]
2824 if self.__buffer_cspc is not None:
2825 dataOut.data_cspc=dataOut.dataLag_cspc[:,:,:,dataOut.LagPlot]
2826 dataOut.data_dc=dataOut.dataLag_dc[:,:,dataOut.LagPlot]
1566 dataOut.data_dc=dataOut.dataLag_dc[:,:,dataOut.LagPlot]
2827
1567
2828
1568 dataOut.VelRange = dataOut.getVelRange(0)
2829 dataOut.nIncohInt *= self.n
1569 dataOut.nIncohInt *= self.n
2830 dataOut.utctime = avgdatatime
1570 dataOut.utctime = avgdatatime
2831 dataOut.flagNoData = False
1571 dataOut.flagNoData = False
2832
1572
2833 return dataOut
1573 return dataOut
2834
1574
1575
1576
2835 class IntegrationFaradaySpectraNoLags(Operation):
1577 class IntegrationFaradaySpectraNoLags(Operation):
2836 '''
1578 '''
2837 Written by R. Flores
1579 Written by R. Flores
@@ -4021,6 +2763,7 class SpectraDataToFaraday(Operation): #ISR MODE
4021 input()
2763 input()
4022 '''
2764 '''
4023
2765
2766 # Normalization Factor that take account the Number of integrations and profiles
4024 def normFactor(self,dataOut):
2767 def normFactor(self,dataOut):
4025 dataOut.rnint2=numpy.zeros(dataOut.DPL,'float32')
2768 dataOut.rnint2=numpy.zeros(dataOut.DPL,'float32')
4026 for l in range(dataOut.DPL):
2769 for l in range(dataOut.DPL):
@@ -4036,7 +2779,7 class SpectraDataToFaraday(Operation): #ISR MODE
4036 dataOut.data_spc = dataOut.dataLag_spc[:,:,:,lag]
2779 dataOut.data_spc = dataOut.dataLag_spc[:,:,:,lag]
4037 dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=46)
2780 dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=46)
4038 #dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=33,ymax_index=46)
2781 #dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=33,ymax_index=46)
4039 '''
2782 '''
4040 #print(dataOut.NDP)
2783 #print(dataOut.NDP)
4041 #exit(1)
2784 #exit(1)
4042 #Channel B
2785 #Channel B
@@ -4176,16 +2919,16 class SpectraDataToFaraday(Operation): #ISR MODE
4176
2919
4177 self.normFactor(dataOut)
2920 self.normFactor(dataOut)
4178 #print(dataOut.NDP)
2921 #print(dataOut.NDP)
4179 dataOut.NDP=dataOut.nHeights
2922 dataOut.NDP=dataOut.nHeights # Number of heights for Double Pulse.*
4180 dataOut.NR=len(dataOut.channelList)
2923 dataOut.NR=len(dataOut.channelList) # num receptores (channels)
4181 dataOut.DH=dataOut.heightList[1]-dataOut.heightList[0]
2924 dataOut.DH=dataOut.heightList[1]-dataOut.heightList[0] # delta H
4182 dataOut.H0=int(dataOut.heightList[0])
2925 dataOut.H0=int(dataOut.heightList[0]) # H(0)
4183
2926
4184 self.ConvertData(dataOut)
2927 self.ConvertData(dataOut)
4185 #print(dataOut.NDP)
2928 #print(dataOut.NDP)
4186 #exit(1)
2929 #exit(1)
4187 dataOut.NAVG=16#dataOut.rnint2[0] #CHECK THIS!
2930 dataOut.NAVG=16#dataOut.rnint2[0] #CHECK THIS!
4188 if hasattr(dataOut, 'NRANGE'):
2931 if hasattr(dataOut, 'NRANGE'): # NRANGE.- Number of samples for Long Pulse.
4189 dataOut.MAXNRANGENDT = max(dataOut.NRANGE,dataOut.NDT)
2932 dataOut.MAXNRANGENDT = max(dataOut.NRANGE,dataOut.NDT)
4190 else:
2933 else:
4191 dataOut.MAXNRANGENDT = dataOut.NDP
2934 dataOut.MAXNRANGENDT = dataOut.NDP
@@ -4381,7 +3124,8 class SpectraDataToFaraday_MST(Operation): #MST MODE
4381 #dataOut.kabxys_integrated[5][:,:,0]+=self.dataLag_spc[0,:,:].imag
3124 #dataOut.kabxys_integrated[5][:,:,0]+=self.dataLag_spc[0,:,:].imag
4382 dataOut.kabxys_integrated[6][:,:,0]=self.dataLag_spc[1,:,:].real
3125 dataOut.kabxys_integrated[6][:,:,0]=self.dataLag_spc[1,:,:].real
4383 #dataOut.kabxys_integrated[7][:,:,0]+=self.dataLag_spc[1,:,:].imag
3126 #dataOut.kabxys_integrated[7][:,:,0]+=self.dataLag_spc[1,:,:].imag
4384
3127 print("self.dataLag_cspc shape:", self.dataLag_cspc.shape)
3128 print("dataOut.kabxys_integrated[8][:,:,0]", dataOut.kabxys_integrated[8][:,:,0])
4385 dataOut.kabxys_integrated[8][:,:,0]=self.dataLag_cspc[0,:,:].real
3129 dataOut.kabxys_integrated[8][:,:,0]=self.dataLag_cspc[0,:,:].real
4386 dataOut.kabxys_integrated[10][:,:,0]=self.dataLag_cspc[0,:,:].imag
3130 dataOut.kabxys_integrated[10][:,:,0]=self.dataLag_cspc[0,:,:].imag
4387
3131
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now