Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 3 minutes, m27trognondepomme a dit : @lock042Je sens que tu vas te mettre au maintenant au python J'allais poser la question: pourquoi C et pas Python? Pro/Cons?
lock042 Posté 16 novembre 2020 Posté 16 novembre 2020 Le C est un langage d'assez bas niveau et beaucoup plus rapide que le python. Par contre .... faut gérer la mémoire. @m27trognondepomme : je dois m'y mettre dans le cadre de mon taf. J'ai d'ailleurs acheter ça : https://www.amazon.com/Learning-Scientific-Programming-Python-Christian/dp/110742822X
m27trognondepomme Posté 16 novembre 2020 Auteur Posté 16 novembre 2020 Python: on se prend pas la tête, pas de typage fort, beaucoup de libraries existantes mais C/C++ c'est plus efficace en terme performance temps réel à l’instant, lock042 a dit : Par contre .... faut gérer la mémoire. et les pointeurs null
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 Donc un, finger in the nose, l'autre Alka-Seltzer?
m27trognondepomme Posté 16 novembre 2020 Auteur Posté 16 novembre 2020 Professionnellement, je programme en C/C++ ( voir même au niveau AVX pour les calculs intensif ) Python, c'est pour le loisir astro. 1
m27trognondepomme Posté 16 novembre 2020 Auteur Posté 16 novembre 2020 (modifié) Le module importation est un job pour un script python. c'est quoi le sous dossier Angle ? l'angle de l'appareil dans le porte-oculaire ? y a-t-il un réel intérêt pour le flat et le flatdark ? Modifié 16 novembre 2020 par m27trognondepomme
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 il y a 1 minute, m27trognondepomme a dit : Angle ? l'angle de l'appareil dans le porte-oculaire ? Oui, mais pour limiter les options, on reste dans les positions horaires. Intéressant pour ceux qui font ainsi leur cadrage, sans être obligé de refaire a chaque fois des flats... Tu captures une fois à 5h... si sur un autre champ, 5h te donne un resultat ok, tu sais que tes flat seront suffisants. Et puis, c'est mieux que d'avoir 15 répertoires de Flat, sans se souvenir de qui correspond a quoi... et plus pouvoir s'en resservir. Perso, mon rotator intégré au FRA400 n'est pas gradué, mais avec mon DO, je peux relativement précisément reprendre une orientation style cadran montre... il y a 1 minute, m27trognondepomme a dit : y a-t-il un réel intérêt pour le flat et le flatdark ? Pour le DarkFlat/FLatDark pas d'importance réelle l'angle, sauf à vouloir garder le "lien" avec le Flat correspondant, sans retourner au niveau nom de fichier retrouver Exp_gain_temp correspondant au Flat... Donc, sauf si le Python se mort la queue, comme c'est lui qui bosse....
Sebriviere Posté 16 novembre 2020 Posté 16 novembre 2020 (modifié) il y a une heure, lock042 a dit : @m27trognondepomme : je dois m'y mettre dans le cadre de mon taf. J'ai d'ailleurs acheter ça : https://www.amazon.com/Learning-Scientific-Programming-Python-Christian/dp/110742822X Et un autre, qui parte de plus loin... histoire de combler le precipice ? J'ai bien un "Doing Data Science" qui traine... mais ca va pas me permettre de refaire Lightroom.... Sans rentrer dans le calcul parallèle, HPC et Exaflop.... Pour le précipice, pas une corde raide... une bonne passerelle bien solide. Modifié 16 novembre 2020 par Sebriviere
Sebriviere Posté 20 novembre 2020 Posté 20 novembre 2020 Ça regarde tuto... Ça mûri .... pas encore commencer à coder...
m27trognondepomme Posté 22 novembre 2020 Auteur Posté 22 novembre 2020 pour t'aider , j'ai écris un début d'ébauche de la fonction import des fichiers ASIair: prj-AsiAirImport.zip Le fichier "SimulStructAsiAirFiles.py" sert uniquement à créer une structure simulant l'asiair sur mon disque 😧 pour tester. ( python SimulStructAsiAirFiles.py) Le fichier AsiAirImport.py est la fonction d'import des fichier ASIair dans le dossier D:/PC_ASIAIR selon le fichier pdf de spécification. elle se lance dans une console : python AsiAirImport.py
Sebriviere Posté 22 novembre 2020 Posté 22 novembre 2020 il y a 8 minutes, m27trognondepomme a dit : j'ai écris un début d'ébauche de la fonction import des fichiers ASIair: Merci, Ca ressemble beaucoup a ce que ..... je n'ai pas encore reussi a faire. import Constantes ?? J'a pas ça, ça vient d'où? Perso, je me perds pit-etre... j'explore Tkinter->GUI...
m27trognondepomme Posté 22 novembre 2020 Auteur Posté 22 novembre 2020 à l’instant, Sebriviere a dit : import Constantes j'ai crée un fichier Constantes.py qui contient l'arborescence de l'asiair car j'utilisais ces données pour les 2 scripts AsiAirImport.py et SimulStructAsiAirFiles.py . il y a 3 minutes, Sebriviere a dit : Perso, je me perds pit-etre... j'explore Tkinter->GUI... je te conseille de travailler en mode console dans un premier temps pour mettre au point tes algos. Une fois prêt, tu rajouteras l'interface graphique.
Sebriviere Posté 22 novembre 2020 Posté 22 novembre 2020 il y a 5 minutes, m27trognondepomme a dit : Une fois prêt, tu rajouteras l'interface graphique. C'est pour ca que les boeuf n'arrivaient pas a pousser la charrue? Je t'avouerai que ca part dans tous les sens entre mes deux neurones... En plus, Python c'est super simple, je parcours les tutos, je comprends les 15 à 20 lignes de codes dedans... Apres, ça doit etre du code volatile, car d'un tuto a l'autre, ma comprehension d'avant a disparu... Je pense que ca restera comme ça tant que j'aurai pas de camboui sous les ongles.
Sebriviere Posté 23 novembre 2020 Posté 23 novembre 2020 (modifié) @m27trognondepomme, J'ai essayé un de tes script du debut, page 1, soucis avec les ' et "... pas sûr d'où que c'est? erreur script.txt Obliger de mettre ds un .txt, sinon, dans le corps du msg, il me renvoit une erreur "webastro" pas le droit d'accéder....? Modifié 23 novembre 2020 par Sebriviere
Sebriviere Posté 23 novembre 2020 Posté 23 novembre 2020 Il y a 1 heure, Sebriviere a dit : 'ai essayé un de tes script du debut, page 1, soucis avec les ' et "... pas sûr d'où que c'est? J'a compris, en faisant tourner l'autre prog, celui de la distri pySiril.... en fait, je pense que ce sont les \ et / qui bloquent. Si j'étais un pro de python, je dirai ca sent le os.path.normpath()
Sebriviere Posté 30 novembre 2020 Posté 30 novembre 2020 (modifié) Ca progresse, mais le neurone il permet pas le multithreading, ni est multi-core. Et comme j'ai zappé le mode debugge de VS_Code.... ca prend du temps de trouver ou ca bloque.... 1er écueil: structure du nom de fichier ASIAir, avec date YYYYMMDD-hhmmss, donc il a fallu re-splité récupérer la date en passant vi date_long, puis horodatage.... (nom,exp,bin,gain,date_long,temp,serial) = fields horodatage = str.split(date_long, '-') (date,heure) = horodatage 2nd écueil: temp (température), pour ne pas avoir 37 répertoires, un pour chaque température de capteur, il a fallu "normaliser" tout ça...première méthode, mais peux élégante, puis essai de tuple... mieux (enfin, entre var, bool, int, str....)... 1ere méthode, code version ZX81/Oric Atmos (avec les print de débogage): print('temp as is', temp) temp = str.removesuffix(temp, "C") print ('str.remsufx', temp) # print('float', float(temp), 'int', int(temp, base=0)) temp = float(temp) if -2 <= temp <= 2: temp = '0' print ('1st IF:', temp) else: if -7 <= temp <= -3: temp = '-5' print ('2nd IF:', temp) else: if -12 <= temp <= -8: temp = '-10' print ('3rd IF:', temp) else: if -17 <= temp <= -13: temp = '-15' print ('4th IF:', temp) else: if -22 <= temp <= -18: temp = '-20' print ('5th IF:', temp) else: print ('last else', temp) temp = 'ERROR' Les moins de 30 ans peuvent envoyer les rires, mais nous les vieux, on sait ce qu'est un ZX81 ou un Oric Atmos.... et a quoi servait load$ (Yes = C64) Bon, on calme les rires, méthode plus 21ieme siècle, les tuples: temperature = (-20, -15, -10, -5, 0, 5) # ---------------- temp = float(str.removesuffix(temp, "C")) print('temp before for loop: ', temp) for x in temperature: print('Valeur X:', x, ' Valeur Temp:', temp) if not 0 <= abs(x-temp) <= 1: if not 1 < abs(x-temp) <= 2.5: continue else: temp = '_MISMTCH_' print(temp) else: temp = str(x) print(x, temp) if temp == str(x) or temp == '_MISMTCH_': print('Sortie For?:', x, temp) break else: continue else: if temp == x or temp == '_MISMTCH_': break else: temp = 'NO COOLING or ERROR' Mieux? certainement à reprendre et améliorer... ne serait-ce que la bonne instruction pour se virer d'une boucle for... On peut en faire une routine? pas avoir à insérer ces lignes de code a chaque type de fichier (Dark, Bias, Light....), faut faire un bloc def temperature(temp): et l'appeler dans les autres def selon besoin? @m27trognondepomme, tu avais raison, il y a du squelette a mettre en place, avant de penser GUI. Modifié 30 novembre 2020 par Sebriviere
m27trognondepomme Posté 30 novembre 2020 Auteur Posté 30 novembre 2020 (modifié) une version un peu plus allégée : #! /usr/bin/env python # -*- coding: UTF-8 -*- def get_temp( temp ) : temp = float(temp[:-1]) # -1 enleve le suffixe "C" step_T=5 for rr in range( -25,30,step_T): # range de -25°C à 25°C par pas de 5°C if temp > float(rr)-step_T/2.0 and temp <= float(rr)+step_T/2.0 : return str(rr) + "C" return "NO_COOLING" # quelques tests temp="-2.6C" print(temp , " => " , get_temp( temp ) ) temp="7.6C" print(temp , " => " , get_temp( temp )) temp="35C" print(temp , " => " , get_temp( temp )) Modifié 30 novembre 2020 par m27trognondepomme
Sebriviere Posté 30 novembre 2020 Posté 30 novembre 2020 il y a 2 minutes, m27trognondepomme a dit : une version un peu plus allégée : C'est sur, ca fait plus "serious" comme dirait l'autre avec le flingue de Leon sur le front, "he looks serious"
m27trognondepomme Posté 30 novembre 2020 Auteur Posté 30 novembre 2020 (modifié) Le 23/11/2020 à 12:50, Sebriviere a dit : @m27trognondepomme, J'ai essayé un de tes script du debut, page 1, soucis avec les ' et "... pas sûr d'où que c'est? erreur script.txt 1 Ko · 1 download Obliger de mettre ds un .txt, sinon, dans le corps du msg, il me renvoit une erreur "webastro" pas le droit d'accéder....? ton erreur est liée au chemin windows qui faut écrire avec 2 '\' car sinon c'est pris comme une séquence escape. par exemple: app.Execute("cd C:\Users\sebri\Pictures\SIRIL") # KO app.Execute("cd C:\\Users\\sebri\\Pictures\\SIRIL") # OK mais je crois que siril préfère cette forme : app.Execute("cd C:/Users/sebri/Pictures/SIRIL") # OK Modifié 30 novembre 2020 par m27trognondepomme
m27trognondepomme Posté 30 novembre 2020 Auteur Posté 30 novembre 2020 il y a 4 minutes, Sebriviere a dit : C'est sur, ca fait plus "serious" comme dirait l'autre avec le flingue de Leon sur le front, "he looks serious" en se creusant un peu les méninges, on doit pouvoir l'écrire en 1 ligne ( au détriment de la lisibilité )
m27trognondepomme Posté 30 novembre 2020 Auteur Posté 30 novembre 2020 (modifié) une variante intégrant les Tmin,Tmax et le pas dans les paramètres avec une valeur par défaut. Ainsi, tu peux modifier le pas , le Tmin ou Tmax à l'appel de la fonction. #! /usr/bin/env python # -*- coding: UTF-8 -*- def get_temp( temp , Tmin=-25, Tmax=16, step_T=5) : # range par défaut de -25°C à 15°C par pas de 5°C temp = float(temp[:-1]) # -1 enleve le suffixe "C" for rr in range( Tmin,Tmax,step_T): if temp > float(rr)-step_T/2.0 and temp <= float(rr)+step_T/2.0 : return str(rr) + "C" return "NO_COOLING" temp="-2.6C" print(temp , " => " , get_temp( temp )) temp="7.6C" print(temp , " => " , get_temp( temp,step_T=2 )) # changement de pas temp="25C" print(temp , " => " , get_temp( temp )) Modifié 30 novembre 2020 par m27trognondepomme
Sebriviere Posté 30 novembre 2020 Posté 30 novembre 2020 il y a 28 minutes, m27trognondepomme a dit : une variante intégrant les Tmin,Tmax et le pas dans les paramètres avec une valeur par défaut. Ainsi, tu peux modifier le pas , le Tmin ou Tmax à l'appel de la fonction. Cool, ca me permet de mieux appréhender le code... serait plus pratique avec un ou deux bon bouquins de référence ... En plus, la on a un retour pour les anomalies... faut que je digère ça...
Sebriviere Posté 1 décembre 2020 Posté 1 décembre 2020 J'ai rajouté for rr in range( Tmin,(Tmax+step_T),step_T): afin que le Tmax soit pris en compte, sinon, dernier pas est ignoré. Je pense qu'un Tmax+1 aurait suffit, mais comme ça, plus propre et flexible je pense... La digestion c'est bien passée, une fois compris que c'était bien une fonction, qui retournait le résultat d'une fonction et non un changement d'affectation de la valeur d'une variable... donc f(x) et non y=f(x)... car temp reste temp...
vinvin Posté 1 décembre 2020 Posté 1 décembre 2020 les divisions entières font ce que tu voulais avec les ranges en plus simple et rapide aussi
Sebriviere Posté 1 décembre 2020 Posté 1 décembre 2020 (modifié) il y a 40 minutes, vinvin a dit : les divisions entières font ce que tu voulais avec les ranges en plus simple et rapide aussi Tu chercherais pas à m'enduire de confusion toi? A chaque solution son problème et pas plus d'un par étapes.... Des suggestions de bon bouquins les codeurs? Ou la toile reste suffisante et parfaite? Parce que, meme si la proposition de @m27trognondepomme reste "basique" mais élégante... attention, je l'aime bien notre "trognon".... allez pas me le composter... ben tuto et web, ca reste super basic et super...ficiel. Rien croisé de ce niveau... ou pas trouvé. Modifié 1 décembre 2020 par Sebriviere 1
Sebriviere Posté 6 décembre 2020 Posté 6 décembre 2020 (modifié) @m27trognondepomme, @Cissou8 et autres adeptes du "Snake" Voilà de quoi rigoler pour éclairer votre dimanche... Où en suis-je de ce programme.... Ca avance, je me crée des def, des chemins de répertoires .... bref, je suis toujours dessus, je me fais des nœuds au cerveau entre variables globales, locales.... Alors il y a toujours des 'print()' a droite a gauche, voir ou il en est... des #### histoire de désactiver ligne quand plus besoin... Mais, pour le moment, ca fait ce que j'attends, je retransforme au fur et a mesure que je résous un truc, je le passe dans l'autre... J'avais même fait un Jason "User_default"... mais comme je ne vois pas encore l'exploitation derrière, je le réinviterai peut-être plus tard, après le confinement... J'ai encore pas finalisé quelle structure de biblio je veux... que cela ne ressemble pas a celle du Vatican et qu'on s'y perde. Ca suit son cours.... AsiAirImport_Seb.py Parce que fichier type ASIAir, il y a un filtre, que j'ai pas (le _R_) Modifié 6 décembre 2020 par Sebriviere
m27trognondepomme Posté 6 décembre 2020 Auteur Posté 6 décembre 2020 Bonne prise en main du "boa constricteur". en pièce jointe, j'ai factorisé dans une fonction certaines actions que tu répétais à plusieurs endroits : AsiAirImport_Seb.py je ne suis pas trop fan des variables globales, c'est plus propre de les passer en paramètres à la fonction (ex EWF) tu peux faire des print sur plusieurs lignes en utilisant le triple " 1
Sebriviere Posté 6 décembre 2020 Posté 6 décembre 2020 il y a 2 minutes, m27trognondepomme a dit : je ne suis pas trop fan des variables globales, c'est plus propre de les passer en paramètres à la fonction (ex EWF) Merci... je vais étudier ça, et faire mes devoirs... En fait, je vais nettoyer tout ça, la compréhension de def=fonction= comment ça me broute avec variables... vient de franchir un pas hier... donc le code devrait se simplifier... 1
Cissou8 Posté 6 décembre 2020 Posté 6 décembre 2020 (modifié) Salut @Sebriviere, alors moi aussi, j'ai mis mon nez dedans et j'ai mis des trucs a ma sauce. AsiAirImport_Seb.py. Notamment l’écriture du json pour sauver les options par défaut et pas les redemander a chaque fois. J'ai pas encore bien compris ou tu t'en sers par la suite. Sinon comme dit @m27trognondepomme, les variables globales, a moins d’être bien au clair sur les scopes de chaque morceau de ton code, ça devient vite complique a gérer. Et attention, t'as qqs noms de variables, du style bin et filter qui sont des noms de méthodes standards, tu pourrais finir te prendre les pieds dans le tapis. Si tu veux que je te file un coup de main pour setter VS Code, envoie moi un MP. Parce bon, les prints pour debugger, ca va bien 5 min mais ça aide pas a tout comprendre. Mais c'est cool, ça avance! C. Modifié 6 décembre 2020 par Cissou8 1
Cissou8 Posté 7 décembre 2020 Posté 7 décembre 2020 Salut, pour commencer la semaine et donner envie a ceux qui oseraient pas se lancer avec pySiril, une p'tite fonction qui utilise les retours de valeurs. Ça s'appelle seqstat.py et comme son nom l'indique, ça sort les stats d'une séquence sous forme d'un csv. Ça permet de vérifier, entre autres, si les flats/darks sont stables en niveau ou bruit (problème de fuite de lumière etc...) avant de monter un master. Enfin bon, j'imagine qu'y a plein d'autres façons de s'en servir, a vous de jouer. Comme j'ai un peu fait ma feignasse pour mettre en forme les sorties, vous aurez besoin de pandas ("pip install pandas" sur Windows). seqstat.py 2
Messages recommandés