============================= Processing a clock comparison ============================= The clock comparison process intents to respect the formalism defined in the paper [Lodewyck2020]_ :class:`Campaign ` :class:`ClockComparison ` :class:`ComparatorOutput ` First, let's look for the different campaign models to see which campaign ID should be used later on. .. doctest:: >>> from palantir.api import eyeOfSauronAPI >>> campaign_models = eyeOfSauronAPI.getCampaigns() >>> campaign_models Then, let's instantiate a :class:`Campaign `. .. doctest:: >>> import palantir.clock_comparisons as clock_comparisons >>> startDate = '230414' >>> endDate = '230420' >>> startTime = '000000' >>> endTime = '000000' >>> campaignID = 6 >>> campaign = clock_comparisons.Campaign(campaignID, startDate, endDate, startTime, endTime, timezone='UTC') ----------------- Find your modules ----------------- Get all modules involved in a specific campaign by ID. .. doctest:: >>> from palantir.api import eyeOfSauronAPI >>> campaign_ID = 6 >>> modules = eyeOfSauronAPI.getCampaigns(campaign_ID, extra_uri="modules") >>> modules ----------------------- Default frequency chain ----------------------- Compute a comparison based on :class:`Module ` objects of type "clock". If at least one frequency chain exists, the shortest is chosen by default. :class:`ClockComparison ` is returned. .. doctest:: >>> module0 = 184 >>> moduleN = 187 >>> comparison0N = campaign.processClockComparison(module0, moduleN) >>> comparison0N.label >>> comparison0N.comparison >>> comparison0N.comparison.timeChunk.getAsDataframe() Access the frequency chain's list of :class:`ComparatorOutput `. .. doctest:: >>> first_comparator = comparison0N.comparatorOutputs[0] >>> first_comparator.label >>> first_comparator.published_data ------------------------ Choose a frequency chain ------------------------ Compute a comparison based on :class:`Module ` objects of type "clock". Choose the chain of comparators between all the possible ones. A :class:`ClockComparison ` object is returned. Retrieves all the possible chains between two modules .. doctest:: >>> module0 = 184 >>> moduleN = 187 >>> chains = campaign.getChains(module0, moduleN) >>> print(chains) Pass the desired chain as an argument .. doctest:: >>> desired_chain = chains[0] >>> comparison0N = campaign.processClockComparisonFromChain(desired_chain) >>> comparison0N.label >>> comparison0N.comparison Access the frequency chain's list of :class:`ComparatorOutput `. .. doctest:: >>> first_comparator = comparison0N.comparatorOutputs[0] >>> first_comparator.label >>> first_comparator.published_data