Aller au contenu

pySiriL


Messages recommandés

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....

Lien vers le commentaire
Partager sur d’autres sites

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é par Sebriviere
Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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...

 

Lien vers le commentaire
Partager sur d’autres sites

à 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.

 

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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() 

Lien vers le commentaire
Partager sur d’autres sites

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, -505)
# ----------------
        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é par Sebriviere
Lien vers le commentaire
Partager sur d’autres sites

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é par m27trognondepomme
Lien vers le commentaire
Partager sur d’autres sites

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é par m27trognondepomme
Lien vers le commentaire
Partager sur d’autres sites

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é par m27trognondepomme
Lien vers le commentaire
Partager sur d’autres sites

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... 

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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é par Sebriviere
  • Comme je me gausse! 1
Lien vers le commentaire
Partager sur d’autres sites

@m27trognondepomme, @Cissou8 et autres adeptes du "Snake"

Voilà de quoi rigoler pour éclairer votre dimanche...

 

 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_)

 

 

20201010_224516_reduced.jpg

Modifié par Sebriviere
Lien vers le commentaire
Partager sur d’autres sites

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 "

 

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

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...

  • Comme je me gausse! 1
Lien vers le commentaire
Partager sur d’autres sites

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é par Cissou8
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

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

  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.