15 posts
Community Bonding Period: JuliaAstro
Why this Community Bonding Period(CBP)? According to Google, “The community bonding period is when you work out further details of your project plan, schedule regular upcoming meetings with your mentor, get your development environment set up and start to engage with the project’s open source community. This is the time to work with your mentor on setting expectations for your interactions and how your progress is measured during the GSoC program. Hopefully, you have already participated in many discussions with your mentor, clarifying the project and expectations during the application period, but now is the time to finalize your plans.” How this period went for me? It really fulfilled everything it was supposed to. Hats off to Google for this initiative of adding an extra month in the timeline. So, In my whole project, I had most of the things figured out, like what will go in, what will go out, how will it be structured and implemented. Despite this, it follows a big BUT… But a very crucial and challenging task is to port reproject from astropy. It’s like the most important feature of the project and requires some complex work like understanding the python version and figuring out a Julian way to write it.......
WCS.jl Package Analysis
Why WCS.jl package After the introduction of package FITSIO.jl for handling FITS files in Julia, another package was required to manage the World Coordinate System(WCS) transformations of a FITS object. The WCS info. is present in the header of one of the HDU(s) of a FITS file. These transformations map the pixel locations in an image to their real-world units, such as their position on the sky sphere. These transformations can work both forward (from pixel to sky) and backward (from sky to pixel). This package wraps the WCSLIB C library. Installation WCS.jl is a registered package in Julia and can be installed from package manager as: pkg> add WCS or it can be build from source as: julia> Pkg.clone("https://github.com/JuliaAstro/WCS.jl") Usage After installing the package, you can start using it with julia> using WCS Creating a WCS object WCS objects are defined by a type WCSTransform which contains the following fields based on the information present in the header: flag::Cint naxis::Cint crpix::Ptr{Cdouble} pc::Ptr{Cdouble} cdelt::Ptr{Cdouble} crval::Ptr{Cdouble} cunit::Ptr{Cvoid} ctype::Ptr{Cvoid} lonpole::Cdouble latpole::Cdouble restfrq::Cdouble restwav::Cdouble npv::Cint npvmax::Cint pv::Ptr{PVCard} nps::Cint npsmax::Cint ps::Ptr{PSCard} cd::Ptr{Cdouble} crota::Ptr{Cdouble} altlin::Cint velref::Cint alt::NTuple{4, UInt8} colnum::Cint colax::Ptr{Cint} cname::Ptr{Cvoid} crder::Ptr{Cdouble} csyer::Ptr{Cdouble} czphs::Ptr{Cdouble} cperi::Ptr{Cdouble} wcsname::NTuple{72, UInt8} timesys::NTuple{72, UInt8} trefpos::NTuple{72, UInt8} trefdir::NTuple{72, UInt8} plephem::NTuple{72, UInt8} timeunit::NTuple{72, UInt8} dateref::NTuple{72, UInt8} mjdref::NTuple{2, Cdouble} timeoffs::Cdouble dateobs::NTuple{72, UInt8} datebeg::NTuple{72, UInt8} dateavg::NTuple{72, UInt8} dateend::NTuple{72, UInt8} mjdobs::Cdouble mjdbeg::Cdouble mjdavg::Cdouble mjdend::Cdouble jepoch::Cdouble bepoch::Cdouble tstart::Cdouble tstop::Cdouble xposure::Cdouble telapse::Cdouble timsyer::Cdouble timrder::Cdouble timedel::Cdouble timepixr::Cdouble obsgeo::NTuple{6, Cdouble} obsorbit::NTuple{72, UInt8} radesys::NTuple{72, UInt8} equinox::Cdouble specsys::NTuple{72, UInt8} ssysobs::NTuple{72, UInt8} velosys::Cdouble zsource::Cdouble ssyssrc::NTuple{72, UInt8} velangl::Cdouble ntab::Cint nwtb::Cint tab::Ptr{Cvoid} # Ptr{tabprm} wtb::Ptr{Cvoid} # Ptr{wtbarr} lngtyp::NTuple{8, UInt8} lattyp::NTuple{8, UInt8} lng::Cint lat::Cint spec::Cint cubeface::Cint types::Ptr{Cint} lin::linprm cel::celprm spc::spcprm err::Ptr{WCSErr} m_flag::Cint m_naxis::Cint m_crpix::Ptr{Cdouble} m_pc::Ptr{Cdouble} m_cdelt::Ptr{Cdouble} m_crval::Ptr{Cdouble} m_cunit::Ptr{Cvoid} m_ctype::Ptr{Cvoid} m_pv::Ptr{PVCard} m_ps::Ptr{PSCard} m_cd::Ptr{Cdouble} m_crota::Ptr{Cdouble} m_colax::Ptr{Cint} m_cname::Ptr{Cvoid} m_crder::Ptr{Cdouble} m_csyer::Ptr{Cdouble} m_czphs::Ptr{Cdouble} m_cperi::Ptr{Cdouble} m_tab::Ptr{Cvoid} # Ptr{tabprm} m_wtb::Ptr{Cvoid} # Ptr{wtbarr} Creating from scratch To create a WCSTransform from scratch, we can use the constructor like:......
What Coala Organization taught me: Reaching beyond the beginners threshold
So, you have finally convinced yourself to enter the realm of Open Source Development. But wait, the initial threshold of getting to speed in this domain is feeling too difficult for you. You are struggling to do your very first contribution in a big Open-Source repository. The huge code-base is too overwhelming and difficult to understand. The issues marked as simple are also too difficult to comprehend. There are just too many things you still don’t know. The list of things you are seeing for the first time is growing day by day. It seems it’s a bad choice after all? So my dear open-sorcerer, have some hope. This feeling is mutual with at-least 60% of the people out there. It always starts with a bumpy road but if you can cross that part, believe me, the road ahead is smoother than you can imagine. I started with OSS on 15th Sept with zero knowledge of this domain, I just knew some of the features of GitHub GUI. My first PR was to NLTK on 22nd Sept and for that whole week, I was struggling to just get my first PR in. The issue tracker and the vast code-base to work on was not intuitive enough to get past that threshold.......