Skip to content
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
eaf60ac
draft paper, first version
FusRoman Dec 5, 2025
f92bd81
draft v1.1
FusRoman Dec 8, 2025
7838fa8
draft v1.1.1
FusRoman Dec 8, 2025
89b87b8
draft v2
FusRoman Dec 8, 2025
ae2a431
add figure for outfit architecture
FusRoman Dec 8, 2025
4ef491c
improve the architecture section and add a github action to compile t…
FusRoman Dec 8, 2025
984fff6
fix some grammatical issue using grammarly and syntaxic problem in th…
FusRoman Dec 9, 2025
330bc1e
fix affiliation
FusRoman Dec 9, 2025
a22f50d
Je m'ajoute en co-auteur
HadrienG2 Dec 10, 2025
ef3eadd
rephrase and improve summary and statement of need
FusRoman Dec 10, 2025
79f1ee2
paper draft v2, improved text based on hadrien review
FusRoman Dec 11, 2025
6ce2a8d
Merge branch 'issue/42/joss_paper' of github.com:FusRoman/Outfit into…
FusRoman Dec 11, 2025
8a80c68
push hadrien suggestion
FusRoman Jan 9, 2026
f5e3e0c
some changes regarding the paper (add some julien's suggestions)
FusRoman Mar 27, 2026
cc94be8
add julien affiliation, add reference to Lemontagner_et_al._2023
FusRoman Mar 31, 2026
2dba956
add spark citation
FusRoman Mar 31, 2026
adbfb49
fix a benchmark using a non comitted file
FusRoman Mar 31, 2026
fcb11e6
align the paper on last joss format update
FusRoman Apr 1, 2026
c269d6c
add missing declaration for IOD
FusRoman Apr 1, 2026
0d0ffd0
fix broken ref to Orb_it
FusRoman Apr 1, 2026
de393e6
add link to asteroid test object, remove use of word friction by sour…
FusRoman Apr 1, 2026
a21859a
add in astronomy for standard formats
FusRoman Apr 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/joss_pdf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: JOSS Draft PDF

on:
push:
paths:
- joss_data/**
- .github/workflows/joss_pdf.yml
pull_request:
paths:
- joss_data/**
- .github/workflows/joss_pdf.yml

jobs:
paper:
runs-on: ubuntu-latest
name: Build JOSS paper PDF
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# Path to the paper within the repo
paper-path: joss_data/paper.md

- name: Upload compiled PDF artifact
uses: actions/upload-artifact@v4
with:
name: joss-paper
# Output path where Pandoc writes the compiled PDF
path: joss_data/paper.pdf
Binary file added joss_data/outfit_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
71 changes: 71 additions & 0 deletions joss_data/outfit_architecture.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" version="29.0.3">
Comment thread
FusRoman marked this conversation as resolved.
Outdated
<diagram id="outfit-architecture" name="Outfit Architecture">
<mxGraphModel dx="1360" dy="756" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="parsersGroup" value="&lt;font style=&quot;font-size: 20px;&quot;&gt;Parsers&lt;/font&gt;" style="swimlane;rounded=1;html=1;horizontal=1;childLayout=stackLayout;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=0;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="10" y="10" width="220" height="180" as="geometry" />
</mxCell>
<mxCell id="parserMPC" value="MPC 80-column&#xa;(observations::mpc80)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#dae8fc" parent="parsersGroup" vertex="1">
<mxGeometry y="23" width="220" height="50" as="geometry" />
</mxCell>
<mxCell id="parserADES" value="ADES XML&#xa;(observations::ades)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#dae8fc" parent="parsersGroup" vertex="1">
<mxGeometry y="73" width="220" height="50" as="geometry" />
</mxCell>
<mxCell id="parserParquet" value="Parquet / Arrow&#xa;(observations::parquet)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#dae8fc" parent="parsersGroup" vertex="1">
<mxGeometry y="123" width="220" height="50" as="geometry" />
</mxCell>
<mxCell id="unifiedObs" value="&lt;font style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Unified in-memory observations&lt;br&gt;&lt;/b&gt;&lt;/font&gt;(observations::Observation)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#ffffff" parent="1" vertex="1">
<mxGeometry x="270" y="10" width="260" height="70" as="geometry" />
</mxCell>
<mxCell id="trajectories" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;trajectories&lt;br&gt;&lt;/font&gt;&lt;/b&gt;- batching / grouping&lt;br&gt;- candidate triplets construction" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#ffffff" parent="1" vertex="1">
<mxGeometry x="645" y="10" width="220" height="90" as="geometry" />
</mxCell>
<mxCell id="iod" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;&lt;b&gt;initial_orbit_determination&lt;br&gt;&lt;/b&gt;&lt;/font&gt;(Gauss IOD on triplets)" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#d5e8d4" parent="1" vertex="1">
<mxGeometry x="630" y="150" width="250" height="80" as="geometry" />
</mxCell>
<mxCell id="orbitType" value="&lt;font style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;orbit_type&lt;br&gt;&lt;/b&gt;&lt;/font&gt;- Keplerian / equinoctial / cometary&lt;br&gt;- conversions" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#fff2cc" parent="1" vertex="1">
<mxGeometry x="645" y="270" width="220" height="90" as="geometry" />
</mxCell>
<mxCell id="observers" value="&lt;font style=&quot;font-size: 21px;&quot;&gt;&lt;b style=&quot;&quot;&gt;observers&lt;br&gt;&lt;/b&gt;&lt;/font&gt;- MPC observatory codes&lt;br&gt;- geodetic → topocentric" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#f8cecc" parent="1" vertex="1">
<mxGeometry x="270" y="130" width="260" height="80" as="geometry" />
</mxCell>
<mxCell id="jplEphem" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;jpl_ephem&lt;br&gt;&lt;/font&gt;&lt;/b&gt;- DE440 kernels&lt;br&gt;- ephemeris interpolation" style="rounded=1;whiteSpace=wrap;html=1;strokeColor=#000000;fillColor=#f8cecc" parent="1" vertex="1">
<mxGeometry x="270" y="240" width="260" height="80" as="geometry" />
</mxCell>
<mxCell id="edgeMPCUnified" style="endArrow=block;html=1;rounded=0" parent="1" source="parserMPC" target="unifiedObs" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeADESUnified" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.629;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="parserADES" target="unifiedObs" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeParquetUnified" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="parserParquet" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="270" y="60" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="edgeUnifiedTraj" style="endArrow=block;html=1;rounded=0" parent="1" source="unifiedObs" target="trajectories" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeTrajIOD" style="endArrow=block;html=1;rounded=0" parent="1" source="trajectories" target="iod" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeIODOrbitType" style="endArrow=block;html=1;rounded=0" parent="1" source="iod" target="orbitType" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeObserversUnified" value="observer geometry" style="endArrow=block;html=1;rounded=0;fontSize=10;dashed=1" parent="1" source="observers" target="unifiedObs" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeObserversIOD" style="endArrow=block;html=1;rounded=0;dashed=1" parent="1" source="observers" target="iod" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="edgeEphemIOD" value="state propagation" style="endArrow=block;html=1;rounded=0;fontSize=10;dashed=1" parent="1" source="jplEphem" target="iod" edge="1">
<mxGeometry x="-0.0264" y="-10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
196 changes: 196 additions & 0 deletions joss_data/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
@misc{rubinobservatorylsstsolarsystemsciencecollaboration2020scientificimpactverac,
title = {The Scientific Impact of the Vera C. Rubin Observatory's Legacy Survey of Space and Time (LSST) for Solar System Science},
author = { LSST-SSSC and R. Lynne Jones and Michelle T. Bannister and Bryce T. Bolin and Colin Orion Chandler and Steven R. Chesley and Siegfried Eggl and Sarah Greenstreet and Timothy R. Holt and Henry H. Hsieh and Zeljko Ivezić and Mario Jurić and Michael S. P. Kelley and Matthew M. Knight and Renu Malhotra and William J. Oldroyd and Gal Sarid and Megan E. Schwamb and Colin Snodgrass and Michael Solontoi and David E. Trilling},
year = {2020},
eprint = {2009.07653},
archiveprefix = {arXiv},
primaryclass = {astro-ph.IM},
url = {https://arxiv.org/abs/2009.07653}
}

@article{LSST_from_science_to_design,
author = {{Ivezi{\'c}}, {\v{Z}}eljko and {Kahn}, Steven M. and {Tyson}, J. Anthony and {Abel}, Bob and {Acosta}, Emily and {Allsman}, Robyn and {Alonso}, David and {AlSayyad}, Yusra and {Anderson}, Scott F. and {Andrew}, John and {Angel}, James Roger P. and {Angeli}, George Z. and {Ansari}, Reza and {Antilogus}, Pierre and {Araujo}, Constanza and {Armstrong}, Robert and {Arndt}, Kirk T. and {Astier}, Pierre and {Aubourg}, {\'E}ric and {Auza}, Nicole and {Axelrod}, Tim S. and {Bard}, Deborah J. and {Barr}, Jeff D. and {Barrau}, Aurelian and {Bartlett}, James G. and {Bauer}, Amanda E. and {Bauman}, Brian J. and {Baumont}, Sylvain and {Bechtol}, Ellen and {Bechtol}, Keith and {Becker}, Andrew C. and {Becla}, Jacek and {Beldica}, Cristina and {Bellavia}, Steve and {Bianco}, Federica B. and {Biswas}, Rahul and {Blanc}, Guillaume and {Blazek}, Jonathan and {Blandford}, Roger D. and {Bloom}, Josh S. and {Bogart}, Joanne and {Bond}, Tim W. and {Booth}, Michael T. and {Borgland}, Anders W. and {Borne}, Kirk and {Bosch}, James F. and {Boutigny}, Dominique and {Brackett}, Craig A. and {Bradshaw}, Andrew and {Brandt}, William Nielsen and {Brown}, Michael E. and {Bullock}, James S. and {Burchat}, Patricia and {Burke}, David L. and {Cagnoli}, Gianpietro and {Calabrese}, Daniel and {Callahan}, Shawn and {Callen}, Alice L. and {Carlin}, Jeffrey L. and {Carlson}, Erin L. and {Chandrasekharan}, Srinivasan and {Charles-Emerson}, Glenaver and {Chesley}, Steve and {Cheu}, Elliott C. and {Chiang}, Hsin-Fang and {Chiang}, James and {Chirino}, Carol and {Chow}, Derek and {Ciardi}, David R. and {Claver}, Charles F. and {Cohen-Tanugi}, Johann and {Cockrum}, Joseph J. and {Coles}, Rebecca and {Connolly}, Andrew J. and {Cook}, Kem H. and {Cooray}, Asantha and {Covey}, Kevin R. and {Cribbs}, Chris and {Cui}, Wei and {Cutri}, Roc and {Daly}, Philip N. and {Daniel}, Scott F. and {Daruich}, Felipe and {Daubard}, Guillaume and {Daues}, Greg and {Dawson}, William and {Delgado}, Francisco and {Dellapenna}, Alfred and {de Peyster}, Robert and {de Val-Borro}, Miguel and {Digel}, Seth W. and {Doherty}, Peter and {Dubois}, Richard and {Dubois-Felsmann}, Gregory P. and {Durech}, Josef and {Economou}, Frossie and {Eifler}, Tim and {Eracleous}, Michael and {Emmons}, Benjamin L. and {Fausti Neto}, Angelo and {Ferguson}, Henry and {Figueroa}, Enrique and {Fisher-Levine}, Merlin and {Focke}, Warren and {Foss}, Michael D. and {Frank}, James and {Freemon}, Michael D. and {Gangler}, Emmanuel and {Gawiser}, Eric and {Geary}, John C. and {Gee}, Perry and {Geha}, Marla and {Gessner}, Charles J.~B. and {Gibson}, Robert R. and {Gilmore}, D. Kirk and {Glanzman}, Thomas and {Glick}, William and {Goldina}, Tatiana and {Goldstein}, Daniel A. and {Goodenow}, Iain and {Graham}, Melissa L. and {Gressler}, William J. and {Gris}, Philippe and {Guy}, Leanne P. and {Guyonnet}, Augustin and {Haller}, Gunther and {Harris}, Ron and {Hascall}, Patrick A. and {Haupt}, Justine and {Hernandez}, Fabio and {Herrmann}, Sven and {Hileman}, Edward and {Hoblitt}, Joshua and {Hodgson}, John A. and {Hogan}, Craig and {Howard}, James D. and {Huang}, Dajun and {Huffer}, Michael E. and {Ingraham}, Patrick and {Innes}, Walter R. and {Jacoby}, Suzanne H. and {Jain}, Bhuvnesh and {Jammes}, Fabrice and {Jee}, M. James and {Jenness}, Tim and {Jernigan}, Garrett and {Jevremovi{\'c}}, Darko and {Johns}, Kenneth and {Johnson}, Anthony S. and {Johnson}, Margaret W.~G. and {Jones}, R. Lynne and {Juramy-Gilles}, Claire and {Juri{\'c}}, Mario and {Kalirai}, Jason S. and {Kallivayalil}, Nitya J. and {Kalmbach}, Bryce and {Kantor}, Jeffrey P. and {Karst}, Pierre and {Kasliwal}, Mansi M. and {Kelly}, Heather and {Kessler}, Richard and {Kinnison}, Veronica and {Kirkby}, David and {Knox}, Lloyd and {Kotov}, Ivan V. and {Krabbendam}, Victor L. and {Krughoff}, K. Simon and {Kub{\'a}nek}, Petr and {Kuczewski}, John and {Kulkarni}, Shri and {Ku}, John and {Kurita}, Nadine R. and {Lage}, Craig S. and {Lambert}, Ron and {Lange}, Travis and {Langton}, J. Brian and {Le Guillou}, Laurent and {Levine}, Deborah and {Liang}, Ming and {Lim}, Kian-Tat and {Lintott}, Chris J. and {Long}, Kevin E. and {Lopez}, Margaux and {Lotz}, Paul J. and {Lupton}, Robert H. and {Lust}, Nate B. and {MacArthur}, Lauren A. and {Mahabal}, Ashish and {Mandelbaum}, Rachel and {Markiewicz}, Thomas W. and {Marsh}, Darren S. and {Marshall}, Philip J. and {Marshall}, Stuart and {May}, Morgan and {McKercher}, Robert and {McQueen}, Michelle and {Meyers}, Joshua and {Migliore}, Myriam and {Miller}, Michelle and {Mills}, David J.},
title = {{LSST: From Science Drivers to Reference Design and Anticipated Data Products}},
journal = {\apj},
keywords = {astrometry, cosmology: observations, Galaxy: general, methods: observational, stars: general, surveys, Astrophysics},
year = 2019,
month = mar,
volume = {873},
number = {2},
eid = {111},
pages = {111},
doi = {10.3847/1538-4357/ab042c},
archiveprefix = {arXiv},
eprint = {0805.2366},
primaryclass = {astro-ph},
adsurl = {https://ui.adsabs.harvard.edu/abs/2019ApJ...873..111I},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@article{Fink_2020,
title = {<scp>fink</scp>, a new generation of broker for the LSST community},
volume = {501},
issn = {1365-2966},
url = {http://dx.doi.org/10.1093/mnras/staa3602},
doi = {10.1093/mnras/staa3602},
number = {3},
journal = {Monthly Notices of the Royal Astronomical Society},
publisher = {Oxford University Press (OUP)},
author = {Möller, Anais and Peloton, Julien and Ishida, Emille E O and Arnault, Chris and Bachelet, Etienne and Blaineau, Tristan and Boutigny, Dominique and Chauhan, Abhishek and Gangler, Emmanuel and Hernandez, Fabio and Hrivnac, Julius and Leoni, Marco and Leroy, Nicolas and Moniez, Marc and Pateyron, Sacha and Ramparison, Adrien and Turpin, Damien and Ansari, Réza and Allam Jr, Tarek and Bajat, Armelle and Biswas, Biswajit and Boucaud, Alexandre and Bregeon, Johan and Campagne, Jean-Eric and Cohen-Tanugi, Johann and Coleiro, Alexis and Dornic, Damien and Fouchez, Dominique and Godet, Olivier and Gris, Philippe and Karpov, Sergey and Nebot Gomez-Moran, Ada and Neveu, Jérémy and Plaszczynski, Stephane and Savchenko, Volodymyr and Webb, Natalie},
year = {2020},
month = nov,
pages = {3272–3288}
}

@misc{OrbFit,
title = {OrbFit: Astrometric orbit determination software},
year = {2025},
author = {Milani, A. and Gronchi, G. F. and others},
howpublished = {Software package},
url = {https://adams.dm.unipi.it/orbfit/},
note = {Accessed: 2025-12-05}
}

@misc{FindOrb,
author = {Gray, Bill},
title = {Find\_Orb: Orbit Determination Software},
howpublished = {\url{https://www.projectpluto.com/find_orb.htm}},
note = {Accessed: 2025-02-12},
year = {2025}
}


@misc{MPC80col,
title = {Minor Planet Center Optical Observations: 80-column format},
author = {Minor Planet Center},
year = {2025},
howpublished = {Web page},
url = {https://minorplanetcenter.net/iau/info/OpticalObs.html},
note = {Accessed: 2025-12-05}
}

@misc{ADES,
title = {Astrometric Data Exchange Standard (ADES)},
author = {IAU Minor Planet Center},
year = {2025},
howpublished = {Web page},
url = {https://minorplanetcenter.net/iau/info/ADES.html},
note = {Accessed: 2025-12-05}
}

@article{DE440,
author = {Park, R. S. and Folkner, W. M. and Jacobson, R. A. and others},
title = {The {JPL} Planetary and Lunar Ephemerides {DE440} and {DE441}},
journal = {The Astronomical Journal},
year = {2021},
volume = {161},
number = {3},
pages = {105},
doi = {10.3847/1538-3881/abd414}
}

@misc{NAIF,
author = {Acton, C. H. and {NAIF/NASA JPL}},
title = {Navigation and Ancillary Information Facility (SPICE)},
year = {2025},
howpublished = {Web page},
url = {https://naif.jpl.nasa.gov/naif/},
note = {Accessed: 2025-12-05}
}

@article{Arrow,
author = {P. E. {Apache Arrow Project}},
title = {Apache Arrow: A Cross-Language Development Platform for In-Memory Data},
journal = {Data Engineering},
year = {2017},
note = {Project documentation: https://arrow.apache.org/}
}

@misc{Parquet,
author = {{Apache Parquet Project}},
title = {Apache Parquet},
year = {2025},
howpublished = {Project page},
url = {https://parquet.apache.org/},
note = {Accessed: 2025-12-05}
}

@misc{rust,
author = {{Rust Project}},
title = {The Rust Programming Language},
year = {2025},
howpublished = {Official website},
url = {https://www.rust-lang.org/},
note = {Accessed: 2025-12-05}
}

@misc{nalgebra,
author = {Crozet, S. and Dimforge Contributors},
title = {nalgebra: Linear algebra library for Rust},
year = {2025},
howpublished = {Crate documentation},
url = {https://crates.io/crates/nalgebra},
note = {Accessed: 2025-12-05}
}

@misc{hifitime,
author = {Christopher Rabotin},
title = {hifitime: High-Fidelity Time library for Rust},
year = {2025},
howpublished = {Crate documentation},
url = {https://crates.io/crates/hifitime},
note = {Accessed: 2025-12-05}
}

@misc{rayon,
author = {N. Matsakis and {Rayon Contributors}},
title = {Rayon: Data Parallelism in Rust},
year = {2025},
howpublished = {Crate documentation},
url = {https://crates.io/crates/rayon},
note = {Accessed: 2025-12-05}
}

@misc{Aberth,
author = {ickk and contributors},
title = {aberth: Aberth–Ehrlich polynomial root-finding in Rust},
year = {2025},
howpublished = {GitHub repository},
url = {https://github.com/ickk/aberth},
note = {Accessed: 2025-12-05}
}

@misc{indicatif,
author = {F. {Indicatif Contributors}},
title = {indicatif: Progress bars for Rust},
howpublished = {Crate documentation},
url = {https://crates.io/crates/indicatif},
note = {Accessed: 2025-12-05}
}

@misc{comfytable,
author = {{comfy-table Contributors}},
title = {comfy-table: Table formatting for Rust},
howpublished = {Crate documentation},
url = {https://crates.io/crates/comfy-table},
note = {Accessed: 2025-12-05}
}

@misc{SemVer,
author = {Preston-Werner, T.},
title = {Semantic Versioning 2.0.0},
year = {2025},
howpublished = {Specification},
url = {https://semver.org/},
note = {Accessed: 2025-12-05}
}

@misc{KeepAChangelog,
author = {Oliveira, O. and others},
title = {Keep a Changelog},
year = {2025},
howpublished = {Project page},
url = {https://keepachangelog.com/en/1.0.0/},
note = {Accessed: 2025-12-05}
}

Loading