#Rationale Version 160.66 can_be_loaded_by 120.53 uses_features_from 120.53 #-- Start of Prelude -- Node = None Views = [] Loading = True ScratchpadTextSupported = CurrentFileFormat.IsLaterThan(130, 55) PictureSupported = CurrentFileFormat.IsLaterThan(140, 56) TagsSupported = CurrentFileFormat.IsLaterThan(140, 57) TypeSupported = CurrentFileFormat.IsLaterThan(140, 60) EditPromptSupported = CurrentFileFormat.IsLaterThan(140, 57) ShowOutlineSupported = CurrentFileFormat.IsLaterThan(140, 57) LockHeadingSupported = CurrentFileFormat.IsLaterThan(140, 58) TwoOrientationsSupported = CurrentFileFormat.IsLaterThan(140, 59) HideChildrenSupported = CurrentFileFormat.IsLaterThan(150, 60) MinimizeNodeSupported = CurrentFileFormat.IsLaterThan(150, 60) HyperlinkSupported = CurrentFileFormat.IsLaterThan(150, 60) RelativeLinksSupported = CurrentFileFormat.IsLaterThan(150, 64) EdgeStyleSupported = CurrentFileFormat.IsLaterThan(160, 61) BoxStyleSupported = CurrentFileFormat.IsLaterThan(160, 61) FontSizeSupported = CurrentFileFormat.IsLaterThan(160, 61) NodeNotesSupported = CurrentFileFormat.IsLaterThan(160,62) SeparationSupported = CurrentFileFormat.IsLaterThan(160,63) JumbleMapSupported = CurrentFileFormat.IsLaterThan(160, 65) EssayTypeSupported = CurrentFileFormat.IsLaterThan(160, 65) if not CurrentFileFormat.IsLaterThan(130, 54): morphTarget = None def Create(type): global Node if morphTarget == None: Node = app.Create(type) else: Morph(morphTarget, type) Node = morphTarget return Node def CreateChild(parent, type): global Node Node = app.CreateChild(parent, type) return Node def CreateAnnotation(parent, type): global Node Node = app.CreateAnnotation(parent, type) return Node def SetText(text): app.SetText(Node, text) def SetTag(key, value): if TagsSupported: app.SetTag(Node, key, value) def SetCustomType(group, type): if TypeSupported: Node.CustomGroup = group Node.CustomType = type def SetEditPrompt(text): if EditPromptSupported: app.SetEditPrompt(Node, text) else: AddMissingFeature('helpful hint') def SetEvaluation(evaluation): app.SetEvaluation(Node, evaluation) def SetTint(tint): app.SetTint(Node, tint) def SetImageKey(key): if PictureSupported: app.SetImageKey(Node, key) else: AddMissingFeature('picture') def SetHyperlink(relativeLink, link, description, openExternally): if HyperlinkSupported: if RelativeLinksSupported: app.SetHyperlink(Node, relativeLink, link, description, openExternally) else: app.SetHyperlink(Node, link, description, openExternally) else: AddMissingFeature('Hyperlink') def SetEdgeStyle(layout, headStyle, tailStyle, spreadChildEdges): if EdgeStyleSupported: app.SetEdgeStyle(Node, layout, headStyle, tailStyle, spreadChildEdges) else: AddMissingFeature('Experimental Pro feature -- custom edge style') def SetBoxStyle(outlineStyle, penWidth, outlineRgbVal): if BoxStyleSupported: app.SetBoxStyle(Node, outlineStyle, penWidth, outlineRgbVal, True, 0x000000) else: AddMissingFeature('Experimental Pro feature -- custom box style') def SetBoxOutline(style, penWidth, rgbVal, showOutline): if BoxStyleSupported: app.SetBoxOutline(Node, style, penWidth, rgbVal, showOutline) else: AddMissingFeature('Experimental Pro feature -- custom box outline style') def SetBoxFill(rgbVal, showFill): if BoxStyleSupported: app.SetBoxFill(Node, rgbVal, showFill) else: AddMissingFeature('Experimental Pro feature -- custom box fill style') def SetFontSizeDelta(delta): if FontSizeSupported: app.SetFontSizeDelta(Node, delta) else: AddMissingFeature('Variable font size') def SetNodeNotes(notes): if NodeNotesSupported: app.SetNodeNotes(Node, notes) else: AddMissingFeature('Node Notes') def MarkAsPureImage(): if PictureSupported and morphTarget == None: Node.IsPureImage = True def RegisterImage(name, image): if PictureSupported: app.RegisterImage(name, image) def StringToImage(guid, imageAsString): return app.StringToImage(guid, imageAsString) def Morph(node, flavor): global Node app.Morph(node, flavor) Node = node def GetFernViews(): global Views global View global Loading Views = [v for v in app.Views if v.TypeName == 'FernView'] Loading = len(Views) == 0 if Loading: View = app.Gui.CreateView('FernView') Views = [ View ] else: View = app.CurrentView def SetLocation(node, x, y): for v in Views: v.SetLocation(node, x, y) def SetOffset(offsetFrom, node, x, y): if Loading: View.SetOffset(offsetFrom, node, x, y) else: for v in Views: v.SetOffset(offsetFrom, node, x, y) def SetSize(node, width, height): if Loading: View.SetSize(node, width, height) else: for v in Views: v.SetSize(node, width, height) def ShowPrintPagePreview(show): if Loading: View.ShowPrintPagePreview(show, False) def SetBackgroundImage(image): if Loading: View.SetBackgroundImage(image, False) def SetOpacity(opacity): if Loading: View.SetOpacity(opacity) def SetSelection(node): View.SetSelection(node) def SetScratchpadText(text): if ScratchpadTextSupported: app.Gui.SetScratchpadText(text) else: AddMissingFeature('saved scratchpad') def SetImageWidth(node, width): if PictureSupported: for v in Views: v.SetImageWidth(node, width) def SetShowOutline(node, show): if ShowOutlineSupported: for v in Views: v.SetShowOutline(node, show) def SetLockHeading(node, lockHeading): if LockHeadingSupported: for v in Views: v.SetLockHeading(node, lockHeading) def SetOrientation(node, orientation): if TwoOrientationsSupported and (orientation == 'LeftToRight'): for v in Views: v.SetOrientation(node, orientation) else: AddMissingFeature(orientation + ' layout') def HideChildren(node): if HideChildrenSupported: for v in Views: v.HideChildren(node) else: AddMissingFeature('Hidden children') def Minimize(node): if MinimizeNodeSupported: for v in Views: v.Minimize(node) else: AddMissingFeature('Minimized node') def SetNodeHorizontalSeparation(node, value): if SeparationSupported: for v in Views: v.SetNodeHorizontalSeparation(node, value) else: AddMissingFeature('Sibling separation') def SetVerticalSeparation(node, value): if SeparationSupported: for v in Views: v.SetVerticalSeparation(node, value) else: AddMissingFeature('Parent-child separation') def SetBranchHorizontalSeparation(node, value): if SeparationSupported: for v in Views: v.SetBranchHorizontalSeparation(node, value) else: AddMissingFeature('Branch separation') def SetEssayType(node, type): if EssayTypeSupported: app.SetEssayType(node, type) else: AddMissingFeature('Essay Type') def JumbleMap(node): if JumbleMapSupported: for v in Views: v.JumbleMap(node) else: AddMissingFeature('Map Jumble') missing = {} def AddMissingFeature(feature): if feature not in missing: i = 1 else: i = missing[feature] + 1 missing[feature] = i def MissingFeaturesList(): list = '' for k in missing.keys(): n = missing[k] list = list + ' ' + str(n) + ' ' + k if n != 1: list = list + 's' list = list + CR() return list def GenerateMissingFeaturesReport(): if len(missing) > 0: Create('Note') SetSize(Node, 350, 100) SetText( MissingFeaturesHeader() + CR() \ + MissingFeaturesList() + CR() \ + MissingFeaturesFooter()) def MissingFeaturesHeader(): return '*' + 'Warning: This file was created with a more recent version of Rationale' + '*' + CR() \ + 'Unable to load:' def MissingFeaturesFooter(): return 'You can upgrade to the latest version of Rationale at http://rationale.austhink.com/r/download' def CR(): return '\r\n' #-- End of Prelude -- map0_0 = Create("Claim") SetText("The population decline of PTF's may be due to population decline of Lady Beetles, but is not due to predation by rat snakes.") map0_1 = CreateChild(map0_0, "CompoundReason") map0_2 = CreateChild(map0_1, "Claim") SetText("Captive Rat Snakes, starved for one month, showed no interest in fully eating PTFs.") SetHyperlink("", "http://www.superdisco.net/coconut_fern.php", "", False) map0_3 = CreateChild(map0_2, "CompoundReason") map0_4 = CreateChild(map0_3, "Claim") SetText("Captive Rat Snakes, starved for one month, and presented with both PTFs and Brown frogs, ate all the Brown Frogs but no PTFs.") map0_5 = CreateChild(map0_4, "CompoundReason") map0_6 = CreateChild(map0_5, "Claim") SetText("Rat Snakes were seen fully eating Brown Frogs.") map0_7 = CreateChild(map0_5, "Inference") map0_8 = CreateChild(map0_4, "CompoundReason") map0_9 = CreateChild(map0_8, "Claim") SetText("Frogs were never seen to eat each other.") map0_10 = CreateChild(map0_8, "Inference") map0_11 = CreateAnnotation(map0_4, "Note") SetText("The Brown Frog is a known diet item of the Rat Snake (Harold and Kumar, 2004)") map0_12 = CreateChild(map0_3, "Inference") map0_13 = CreateChild(map0_2, "CompoundReason") map0_14 = CreateChild(map0_13, "Claim") SetText("Captive Rat Snakes, starved for one month, and presented with PTFs only, ate none of them.") map0_15 = CreateChild(map0_13, "Inference") map0_16 = CreateChild(map0_2, "CompoundReason") map0_17 = CreateChild(map0_16, "Claim") SetText("Captive Rat Snakes, starved for one month, and presented with PTFs, sometimes started to eat a PTF but quickly spat it out.") map0_18 = CreateChild(map0_17, "CompoundReason") map0_19 = CreateChild(map0_18, "Claim") SetText("Rejection of an unpleasant tasting prey item is a common, and clearly adaptive, reaction of snakes (Trant, 1937).") map0_20 = CreateChild(map0_18, "Inference") map0_21 = CreateChild(map0_16, "Inference") map0_22 = CreateChild(map0_1, "Claim") SetText("(Rationale) If Rat Snake predation is a cause of PTF decline in the wild, starved, captive Rat Snakes should eat PTFs.") SetHyperlink("", "Rationale: If decline of of Lady Beetle is a cause of PTF decline", "", False) map0_23 = CreateChild(map0_1, "Inference") map0_24 = CreateChild(map0_23, "CompoundReason") map0_25 = CreateChild(map0_24, "Claim") SetText("(Logical Validity)\nThis type of experimental set-up used is highly suitable for testing whether an animal's diet includes or excludes a particular item.") map0_26 = CreateChild(map0_25, "CompoundReason") map0_27 = CreateChild(map0_26, "Claim") SetText("If a starved animal is capable of eating one type of food item in captivity, and excludes a second type, there is no reason to believe it would not also exclude the second type in its natural habitat (Mint and Slice, 1972).") map0_28 = CreateChild(map0_26, "Inference") map0_29 = CreateChild(map0_24, "Inference") map0_30 = CreateChild(map0_0, "CompoundReason") map0_31 = CreateChild(map0_30, "Claim") SetText("Captive, starved PTFs showed a strong dietary preference for Lady Beetles over four other insect species that are available in their habitat, and apparently suitable as diet items.") map0_32 = CreateChild(map0_31, "CompoundReason") map0_33 = CreateChild(map0_32, "Claim") SetText("After placing all five insect species for one week in an enclosure with a PTF the following mean percentages of the five species remained: Lady Beetles: 5%; Brown Beetles: 75%; Other three species:100%") map0_34 = CreateChild(map0_32, "Claim") SetText("PTFs were commonly observed eating Lady Beetles") map0_35 = CreateChild(map0_32, "Claim") SetText("Insects were never observed eating each other.") map0_36 = CreateChild(map0_32, "Inference") map0_37 = CreateChild(map0_31, "CompoundReason") map0_38 = CreateChild(map0_37, "Claim") SetText("After placing only the four species (and not Lady Beetles) for one week in an enclosure with a PTF the following mean percentages of the four species remained: Brown Beetles: 45%; Other three species: 100%") map0_39 = CreateChild(map0_37, "Claim") SetText("PTFs were commonly observed eating Brown Beetles.") map0_40 = CreateChild(map0_37, "Claim") SetText("Insects were never observed eating each other.") map0_41 = CreateChild(map0_37, "Inference") map0_42 = CreateChild(map0_30, "Claim") SetText("(Rationale)\nIf decline of Lady Beetles is a cause of PTF decline then starved, captive PTFs should strongly prefer them over other available and apparently suitable insect species.") map0_43 = CreateChild(map0_30, "Inference") map0_44 = CreateChild(map0_43, "CompoundObjection") map0_45 = CreateChild(map0_44, "Claim") SetText("(Logical Validity)\nRegardless of any strong preference of captive PTFs for Lady Beetles (over the four other insect species used in this study), such a preference cannot prove that it is the decline of availability of Lady Beetles in the native habitat that is responsible for PTF decline.") map0_46 = CreateChild(map0_45, "CompoundReason") map0_47 = CreateChild(map0_46, "Claim") SetText("Other insect species, apart from those used in this study, or other food sources, may be available as suitable diet items in the PTF's habitat.") map0_48 = CreateChild(map0_47, "CompoundReason") map0_49 = CreateChild(map0_48, "Claim") SetText("1434 insect species have been identified to date in the mid-altitude forests of Picobar (Katollogg, 2007).") map0_50 = CreateChild(map0_48, "Inference") map0_51 = CreateChild(map0_46, "Inference") map0_52 = CreateChild(map0_45, "CompoundReason") map0_53 = CreateChild(map0_52, "Claim") SetText("In the study by Beck and Bock (2001), the dietary preferences of Picobar Chameleons in the field were shown to be very different from those earlier indicated for captive animals (Praps, Weyar and Ronng, 1995).") map0_54 = CreateChild(map0_52, "Inference") map0_55 = CreateChild(map0_44, "Inference") map0_56 = CreateAnnotation(map0_30, "Note") SetText("In addition to Lady Beetles, there are at least four other insect species that appear: (1) equally accessible to PTFs in their habitat, and (2) apparently suitable as diet items for PTFs.") map0_57 = CreateAnnotation(map0_0, "Note") SetText("The population of the Picobar Tree Frog (PTF) on the island of Picobar has been in steady decline for a decade (Krishnan, 2007).") map0_58 = CreateAnnotation(map0_0, "Note") SetText("Two possible explanations for the population decline of the PTF have been proposed: (1) the introduction of a potential predator (Rat Snake) about ten years ago (Krishnan and Dutt, 2008) and (2) the known population decline of a possibly important diet item (Picobar Lady Beetle) due to the spread of a fungal infection within this beetle's population (Mathew and Akram, 2007).") GetFernViews() SetLocation(map0_0, -140, -267) SetSize(map0_0, 177, 144) SetSize(map0_1, 380, 265) SetSize(map0_2, 165, 140) SetSize(map0_3, 261, 200) SetSize(map0_4, 186, 62) SetSize(map0_5, 220, 108) SetSize(map0_6, 145, 75) SetSize(map0_7, 191, 38) SetSize(map0_8, 227, 85) SetSize(map0_9, 152, 62) SetSize(map0_10, 191, 38) SetOffset(map0_4, map0_11, 162, 194) SetSize(map0_12, 191, 38) SetSize(map0_13, 249, 154) SetSize(map0_14, 174, 62) SetSize(map0_15, 191, 38) SetSize(map0_16, 206, 292) SetSize(map0_17, 131, 259) SetSize(map0_18, 266, 177) SetSize(map0_21, 191, 38) SetSize(map0_22, 137, 186) SetSize(map0_23, 191, 38) SetSize(map0_24, 239, 269) SetSize(map0_25, 164, 190) SetSize(map0_26, 307, 246) SetSize(map0_27, 232, 167) SetSize(map0_28, 191, 38) SetSize(map0_29, 191, 38) SetSize(map0_30, 390, 338) SetSize(map0_31, 165, 190) SetSize(map0_32, 482, 292) SetSize(map0_33, 185, 62) SetSize(map0_34, 110, 98) SetSize(map0_35, 99, 75) SetSize(map0_36, 191, 38) SetSize(map0_37, 481, 315) SetSize(map0_38, 184, 62) SetSize(map0_39, 110, 121) SetSize(map0_40, 99, 75) SetSize(map0_41, 191, 38) SetSize(map0_42, 147, 236) SetSize(map0_43, 191, 38) SetSize(map0_44, 279, 361) SetSize(map0_45, 205, 259) SetSize(map0_46, 260, 223) SetSize(map0_47, 185, 62) SetSize(map0_48, 266, 154) SetSize(map0_51, 191, 38) SetSize(map0_52, 314, 246) SetSize(map0_53, 239, 62) SetSize(map0_55, 191, 38) SetOffset(map0_30, map0_56, -422, 309) SetSize(map0_56, 222, 62) SetOffset(map0_0, map0_57, 204, 316) SetSize(map0_57, 175, 62) SetOffset(map0_0, map0_58, -122, 385) SetSize(map0_58, 307, 251) SetSelection(map0_0) ShowPrintPagePreview(False) GenerateMissingFeaturesReport()